diff options
Diffstat (limited to 'bpmn')
323 files changed, 51149 insertions, 12074 deletions
diff --git a/bpmn/MSOCockpit/pom.xml b/bpmn/MSOCockpit/pom.xml index 5fa9e7e2f1..ed9d08d060 100644 --- a/bpmn/MSOCockpit/pom.xml +++ b/bpmn/MSOCockpit/pom.xml @@ -3,7 +3,7 @@ <parent>
<groupId>org.openecomp.so</groupId>
<artifactId>bpmn</artifactId>
- <version>1.1.0-SNAPSHOT</version> + <version>1.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -61,12 +61,6 @@ <artifactId>MSOCoreBPMN</artifactId>
<version>${project.version}</version>
</dependency>
- <dependency>
- <groupId>org.evosuite</groupId>
- <artifactId>evosuite-standalone-runtime</artifactId>
- <version>${evosuiteVersion}</version>
- <scope>test</scope>
- </dependency>
</dependencies>
</project>
diff --git a/bpmn/MSOCommonBPMN/pom.xml b/bpmn/MSOCommonBPMN/pom.xml index 3452fe3fdd..24c881d566 100644 --- a/bpmn/MSOCommonBPMN/pom.xml +++ b/bpmn/MSOCommonBPMN/pom.xml @@ -1,34 +1,47 @@ <?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.openecomp.so</groupId>
- <artifactId>bpmn</artifactId>
- <version>1.1.0-SNAPSHOT</version>
- </parent>
- <artifactId>MSOCommonBPMN</artifactId>
- <name>MSOCommonBPMN</name>
- <packaging>war</packaging>
+ <artifactId>bpmn</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>MSOCommonBPMN</artifactId>
+ <name>MSOCommonBPMN</name>
+ <packaging>war</packaging>
+
+ <properties>
+ <camunda.version>7.6.0</camunda.version>
+ <spring.version>3.1.2.RELEASE</spring.version>
+ <httpclient.version>3.1</httpclient.version>
+ <jax.ws.rs>2.0.1</jax.ws.rs>
+ <springmvc>4.1.4.RELEASE</springmvc>
+ <jackson.version>1.1.1</jackson.version>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ </properties>
+
<build>
<plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <executions>
- <execution>
- <id>test-compile</id>
- <phase>compile</phase>
- <goals>
- <goal>testCompile</goal>
- </goals>
- <configuration>
- <skip>false</skip>
- </configuration>
- </execution>
- </executions>
- </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>test-compile</id>
+ <phase>compile</phase>
+ <goals>
+ <goal>testCompile</goal>
+ </goals>
+ <configuration>
+ <skip>false</skip>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -36,58 +49,58 @@ <version>2.6</version>
<executions>
<execution>
- <!-- Build MSOCommonBPMN-${version}.jar -->
+ <!-- Build MSOCommonBPMN-${version}.jar -->
<id>default-jar</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
- <excludes>
+ <excludes>
<exclude>org/openecomp/mso/bpmn/common/MSOCommonApplication.class</exclude>
-<!-- <exclude>META-INF/</exclude> -->
+ <!-- <exclude>META-INF/</exclude> -->
</excludes>
</configuration>
</execution>
- <execution>
- <goals>
- <goal>test-jar</goal>
- </goals>
- <configuration>
- <forceCreation>true</forceCreation>
- <skip>false</skip>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>3.0.0</version>
- <executions>
- <execution>
- <goals>
- <goal>attach-artifact</goal>
- </goals>
- <phase>package</phase>
- <configuration>
- <artifacts>
- <artifact>
- <file>${project.build.directory}/${project.artifactId}-${project.version}.jar</file>
- <type>jar</type>
- </artifact>
- </artifacts>
- </configuration>
- </execution>
- </executions>
- </plugin>
+ <execution>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ <configuration>
+ <forceCreation>true</forceCreation>
+ <skip>false</skip>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>3.0.0</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>attach-artifact</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <artifacts>
+ <artifact>
+ <file>${project.build.directory}/${project.artifactId}-${project.version}.jar</file>
+ <type>jar</type>
+ </artifact>
+ </artifacts>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
- <failOnMissingWebXml>false</failOnMissingWebXml>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
@@ -96,18 +109,18 @@ <version>2.5.2</version>
</plugin>
<plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-eclipse-plugin</artifactId>
- <version>2.8</version>
- <configuration>
- <additionalProjectnatures>
- <projectnature>org.eclipse.jdt.groovy.core.groovyNature</projectnature>
- </additionalProjectnatures>
- <sourceIncludes>
- <sourceInclude>**/*.groovy</sourceInclude>
- </sourceIncludes>
- </configuration>
- </plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-eclipse-plugin</artifactId>
+ <version>2.8</version>
+ <configuration>
+ <additionalProjectnatures>
+ <projectnature>org.eclipse.jdt.groovy.core.groovyNature</projectnature>
+ </additionalProjectnatures>
+ <sourceIncludes>
+ <sourceInclude>**/*.groovy</sourceInclude>
+ </sourceIncludes>
+ </configuration>
+ </plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
@@ -153,10 +166,54 @@ </execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxb2-maven-plugin</artifactId>
+ <version>2.3</version>
+ <executions>
+ <execution>
+ <id>xjc</id>
+ <goals>
+ <goal>xjc</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <extension>true</extension>
+ <arguments>
+ <argument>-Xannotate</argument>
+ <argument>-Xcommons-lang</argument>
+ </arguments>
+ <sources>
+ <source>src/main/resources/xsd</source>
+ </sources>
+ <xjbSources>
+ <xjbSource>src/main/resources/xjb</xjbSource>
+ </xjbSources>
+ <outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
+ </configuration>
+ <dependencies>
+ <dependency>
+ <groupId>org.jvnet.jaxb2_commons</groupId>
+ <artifactId>jaxb2-basics-annotate</artifactId>
+ <version>0.6.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jvnet.jaxb2_commons</groupId>
+ <artifactId>jaxb2-commons-lang</artifactId>
+ <version>2.3</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.codemodel</groupId>
+ <artifactId>codemodel</artifactId>
+ <version>2.6</version>
+ </dependency>
+ </dependencies>
+ </plugin>
</plugins>
<pluginManagement>
<plugins>
- <!--This plugin's configuration is used to store Eclipse m2e settings
+ <!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
@@ -188,6 +245,8 @@ </lifecycleMappingMetadata>
</configuration>
</plugin>
+
+
</plugins>
</pluginManagement>
</build>
@@ -206,20 +265,18 @@ </exclusion>
</exclusions>
</dependency>
- <!-- Using the `DefaultEjbProcessApplication` result in: `java.sql.SQLException:
+ <!-- Using the `DefaultEjbProcessApplication` result in: `java.sql.SQLException:
You cannot commit during a managed transaction!` -->
<dependency>
- <!-- CDI integration, needs to be included in WAR, otherwise CDI can not
+ <!-- CDI integration, needs to be included in WAR, otherwise CDI can not
work correctly -->
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine-cdi</artifactId>
</dependency>
<dependency>
- <!-- AssertJ Testing Library -->
<groupId>org.camunda.bpm.extension</groupId>
<artifactId>camunda-bpm-assert</artifactId>
- <version>1.2</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -228,15 +285,8 @@ <version>1.10.19</version>
<scope>test</scope>
</dependency>
- <dependency>
- <!-- Optional Plugin for Camunda BPM Workbench -->
- <groupId>org.camunda.bpm.workbench</groupId>
- <artifactId>camunda-workbench-dist-embeddable</artifactId>
- <version>1.0.0-alpha8</version>
- <scope>test</scope>
- </dependency>
-
- <!-- Spin dataformat support, in compile scope to include it in the war
+
+ <!-- Spin dataformat support, in compile scope to include it in the war
file -->
<dependency>
<groupId>org.camunda.spin</groupId>
@@ -263,10 +313,10 @@ </dependency>
<dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-client</artifactId>
- <version>3.0.19.Final</version>
- <scope>provided</scope>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>resteasy-client</artifactId>
+ <version>3.0.19.Final</version>
+ <scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
@@ -313,33 +363,34 @@ <artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
</dependency>
- <!-- for encoding the url the same way A&AI does -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <version>4.3.2.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>org.openecomp.so</groupId>
- <artifactId>MSOMockServer</artifactId>
- <version>${project.version}</version>
- <classifier>classes</classifier>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.openecomp.so</groupId>
- <artifactId>MSORESTClient</artifactId>
- <version>${project.version}</version>
- </dependency>
+ <!-- for encoding the url the same way A&AI does -->
+ <dependency>
+ <groupId>org.openecomp.so</groupId>
+ <artifactId>MSOMockServer</artifactId>
+ <version>${project.version}</version>
+ <classifier>classes</classifier>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.openecomp.so</groupId>
+ <artifactId>MSORESTClient</artifactId>
+ <version>${project.version}</version>
+ </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.0.1</version>
- <scope>provided</scope>
- </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <version>3.0.1</version>
+ <scope>provided</scope>
+ </dependency>
- <dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <version>4.3.2.RELEASE</version>
+ </dependency>
+
+ <dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock</artifactId>
<version>1.56</version>
@@ -388,5 +439,161 @@ </exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.camunda.bpm</groupId>
+ <artifactId>camunda-engine-spring</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ <version>2.8.7</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ <version>2.8.7</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.module</groupId>
+ <artifactId>jackson-module-jaxb-annotations</artifactId>
+ <version>2.4.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>1.6.12</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>${httpclient.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.openecomp.appc.client</groupId>
+ <artifactId>client-kit</artifactId>
+ <version>1.1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.openecomp.appc.client</groupId>
+ <artifactId>client-lib</artifactId>
+ <version>1.1.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.onap.aai.aai-common</groupId>
+ <artifactId>aai-schema</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>2.8.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.10.19</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ </dependency>
+ <dependency>
+ <groupId>com.openpojo</groupId>
+ <artifactId>openpojo</artifactId>
+ <version>0.8.6</version>
+ </dependency>
+ <dependency>
+ <groupId>com.jayway.jsonpath</groupId>
+ <artifactId>json-path</artifactId>
+ <version>2.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ <version>4.3.2.RELEASE</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>${httpclient.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.ws.rs</groupId>
+ <artifactId>javax.ws.rs-api</artifactId>
+ <version>${jax.ws.rs}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.openecomp.appc.client</groupId>
+ <artifactId>client-kit</artifactId>
+ <version>1.1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.openecomp.appc.client</groupId>
+ <artifactId>client-lib</artifactId>
+ <version>1.1.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>2.8.7</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ <version>2.8.7</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.module</groupId>
+ <artifactId>jackson-module-jaxb-annotations</artifactId>
+ <version>2.4.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>1.6.12</version>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.10.19</version>
+ </dependency>
+ <dependency>
+ <groupId>com.att.nsa</groupId>
+ <artifactId>dmaapClient</artifactId>
+ <version>0.2.12</version>
+ </dependency>
+ <dependency>
+ <!-- Optional Plugin for Camunda BPM Workbench -->
+ <groupId>org.camunda.bpm.workbench</groupId>
+ <artifactId>camunda-workbench-dist-embeddable</artifactId>
+ <version>1.0.0-alpha8</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>resteasy-jackson2-provider</artifactId>
+ <version>3.0.11.Final</version>
+ </dependency>
+
</dependencies>
</project>
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/AaiUtil.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/AaiUtil.groovy index af650b49a4..82d58cfe7a 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/AaiUtil.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/AaiUtil.groovy @@ -7,9 +7,9 @@ * 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.
@@ -33,7 +33,7 @@ class AaiUtil { public static final String DEFAULT_VERSION_KEY = 'URN_mso_workflow_global_default_aai_version'
private String aaiNamespace = null;
-
+
private AbstractServiceTaskProcessor taskProcessor
public AaiUtil(AbstractServiceTaskProcessor taskProcessor) {
@@ -186,7 +186,7 @@ class AaiUtil { //set namespace
setNamespace(execution)
-
+
// Check for flow+resource specific first
def key = "URN_mso_workflow_${processKey}_aai_${resourceName}_uri"
def uri = execution.getVariable(key)
@@ -215,7 +215,7 @@ class AaiUtil { (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 9999, 'Internal Error: AAI URI entry for ' + key + ' not defined in the MSO URN properties file')
}
}
-
+
/**
* This method can be used for getting the building namespace out of uri.
* NOTE: A getUri() method needs to be invoked first.
@@ -226,7 +226,7 @@ class AaiUtil { *
* @return namespace
*/
-
+
public String getNamespaceFromUri(String uri) {
if (aaiNamespace == null) {
throw new Exception('Internal Error: AAI Namespace has not been set yet. A getUri() method needs to be invoked first.')
@@ -260,7 +260,7 @@ class AaiUtil { return namespace
}
}
-
+
/**
* This is used to extract the version from uri.
*
@@ -280,7 +280,7 @@ class AaiUtil { }
return savedVersion
}
-
+
/**
* This reusable method can be used for making AAI Get Calls. The url should
@@ -291,32 +291,33 @@ class AaiUtil { * @param url
*
* @return APIResponse
+ *
*/
public APIResponse executeAAIGetCall(Execution execution, String url){
def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
taskProcessor.logDebug(" ======== STARTED Execute AAI Get Process ======== ", isDebugEnabled)
+ APIResponse apiResponse = null
try{
String uuid = utils.getRequestID()
taskProcessor.logDebug( "Generated uuid is: " + uuid, isDebugEnabled)
taskProcessor.logDebug( "URL to be used is: " + url, isDebugEnabled)
-
+
String basicAuthCred = utils.getBasicAuth(execution.getVariable("URN_aai_auth"),execution.getVariable("URN_mso_msoKey"))
RESTConfig config = new RESTConfig(url);
RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Accept","application/xml");
-
+
if (basicAuthCred != null && !"".equals(basicAuthCred)) {
client.addAuthorizationHeader(basicAuthCred)
}
-
- APIResponse apiResponse = client.get()
- return apiResponse
+ apiResponse = client.get()
+ taskProcessor.logDebug( "======== COMPLETED Execute AAI Get Process ======== ", isDebugEnabled)
}catch(Exception e){
taskProcessor.logDebug("Exception occured while executing AAI Get Call. Exception is: \n" + e, isDebugEnabled)
- return e
+ throw new BpmnError("MSOWorkflowException")
}
- taskProcessor.logDebug( "======== COMPLETED Execute AAI Get Process ======== ", isDebugEnabled)
+ return apiResponse
}
@@ -330,15 +331,17 @@ class AaiUtil { * @param payload
*
* @return APIResponse
+ *
*/
public APIResponse executeAAIPutCall(Execution execution, String url, String payload){
def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
taskProcessor.logDebug( " ======== Started Execute AAI Put Process ======== ", isDebugEnabled)
+ APIResponse apiResponse = null
try{
String uuid = utils.getRequestID()
taskProcessor.logDebug( "Generated uuid is: " + uuid, isDebugEnabled)
taskProcessor.logDebug( "URL to be used is: " + url, isDebugEnabled)
-
+
String basicAuthCred = utils.getBasicAuth(execution.getVariable("URN_aai_auth"),execution.getVariable("URN_mso_msoKey"))
RESTConfig config = new RESTConfig(url);
@@ -346,14 +349,14 @@ class AaiUtil { if (basicAuthCred != null && !"".equals(basicAuthCred)) {
client.addAuthorizationHeader(basicAuthCred)
}
- APIResponse apiResponse = client.httpPut(payload)
+ apiResponse = client.httpPut(payload)
- return apiResponse
+ taskProcessor.logDebug( "======== Completed Execute AAI Put Process ======== ", isDebugEnabled)
}catch(Exception e){
taskProcessor.utils.log("ERROR", "Exception occured while executing AAI Put Call. Exception is: \n" + e, isDebugEnabled)
- return e
+ throw new BpmnError("MSOWorkflowException")
}
- taskProcessor.logDebug( "======== Completed Execute AAI Put Process ======== ", isDebugEnabled)
+ return apiResponse
}
/**
@@ -366,10 +369,12 @@ class AaiUtil { * @param payload
*
* @return APIResponse
+ *
*/
public APIResponse executeAAIPatchCall(Execution execution, String url, String payload){
def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
taskProcessor.logDebug( " ======== Started Execute AAI Patch Process ======== ", isDebugEnabled)
+ APIResponse apiResponse = null
try{
String uuid = utils.getRequestID()
taskProcessor.logDebug( "Generated uuid is: " + uuid, isDebugEnabled)
@@ -377,20 +382,20 @@ class AaiUtil { taskProcessor.logDebug( "URL to be used is: " + url, isDebugEnabled)
String basicAuthCred = utils.getBasicAuth(execution.getVariable("URN_aai_auth"),execution.getVariable("URN_mso_msoKey"))
-
+
RESTConfig config = new RESTConfig(url);
RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Content-Type", "application/merge-patch+json").addHeader("Accept","application/json");
if (basicAuthCred != null && !"".equals(basicAuthCred)) {
client.addAuthorizationHeader(basicAuthCred)
}
- APIResponse apiResponse = client.httpPatch(payload)
+ apiResponse = client.httpPatch(payload)
- return apiResponse
+ taskProcessor.logDebug( "======== Completed Execute AAI Patch Process ======== ", isDebugEnabled)
}catch(Exception e){
taskProcessor.utils.log("ERROR", "Exception occured while executing AAI Patch Call. Exception is: \n" + e, isDebugEnabled)
- return e
+ throw new BpmnError("MSOWorkflowException")
}
- taskProcessor.logDebug( "======== Completed Execute AAI Patch Process ======== ", isDebugEnabled)
+ return apiResponse
}
@@ -403,10 +408,12 @@ class AaiUtil { * @param url
*
* @return APIResponse
+ *
*/
public APIResponse executeAAIDeleteCall(Execution execution, String url){
def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
taskProcessor.logDebug( " ======== Started Execute AAI Delete Process ======== ", isDebugEnabled)
+ APIResponse apiResponse = null
try{
String uuid = utils.getRequestID()
taskProcessor.logDebug( "Generated uuid is: " + uuid, isDebugEnabled)
@@ -419,15 +426,14 @@ class AaiUtil { if (basicAuthCred != null && !"".equals(basicAuthCred)) {
client.addAuthorizationHeader(basicAuthCred)
}
- APIResponse apiResponse = client.delete()
-
- return apiResponse
+ apiResponse = client.delete()
+ taskProcessor.logDebug( "======== Completed Execute AAI Delete Process ======== ", isDebugEnabled)
}catch(Exception e){
taskProcessor.utils.log("ERROR", "Exception occured while executing AAI Delete Call. Exception is: \n" + e, isDebugEnabled)
- return e
+ throw new BpmnError("MSOWorkflowException")
}
- taskProcessor.logDebug( "======== Completed Execute AAI Delete Process ======== ", isDebugEnabled)
+ return apiResponse
}
/**
@@ -440,10 +446,12 @@ class AaiUtil { * @param payload
*
* @return APIResponse
+ *
*/
public APIResponse executeAAIDeleteCall(Execution execution, String url, String payload, String authHeader){
def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
taskProcessor.logDebug( " ======== Started Execute AAI Delete Process ======== ", isDebugEnabled)
+ APIResponse apiResponse = null
try{
String uuid = utils.getRequestID()
taskProcessor.logDebug( "Generated uuid is: " + uuid, isDebugEnabled)
@@ -456,16 +464,14 @@ class AaiUtil { if (basicAuthCred != null && !"".equals(basicAuthCred)) {
client.addAuthorizationHeader(basicAuthCred)
}
-
- APIResponse apiResponse = client.httpDelete(payload)
-
- return apiResponse
+ apiResponse = client.httpDelete(payload)
+ taskProcessor.logDebug( "======== Completed Execute AAI Delete Process ======== ", isDebugEnabled)
}catch(Exception e){
taskProcessor.utils.log("ERROR", "Exception occured while executing AAI Delete Call. Exception is: \n" + e, isDebugEnabled)
- return e
+ throw new BpmnError("MSOWorkflowException")
}
- taskProcessor.logDebug( "======== Completed Execute AAI Delete Process ======== ", isDebugEnabled)
+ return apiResponse
}
/**
@@ -478,10 +484,12 @@ class AaiUtil { * @param payload
*
* @return APIResponse
+ *
*/
public APIResponse executeAAIPostCall(Execution execution, String url, String payload){
def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
taskProcessor.logDebug( " ======== Started Execute AAI Post Process ======== ", isDebugEnabled)
+ APIResponse apiResponse = null
try{
String uuid = utils.getRequestID()
taskProcessor.logDebug( "Generated uuid is: " + uuid, isDebugEnabled)
@@ -490,19 +498,18 @@ class AaiUtil { String basicAuthCred = utils.getBasicAuth(execution.getVariable("URN_aai_auth"),execution.getVariable("URN_mso_msoKey"))
RESTConfig config = new RESTConfig(url);
RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Accept","application/xml");
-
+
if (basicAuthCred != null && !"".equals(basicAuthCred)) {
client.addAuthorizationHeader(basicAuthCred)
}
- APIResponse apiResponse = client.httpPost(payload)
-
- return apiResponse
+ apiResponse = client.httpPost(payload)
+ taskProcessor.logDebug( "======== Completed Execute AAI Post Process ======== ", isDebugEnabled)
}catch(Exception e){
taskProcessor.utils.log("ERROR", "Exception occured while executing AAI Post Call. Exception is: \n" + e, isDebugEnabled)
- return e
+ throw new BpmnError("MSOWorkflowException")
}
- taskProcessor.logDebug( "======== Completed Execute AAI Post Process ======== ", isDebugEnabled)
+ return apiResponse
}
/**
@@ -518,35 +525,33 @@ class AaiUtil { * @param headerValue - the header's value, i.e. addHeader(headerName, headerValue)
*
* @return APIResponse
+ *
*/
public APIResponse executeAAIPostCall(Execution execution, String url, String payload, String authenticationHeaderValue, String headerName, String headerValue){
def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
taskProcessor.logDebug( " ======== Started Execute AAI Post Process ======== ", isDebugEnabled)
+ APIResponse apiResponse = null
try{
taskProcessor.logDebug( "URL to be used is: " + url, isDebugEnabled)
String basicAuthCred = utils.getBasicAuth(execution.getVariable("URN_aai_auth"),execution.getVariable("URN_mso_msoKey"))
-
+
RESTConfig config = new RESTConfig(url);
RESTClient client = new RESTClient(config).addAuthorizationHeader(authenticationHeaderValue).addHeader(headerName, headerValue)
if (basicAuthCred != null && !"".equals(basicAuthCred)) {
client.addAuthorizationHeader(basicAuthCred)
}
- APIResponse apiResponse = client.httpPost(payload)
-
- return apiResponse
+ apiResponse = client.httpPost(payload)
+ taskProcessor.logDebug( "======== Completed Execute AAI Post Process ======== ", isDebugEnabled)
}catch(Exception e){
taskProcessor.utils.log("ERROR", "Exception occured while executing AAI Post Call. Exception is: \n" + e, isDebugEnabled)
- return e
+ throw new BpmnError("MSOWorkflowException")
}
- taskProcessor.logDebug( "======== Completed Execute AAI Post Process ======== ", isDebugEnabled)
+ return apiResponse
}
-
-
-
/* Utility to get the Cloud Region from AAI
* Returns String cloud region id, (ie, cloud-region-id)
* @param execution
@@ -554,60 +559,50 @@ class AaiUtil { * @param backend - "PO" - real region, or "SDNC" - v2.5 (fake region).
*/
- //TODO: We should refactor this method to return WorkflowException instead of Error. Also to throw MSOWorkflowException which the calling flow will then catch.
-
public String getAAICloudReqion(Execution execution, String url, String backend, inputCloudRegion){
def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
-
- try {
- APIResponse apiResponse = executeAAIGetCall(execution, url)
- String returnCode = apiResponse.getStatusCode()
- String aaiResponseAsString = apiResponse.getResponseBodyAsString()
- taskProcessor.utils.log("DEBUG", "Call AAI Cloud Region Return code: " + returnCode, isDebugEnabled)
- execution.setVariable(execution.getVariable("prefix")+"queryCloudRegionReturnCode", returnCode)
- //taskProcessor.utils.log("DEBUG", "Call AAI Cloud Region Response: " + aaiResponseAsString, isDebugEnabled)
- //execution.setVariable(execution.getVariable("prefix")+"queryCloudRegionResponse", aaiResponseAsString)
- String regionId = ""
- if (returnCode == "200") {
- taskProcessor.utils.log("DEBUG", "Call AAI Cloud Region is Successful.", isDebugEnabled)
- try {
- String regionVersion = taskProcessor.utils.getNodeText(aaiResponseAsString, "cloud-region-version")
- taskProcessor.utils.log("DEBUG", "Cloud Region Version from AAI for " + backend + " is: " + regionVersion, isDebugEnabled)
- if (backend == "PO") {
- regionId = taskProcessor.utils.getNodeText(aaiResponseAsString, "cloud-region-id")
- } else { // backend not "PO"
- if (regionVersion == "2.5" ) {
- regionId = "AAIAIC25"
- } else {
- regionId = taskProcessor.utils.getNodeText(aaiResponseAsString, "cloud-region-id")
- }
- }
-
- taskProcessor.utils.log("DEBUG", "Cloud Region Id from AAI " + backend + " is: " + regionId, isDebugEnabled)
- return regionId
-
- } catch (Exception e) {
- taskProcessor.utils.log("ERROR", "Exception occured while getting the Cloud Reqion. Exception is: \n" + e, isDebugEnabled)
- return "ERROR"
- }
- } else { // not 200
- if (returnCode == "404") {
- if (backend == "PO") {
- regionId = inputCloudRegion
- } else { // backend not "PO"
- regionId = "AAIAIC25"
- }
- taskProcessor.utils.log("DEBUG", "Cloud Region value for code='404' of " + backend + " is: " + regionId, isDebugEnabled)
- return regionId
- } else {
- taskProcessor.utils.log("ERROR", "Call AAI Cloud Region is NOT Successful.", isDebugEnabled)
- return "ERROR"
- }
- }
+ String regionId = ""
+ try{
+ APIResponse apiResponse = executeAAIGetCall(execution, url)
+ String returnCode = apiResponse.getStatusCode()
+ String aaiResponseAsString = apiResponse.getResponseBodyAsString()
+ taskProcessor.utils.log("DEBUG", "Call AAI Cloud Region Return code: " + returnCode, isDebugEnabled)
+ execution.setVariable(execution.getVariable("prefix")+"queryCloudRegionReturnCode", returnCode)
+
+ if(returnCode == "200"){
+ taskProcessor.utils.log("DEBUG", "Call AAI Cloud Region is Successful.", isDebugEnabled)
+
+ String regionVersion = taskProcessor.utils.getNodeText1(aaiResponseAsString, "cloud-region-version")
+ taskProcessor.utils.log("DEBUG", "Cloud Region Version from AAI for " + backend + " is: " + regionVersion, isDebugEnabled)
+ if (backend == "PO") {
+ regionId = taskProcessor.utils.getNodeText1(aaiResponseAsString, "cloud-region-id")
+ } else { // backend not "PO"
+ if (regionVersion == "2.5" ) {
+ regionId = "AAIAIC25"
+ } else {
+ regionId = taskProcessor.utils.getNodeText1(aaiResponseAsString, "cloud-region-id")
+ }
+ }
+ if(regionId == null){
+ throw new BpmnError("MSOWorkflowException")
+ }
+ taskProcessor.utils.log("DEBUG", "Cloud Region Id from AAI " + backend + " is: " + regionId, isDebugEnabled)
+ }else if (returnCode == "404"){ // not 200
+ if (backend == "PO") {
+ regionId = inputCloudRegion
+ }else{ // backend not "PO"
+ regionId = "AAIAIC25"
+ }
+ taskProcessor.utils.log("DEBUG", "Cloud Region value for code='404' of " + backend + " is: " + regionId, isDebugEnabled)
+ }else{
+ taskProcessor.utils.log("ERROR", "Call AAI Cloud Region is NOT Successful.", isDebugEnabled)
+ throw new BpmnError("MSOWorkflowException")
+ }
}catch(Exception e) {
- taskProcessor.utils.log("ERROR", "Exception occured while getting the Cloud Reqion. Exception is: \n" + e, isDebugEnabled)
- return "ERROR"
+ taskProcessor.utils.log("ERROR", "Exception occured while getting the Cloud Reqion. Exception is: \n" + e, isDebugEnabled)
+ throw new BpmnError("MSOWorkflowException")
}
+ return regionId
}
/* returns xml Node with service-type of searchValue */
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/AbstractServiceTaskProcessor.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/AbstractServiceTaskProcessor.groovy index e86f77c890..4bfeabfeaa 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/AbstractServiceTaskProcessor.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/AbstractServiceTaskProcessor.groovy @@ -385,7 +385,7 @@ public abstract class AbstractServiceTaskProcessor implements ServiceTaskProcess /**
* Returns the process definition key (i.e. the process name) of the
* current process.
- *
+ *
* @param execution the execution
*/
public String getProcessKey(Execution execution) {
@@ -481,6 +481,7 @@ public abstract class AbstractServiceTaskProcessor implements ServiceTaskProcess def nodeText = utils.getNodeText1(xml, elementName)
return (nodeText == null) ? defaultValue : nodeText
}
+
/**
* Get the text for the specified element from the specified xml. If
* the element does not exist, return an empty string.
@@ -579,7 +580,6 @@ public abstract class AbstractServiceTaskProcessor implements ServiceTaskProcess logDebug('Outgoing SuccessIndicator is: ' + execution.getVariable(prefix+'SuccessIndicator') + '', isDebugLogEnabled)
}
-
/**
* Sends a Error Sync Response
*
@@ -598,17 +598,6 @@ public abstract class AbstractServiceTaskProcessor implements ServiceTaskProcess }
/**
- * Create a WorkflowException - uses ExceptionUtil to build a WorkflowException
- * @param execution
- * @param errorCode
- * @param errorMessage
- * @param isDebugEnabled
- */
- public void buildWorkflowException(Execution execution, int errorCode, String errorMessage, boolean isDebugEnabled) {
- (new ExceptionUtil()).buildWorkflowException(execution, errorCode, errorMessage)
- }
-
- /**
* Executes a named groovy script method in the current object
*/
public void executeMethod(String methodName, Object... args) {
@@ -721,7 +710,7 @@ public abstract class AbstractServiceTaskProcessor implements ServiceTaskProcess '/' + UriUtils.encodePathSegment(messageType, 'UTF-8') +
'/' + UriUtils.encodePathSegment(correlator, 'UTF-8')
}
-
+
/**
*
* Constructs a workflow message callback URL for the specified message type and correlator.
@@ -747,4 +736,52 @@ public abstract class AbstractServiceTaskProcessor implements ServiceTaskProcess '/' + UriUtils.encodePathSegment(messageType, 'UTF-8') +
'/' + UriUtils.encodePathSegment(correlator, 'UTF-8')
}
+
+ public void setRollbackEnabled(Execution execution, isDebugLogEnabled) {
+
+ // Rollback settings
+ def prefix = execution.getVariable('prefix')
+ def disableRollback = execution.getVariable("disableRollback")
+ def defaultRollback = execution.getVariable("URN_mso_rollback").toBoolean()
+
+ logDebug('disableRollback: ' + disableRollback, isDebugLogEnabled)
+ logDebug('defaultRollback: ' + defaultRollback, isDebugLogEnabled)
+
+ def rollbackEnabled
+
+ if(disableRollback == null || disableRollback == '' ) {
+ // get from default urn settings for mso_rollback
+ disableRollback = !defaultRollback
+ rollbackEnabled = defaultRollback
+ logDebug('disableRollback is null or empty!', isDebugLogEnabled)
+ }
+ else {
+ if(disableRollback == true) {
+ rollbackEnabled = false
+ }
+ else if(disableRollback == false){
+ rollbackEnabled = true
+ }
+ else {
+ rollbackEnabled = defaultRollback
+ }
+ }
+
+ execution.setVariable(prefix+"backoutOnFailure", rollbackEnabled)
+ logDebug('rollbackEnabled (aka backoutOnFailure): ' + rollbackEnabled, isDebugLogEnabled)
+ }
+
+ public void setBasicDBAuthHeader(Execution execution, isDebugLogEnabled) {
+ try {
+ String basicAuthValueDB = execution.getVariable("URN_mso_adapters_db_auth")
+ utils.log("DEBUG", " Obtained BasicAuth userid password for Catalog DB adapter: " + basicAuthValueDB, isDebugLogEnabled)
+
+ def encodedString = utils.getBasicAuth(basicAuthValueDB, execution.getVariable("URN_mso_msoKey"))
+ execution.setVariable("BasicAuthHeaderValueDB",encodedString)
+ } catch (IOException ex) {
+ String dataErrorMessage = " Unable to encode Catalog DB user/password string - " + ex.getMessage()
+ utils.log("DEBUG", dataErrorMessage, isDebugLogEnabled)
+ (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+ }
+ }
}
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/AllottedResourceUtils.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/AllottedResourceUtils.groovy index 540fe036fc..8e2403ceea 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/AllottedResourceUtils.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/AllottedResourceUtils.groovy @@ -6,8 +6,17 @@ import org.camunda.bpm.engine.runtime.Execution; import org.openecomp.mso.bpmn.core.WorkflowException
import org.openecomp.mso.rest.APIResponse;
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution;
+
+import groovy.util.XmlParser
+import groovy.util.Node
+import static org.apache.commons.lang3.StringUtils.*;
+
class AllottedResourceUtils {
-
+
private AbstractServiceTaskProcessor taskProcessor
ExceptionUtil exceptionUtil = new ExceptionUtil()
MsoUtils utils;
@@ -84,6 +93,18 @@ class AllottedResourceUtils { utils.log("DEBUG", " ***** Exit GetARbyId ***** AR:" + ar, isDebugEnabled)
return ar;
}
+
+ public String getPSIFmARLink(Execution execution, String arLink)
+ {
+ def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+ // Path: /aai/{version}/business/customers/customer/{cust}/service-subscriptions/service-subscription/{subs}/service-instances/service-instance/{psiid}/allotted-resources/allotted-resource/{arid}
+ utils.log("DEBUG", " ***** getPSIFmARLink ***** path:" + arLink, isDebugEnabled)
+ String[] split = arLink.split("/service-instance/")
+ String[] splitB = split[1].split("/allotted-resources/")
+ String siId = splitB[0]
+ utils.log("DEBUG", " ***** Exit getARLinkbyId ***** parentServiceInstanceId:" + siId , isDebugEnabled)
+ return siId
+ }
// get Allotted Resource Link by AllottedResourceId using Nodes Query
// used on Delete - called from getARbyId
@@ -222,10 +243,10 @@ class AllottedResourceUtils { try{
String updateReq = """
- {
- "orchestration-status": "Created""
- }
- """
+ {
+ "orchestration-status": "${status}"
+ }
+ """
utils.log("DEBUG", 'AAI AR URI: ' + aaiARPath, isDebugEnabled)
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/CatalogDbUtils.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/CatalogDbUtils.groovy index 488535024b..9d67f0a700 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/CatalogDbUtils.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/CatalogDbUtils.groovy @@ -33,6 +33,8 @@ import groovy.json.JsonSlurper import groovy.util.slurpersupport.GPathResult
import groovy.xml.QName;
+import org.camunda.bpm.engine.runtime.Execution
+
import org.openecomp.mso.logger.MsoLogger;
import org.openecomp.mso.rest.APIResponse;
import org.openecomp.mso.rest.RESTClient
@@ -45,17 +47,17 @@ import org.openecomp.mso.rest.RESTConfig */
class CatalogDbUtils {
-
+
MsoUtils utils = new MsoUtils()
JsonUtils jsonUtils = new JsonUtils()
MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL);
static private String defaultDbAdapterVersion = "v2"
- public JSONArray getAllNetworksByServiceModelUuid(String catalogDbEndpoint, String serviceModelUuid) {
- JSONArray networksList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceNetworks?serviceModelUuid=" + UriUtils.encode(serviceModelUuid, "UTF-8")
+ public JSONArray getAllNetworksByServiceModelUuid(Execution execution, String serviceModelUuid) {
+ JSONArray networksList = null
+ String endPoint = "/serviceNetworks?serviceModelUuid=" + UriUtils.encode(serviceModelUuid, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", "v1")
@@ -68,16 +70,21 @@ class CatalogDbUtils { return networksList
}
-
- public JSONArray getAllNetworksByServiceModelUuid(String catalogDbEndpoint, String serviceModelUuid, String catalogUtilsVersion) {
- JSONArray networksList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceNetworks?serviceModelUuid=" + UriUtils.encode(serviceModelUuid, "UTF-8")
+
+ public JSONArray getAllNetworksByServiceModelUuid(Execution execution, String serviceModelUuid, String catalogUtilsVersion) {
+ JSONArray networksList = null
+ String endPoint = "/serviceNetworks?serviceModelUuid=" + UriUtils.encode(serviceModelUuid, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", catalogUtilsVersion)
-
+ if (!catalogUtilsVersion.equals("v1")) {
+ JSONObject responseJson = new JSONObject(catalogDbResponse)
+ networksList = responseJson.getJSONArray("serviceNetworks")
+ }
+ else {
+ networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", catalogUtilsVersion)
+ }
}
}
@@ -88,11 +95,11 @@ class CatalogDbUtils { return networksList
}
- public JSONArray getAllNetworksByServiceModelInvariantUuid(String catalogDbEndpoint, String serviceModelInvariantUuid) {
- JSONArray networksList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceNetworks?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
+ public JSONArray getAllNetworksByServiceModelInvariantUuid(Execution execution, String serviceModelInvariantUuid) {
+ JSONArray networksList = null
+ String endPoint = "/serviceNetworks?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", "v1")
@@ -105,16 +112,21 @@ class CatalogDbUtils { return networksList
}
-
- public JSONArray getAllNetworksByServiceModelInvariantUuid(String catalogDbEndpoint, String serviceModelInvariantUuid, String catalogUtilsVersion) {
- JSONArray networksList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceNetworks?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
+ public JSONArray getAllNetworksByServiceModelInvariantUuid(Execution execution, String serviceModelInvariantUuid, String catalogUtilsVersion) {
+ JSONArray networksList = null
+ String endPoint = "/serviceNetworks?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", catalogUtilsVersion)
+ if (!catalogUtilsVersion.equals("v1")) {
+ JSONObject responseJson = new JSONObject(catalogDbResponse)
+ networksList = responseJson.getJSONArray("serviceNetworks")
+ }
+ else {
+ networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", catalogUtilsVersion)
+ }
}
}
@@ -125,11 +137,11 @@ class CatalogDbUtils { return networksList
}
- public JSONArray getAllNetworksByServiceModelInvariantUuidAndServiceModelVersion(String catalogDbEndpoint, String serviceModelInvariantUuid, String serviceModelVersion) {
- JSONArray networksList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceNetworks?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
+ public JSONArray getAllNetworksByServiceModelInvariantUuidAndServiceModelVersion(Execution execution, String serviceModelInvariantUuid, String serviceModelVersion) {
+ JSONArray networksList = null
+ String endPoint = "/serviceNetworks?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", "v1")
@@ -142,16 +154,21 @@ class CatalogDbUtils { return networksList
}
-
- public JSONArray getAllNetworksByServiceModelInvariantUuidAndServiceModelVersion(String catalogDbEndpoint, String serviceModelInvariantUuid, String serviceModelVersion, String catalogUtilsVersion) {
- JSONArray networksList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceNetworks?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
+ public JSONArray getAllNetworksByServiceModelInvariantUuidAndServiceModelVersion(Execution execution, String serviceModelInvariantUuid, String serviceModelVersion, String catalogUtilsVersion) {
+ JSONArray networksList = null
+ String endPoint = "/serviceNetworks?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", catalogUtilsVersion)
+ if (!catalogUtilsVersion.equals("v1")) {
+ JSONObject responseJson = new JSONObject(catalogDbResponse)
+ networksList = responseJson.getJSONArray("serviceNetworks")
+ }
+ else {
+ networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", catalogUtilsVersion)
+ }
}
}
@@ -162,11 +179,11 @@ class CatalogDbUtils { return networksList
}
- public JSONArray getAllNetworksByNetworkModelCustomizationUuid(String catalogDbEndpoint, String networkModelCustomizationUuid) {
- JSONArray networksList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceNetworks?networkModelCustomizationUuid=" + UriUtils.encode(networkModelCustomizationUuid, "UTF-8")
+ public JSONArray getAllNetworksByNetworkModelCustomizationUuid(Execution execution, String networkModelCustomizationUuid) {
+ JSONArray networksList = null
+ String endPoint = "/serviceNetworks?networkModelCustomizationUuid=" + UriUtils.encode(networkModelCustomizationUuid, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", "v1")
@@ -179,16 +196,21 @@ class CatalogDbUtils { return networksList
}
-
- public JSONArray getAllNetworksByNetworkModelCustomizationUuid(String catalogDbEndpoint, String networkModelCustomizationUuid, String catalogUtilsVersion) {
- JSONArray networksList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceNetworks?networkModelCustomizationUuid=" + UriUtils.encode(networkModelCustomizationUuid, "UTF-8")
+ public JSONArray getAllNetworksByNetworkModelCustomizationUuid(Execution execution, String networkModelCustomizationUuid, String catalogUtilsVersion) {
+ JSONArray networksList = null
+ String endPoint = "/serviceNetworks?networkModelCustomizationUuid=" + UriUtils.encode(networkModelCustomizationUuid, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", catalogUtilsVersion)
+ if (!catalogUtilsVersion.equals("v1")) {
+ JSONObject responseJson = new JSONObject(catalogDbResponse)
+ networksList = responseJson.getJSONArray("serviceNetworks")
+ }
+ else {
+ networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", catalogUtilsVersion)
+ }
}
}
@@ -199,11 +221,11 @@ class CatalogDbUtils { return networksList
}
- public JSONArray getAllNetworksByNetworkType(String catalogDbEndpoint, String networkType) {
- JSONArray networksList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceNetworks?networkType=" + UriUtils.encode(networkType, "UTF-8")
+ public JSONArray getAllNetworksByNetworkType(Execution execution, String networkType) {
+ JSONArray networksList = null
+ String endPoint = "/serviceNetworks?networkType=" + UriUtils.encode(networkType, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", "v1")
@@ -216,16 +238,21 @@ class CatalogDbUtils { return networksList
}
-
- public JSONArray getAllNetworksByNetworkType(String catalogDbEndpoint, String networkType, String catalogUtilsVersion) {
- JSONArray networksList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceNetworks?networkType=" + UriUtils.encode(networkType, "UTF-8")
+
+ public JSONArray getAllNetworksByNetworkType(Execution execution, String networkType, String catalogUtilsVersion) {
+ JSONArray networksList = null
+ String endPoint = "/serviceNetworks?networkType=" + UriUtils.encode(networkType, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", catalogUtilsVersion)
-
+ if (!catalogUtilsVersion.equals("v1")) {
+ JSONObject responseJson = new JSONObject(catalogDbResponse)
+ networksList = responseJson.getJSONArray("serviceNetworks")
+ }
+ else {
+ networksList = parseNetworksJson(catalogDbResponse, "serviceNetworks", catalogUtilsVersion)
+ }
}
}
@@ -237,12 +264,12 @@ class CatalogDbUtils { }
- public JSONArray getAllVnfsByServiceModelUuid(String catalogDbEndpoint, String serviceModelUuid) {
- JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceVnfs?serviceModelUuid=" + UriUtils.encode(serviceModelUuid, "UTF-8")
+ public JSONArray getAllVnfsByServiceModelUuid(Execution execution, String serviceModelUuid) {
+ JSONArray vnfsList = null
+ String endPoint = "/serviceVnfs?serviceModelUuid=" + UriUtils.encode(serviceModelUuid, "UTF-8")
try {
msoLogger.debug("ENDPOINT: " + endPoint)
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
vnfsList = parseVnfsJson(catalogDbResponse, "serviceVnfs", "v1")
@@ -255,17 +282,22 @@ class CatalogDbUtils { return vnfsList
}
-
- public JSONArray getAllVnfsByServiceModelUuid(String catalogDbEndpoint, String serviceModelUuid, String catalogUtilsVersion) {
- JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceVnfs?serviceModelUuid=" + UriUtils.encode(serviceModelUuid, "UTF-8")
+
+ public JSONArray getAllVnfsByServiceModelUuid(Execution execution, String serviceModelUuid, String catalogUtilsVersion) {
+ JSONArray vnfsList = null
+ String endPoint = "/serviceVnfs?serviceModelUuid=" + UriUtils.encode(serviceModelUuid, "UTF-8")
try {
msoLogger.debug("ENDPOINT: " + endPoint)
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- vnfsList = parseVnfsJson(catalogDbResponse, "serviceVnfs", catalogUtilsVersion)
-
+ if (!catalogUtilsVersion.equals("v1")) {
+ JSONObject responseJson = new JSONObject(catalogDbResponse)
+ vnfsList = responseJson.getJSONArray("serviceVnfs")
+ }
+ else {
+ vnfsList = parseVnfsJson(catalogDbResponse, "serviceVnfs", catalogUtilsVersion)
+ }
}
}
@@ -276,12 +308,12 @@ class CatalogDbUtils { return vnfsList
}
- public JSONArray getAllVnfsByServiceModelInvariantUuid(String catalogDbEndpoint, String serviceModelInvariantUuid) {
- JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceVnfs?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
+ public JSONArray getAllVnfsByServiceModelInvariantUuid(Execution execution, String serviceModelInvariantUuid) {
+ JSONArray vnfsList = null
+ String endPoint ="/serviceVnfs?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
try {
msoLogger.debug("ENDPOINT: " + endPoint)
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
vnfsList = parseVnfsJson(catalogDbResponse, "serviceVnfs", "v1")
@@ -294,17 +326,22 @@ class CatalogDbUtils { return vnfsList
}
-
- public JSONArray getAllVnfsByServiceModelInvariantUuid(String catalogDbEndpoint, String serviceModelInvariantUuid, String catalogUtilsVersion) {
- JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceVnfs?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
+
+ public JSONArray getAllVnfsByServiceModelInvariantUuid(Execution execution, String serviceModelInvariantUuid, String catalogUtilsVersion) {
+ JSONArray vnfsList = null
+ String endPoint = "/serviceVnfs?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
try {
msoLogger.debug("ENDPOINT: " + endPoint)
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- vnfsList = parseVnfsJson(catalogDbResponse, "serviceVnfs", catalogUtilsVersion)
-
+ if (!catalogUtilsVersion.equals("v1")) {
+ JSONObject responseJson = new JSONObject(catalogDbResponse)
+ vnfsList = responseJson.getJSONArray("serviceVnfs")
+ }
+ else {
+ vnfsList = parseVnfsJson(catalogDbResponse, "serviceVnfs", catalogUtilsVersion)
+ }
}
}
@@ -315,12 +352,12 @@ class CatalogDbUtils { return vnfsList
}
- public JSONArray getAllVnfsByServiceModelInvariantUuidAndServiceModelVersion(String catalogDbEndpoint, String serviceModelInvariantUuid, String serviceModelVersion) {
- JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceVnfs?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
+ public JSONArray getAllVnfsByServiceModelInvariantUuidAndServiceModelVersion(Execution execution, String serviceModelInvariantUuid, String serviceModelVersion) {
+ JSONArray vnfsList = null
+ String endPoint = "/serviceVnfs?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
try {
msoLogger.debug("ENDPOINT: " + endPoint)
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
vnfsList = parseVnfsJson(catalogDbResponse, "serviceVnfs", "v1")
@@ -333,17 +370,22 @@ class CatalogDbUtils { return vnfsList
}
-
- public JSONArray getAllVnfsByServiceModelInvariantUuidAndServiceModelVersion(String catalogDbEndpoint, String serviceModelInvariantUuid, String serviceModelVersion, String catalogUtilsVersion) {
- JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceVnfs?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
+
+ public JSONArray getAllVnfsByServiceModelInvariantUuidAndServiceModelVersion(Execution execution, String serviceModelInvariantUuid, String serviceModelVersion, String catalogUtilsVersion) {
+ JSONArray vnfsList = null
+ String endPoint = "/serviceVnfs?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
try {
msoLogger.debug("ENDPOINT: " + endPoint)
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- vnfsList = parseVnfsJson(catalogDbResponse, "serviceVnfs", catalogUtilsVersion)
-
+ if (!catalogUtilsVersion.equals("v1")) {
+ JSONObject responseJson = new JSONObject(catalogDbResponse)
+ vnfsList = responseJson.getJSONArray("serviceVnfs")
+ }
+ else {
+ vnfsList = parseVnfsJson(catalogDbResponse, "serviceVnfs", catalogUtilsVersion)
+ }
}
}
@@ -354,12 +396,12 @@ class CatalogDbUtils { return vnfsList
}
- public JSONArray getAllVnfsByVnfModelCustomizationUuid(String catalogDbEndpoint, String vnfModelCustomizationUuid) {
- JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceVnfs?vnfModelCustomizationUuid=" + UriUtils.encode(vnfModelCustomizationUuid, "UTF-8")
+ public JSONArray getAllVnfsByVnfModelCustomizationUuid(Execution execution, String vnfModelCustomizationUuid) {
+ JSONArray vnfsList = null
+ String endPoint = "/serviceVnfs?vnfModelCustomizationUuid=" + UriUtils.encode(vnfModelCustomizationUuid, "UTF-8")
try {
msoLogger.debug("ENDPOINT: " + endPoint)
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
vnfsList = parseVnfsJson(catalogDbResponse, "serviceVnfs", "v1")
@@ -373,16 +415,47 @@ class CatalogDbUtils { return vnfsList
}
- public JSONArray getAllVnfsByVnfModelCustomizationUuid(String catalogDbEndpoint, String vnfModelCustomizationUuid, String catalogUtilsVersion) {
+ /**
+ * This method gets a all vnfs for a particular
+ * service from the catalog database using the
+ * service model's model name.
+ *
+ * @param catalogDbEndpoint
+ * @param serviceModelModelName
+ * @return vnfsList *
+ *
+ */
+ public JSONArray getAllVnfsByServiceModelModelName(Execution execution, String serviceModelModelName) {
JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceVnfs?vnfModelCustomizationUuid=" + UriUtils.encode(vnfModelCustomizationUuid, "UTF-8")
+ String endPoint = "/serviceVnfs?serviceModelName=" + UriUtils.encode(serviceModelModelName, "UTF-8")
try {
msoLogger.debug("ENDPOINT: " + endPoint)
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- vnfsList = parseVnfsJson(catalogDbResponse, "serviceVnfs", catalogUtilsVersion)
+ vnfsList = parseVnfsJson(catalogDbResponse, "serviceVnfs", defaultDbAdapterVersion)
+ }
+ }catch (Exception e) {
+ utils.log("ERROR", "Exception in Querying Catalog DB: " + e.message)
+ }
+ return vnfsList
+ }
+ public JSONArray getAllVnfsByVnfModelCustomizationUuid(Execution execution, String vnfModelCustomizationUuid, String catalogUtilsVersion) {
+ JSONArray vnfsList = null
+ String endPoint = "/serviceVnfs?vnfModelCustomizationUuid=" + UriUtils.encode(vnfModelCustomizationUuid, "UTF-8")
+ try {
+ msoLogger.debug("ENDPOINT: " + endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
+
+ if (catalogDbResponse != null) {
+ if (!catalogUtilsVersion.equals("v1")) {
+ JSONObject responseJson = new JSONObject(catalogDbResponse)
+ vnfsList = responseJson.getJSONArray("serviceVnfs")
+ }
+ else {
+ vnfsList = parseVnfsJson(catalogDbResponse, "serviceVnfs", catalogUtilsVersion)
+ }
}
}
@@ -393,12 +466,69 @@ class CatalogDbUtils { return vnfsList
}
+ /**
+ * This method gets a single vf module from
+ * the catalog database using the vf module's
+ * model name. It returns that vf module as
+ * a JSONObject
+ *
+ * @param catalogDbEndpoint
+ * @param vfModuleModelName
+ * @return vfModule
+ */
+ public JSONObject getVfModuleByVfModuleModelName(Execution execution, String vfModuleModelName) {
+ JSONObject vfModule = null
+ String endPoint = "/vfModules?vfModuleModelName=" + UriUtils.encode(vfModuleModelName, "UTF-8")
+ try{
+ msoLogger.debug("Get VfModule By VfModule ModelName Endpoint is: " + endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
+
+ if (catalogDbResponse != null) {
+ vfModule = parseVfModuleJson(catalogDbResponse, "vfModules", "v1")
+ }
+ }
+ catch(Exception e){
+ utils.log("ERROR", "Exception in Querying Catalog DB: " + e.message)
+ }
+
+ return vfModule
+ }
+
+ /**
+ * This method gets a single vf module from
+ * the catalog database using the vf module's
+ * model name. It returns that vf module as
+ * a JSONObject
+ *
+ * @param catalogDbEndpoint
+ * @param vfModuleModelName
+ * @param catalogUtilsVersion
+ * @return vfModules
+ */
+ public JSONObject getVfModuleByVfModuleModelName(Execution execution, String vfModuleModelName, String catalogUtilsVersion) {
+ JSONObject vfModule = null
+ String endPoint = "/vfModules?vfModuleModelName=" + UriUtils.encode(vfModuleModelName, "UTF-8")
+ try{
+ msoLogger.debug("Get VfModule By VfModule ModelName Endpoint is: " + endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
- public JSONArray getAllottedResourcesByServiceModelUuid(String catalogDbEndpoint, String serviceModelUuid) {
+ if (catalogDbResponse != null) {
+ vfModule = parseVfModuleJson(catalogDbResponse, "vfModules", "v1")
+ }
+ }
+ catch(Exception e){
+ utils.log("ERROR", "Exception in Querying Catalog DB: " + e.message)
+ }
+
+ return vfModule
+ }
+
+
+ public JSONArray getAllottedResourcesByServiceModelUuid(Execution execution, String serviceModelUuid) {
JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/ServiceAllottedResources?serviceModelUuid=" + UriUtils.encode(serviceModelUuid, "UTF-8")
+ String endPoint = "/ServiceAllottedResources?serviceModelUuid=" + UriUtils.encode(serviceModelUuid, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
vnfsList = parseAllottedResourcesJson(catalogDbResponse, "serviceAllottedResources", "v1")
@@ -411,16 +541,21 @@ class CatalogDbUtils { return vnfsList
}
-
- public JSONArray getAllottedResourcesByServiceModelUuid(String catalogDbEndpoint, String serviceModelUuid, String catalogUtilsVersion) {
- JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/ServiceAllottedResources?serviceModelUuid=" + UriUtils.encode(serviceModelUuid, "UTF-8")
+ public JSONArray getAllottedResourcesByServiceModelUuid(Execution execution, String serviceModelUuid, String catalogUtilsVersion) {
+ JSONArray vnfsList = null
+ String endPoint = "/ServiceAllottedResources?serviceModelUuid=" + UriUtils.encode(serviceModelUuid, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- vnfsList = parseAllottedResourcesJson(catalogDbResponse, "serviceAllottedResources", catalogUtilsVersion)
+ if (!catalogUtilsVersion.equals("v1")) {
+ JSONObject responseJson = new JSONObject(catalogDbResponse)
+ vnfsList = responseJson.getJSONArray("serviceAllottedResources")
+ }
+ else {
+ vnfsList = parseAllottedResourcesJson(catalogDbResponse, "serviceAllottedResources", catalogUtilsVersion)
+ }
}
}
@@ -431,11 +566,11 @@ class CatalogDbUtils { return vnfsList
}
- public JSONArray getAllottedResourcesByServiceModelInvariantUuid(String catalogDbEndpoint, String serviceModelInvariantUuid) {
+ public JSONArray getAllottedResourcesByServiceModelInvariantUuid(Execution execution, String serviceModelInvariantUuid) {
JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceAllottedResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
+ String endPoint = "/serviceAllottedResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
vnfsList = parseAllottedResourcesJson(catalogDbResponse, "serviceAllottedResources", "v1")
@@ -448,30 +583,37 @@ class CatalogDbUtils { return vnfsList
}
-
- public JSONArray getAllottedResourcesByServiceModelInvariantUuid(String catalogDbEndpoint, String serviceModelInvariantUuid, String catalogUtilsVersion) {
+
+ public JSONArray getAllottedResourcesByServiceModelInvariantUuid(Execution execution, String serviceModelInvariantUuid, String catalogUtilsVersion) {
JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceAllottedResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
+ String endPoint = "/serviceAllottedResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- vnfsList = parseAllottedResourcesJson(catalogDbResponse, "serviceAllottedResources", catalogUtilsVersion)
+ if (!catalogUtilsVersion.equals("v1")) {
+ JSONObject responseJson = new JSONObject(catalogDbResponse)
+ vnfsList = responseJson.getJSONArray()
+ }
+ else {
+ vnfsList = parseAllottedResourcesJson(catalogDbResponse, "serviceAllottedResources", catalogUtilsVersion)
+ }
}
}
catch (Exception e) {
utils.log("ERROR", "Exception in Querying Catalog DB: " + e.message)
+ utils.log("ERROR", "Exception in Querying Catalog DB: " + e.getStackTrace())
}
return vnfsList
}
- public JSONArray getAllottedResourcesByServiceModelInvariantUuidAndServiceModelVersion(String catalogDbEndpoint, String serviceModelInvariantUuid, String serviceModelVersion) {
+ public JSONArray getAllottedResourcesByServiceModelInvariantUuidAndServiceModelVersion(Execution execution, String serviceModelInvariantUuid, String serviceModelVersion) {
JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceAllottedResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
+ String endPoint = "/serviceAllottedResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
vnfsList = parseAllottedResourcesJson(catalogDbResponse, "serviceAllottedResources", "v1")
@@ -484,16 +626,21 @@ class CatalogDbUtils { return vnfsList
}
-
- public JSONArray getAllottedResourcesByServiceModelInvariantUuidAndServiceModelVersion(String catalogDbEndpoint, String serviceModelInvariantUuid, String serviceModelVersion, String catalogUtilsVersion) {
- JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceAllottedResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
+ public JSONArray getAllottedResourcesByServiceModelInvariantUuidAndServiceModelVersion(Execution execution, String serviceModelInvariantUuid, String serviceModelVersion, String catalogUtilsVersion) {
+ JSONArray vnfsList = null
+ String endPoint = "/serviceAllottedResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- vnfsList = parseAllottedResourcesJson(catalogDbResponse, "serviceAllottedResources", catalogUtilsVersion)
+ if (!catalogUtilsVersion.equals("v1")) {
+ JSONObject responseJson = new JSONObject(catalogDbResponse)
+ vnfsList = responseJson.getJSONArray("serviceAllottedResources")
+ }
+ else {
+ vnfsList = parseAllottedResourcesJson(catalogDbResponse, "serviceAllottedResources", catalogUtilsVersion)
+ }
}
}
@@ -504,11 +651,12 @@ class CatalogDbUtils { return vnfsList
}
- public JSONArray getAllottedResourcesByArModelCustomizationUuid(String catalogDbEndpoint, String arModelCustomizationUuid) {
+
+ public JSONArray getAllottedResourcesByArModelCustomizationUuid(Execution execution, String arModelCustomizationUuid) {
JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceAllottedResources?serviceModelCustomizationUuid=" + UriUtils.encode(arModelCustomizationUuid, "UTF-8")
+ String endPoint = "/serviceAllottedResources?serviceModelCustomizationUuid=" + UriUtils.encode(arModelCustomizationUuid, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
vnfsList = parseAllottedResourcesJson(catalogDbResponse, "serviceAllottedResources", "v1")
@@ -521,15 +669,21 @@ class CatalogDbUtils { return vnfsList
}
-
- public JSONArray getAllottedResourcesByArModelCustomizationUuid(String catalogDbEndpoint, String arModelCustomizationUuid, String catalogUtilsVersion) {
+
+ public JSONArray getAllottedResourcesByArModelCustomizationUuid(Execution execution, String arModelCustomizationUuid, String catalogUtilsVersion) {
JSONArray vnfsList = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceAllottedResources?serviceModelCustomizationUuid=" + UriUtils.encode(arModelCustomizationUuid, "UTF-8")
+ String endPoint = "/serviceAllottedResources?serviceModelCustomizationUuid=" + UriUtils.encode(arModelCustomizationUuid, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- vnfsList = parseAllottedResourcesJson(catalogDbResponse, "serviceAllottedResources", catalogUtilsVersion)
+ if (!catalogUtilsVersion.equals("v1")) {
+ JSONObject responseJson = new JSONObject(catalogDbResponse)
+ vnfsList = responseJson.getJSONArray("serviceAllottedResources")
+ }
+ else {
+ vnfsList = parseAllottedResourcesJson(catalogDbResponse, "serviceAllottedResources", catalogUtilsVersion)
+ }
}
}
@@ -540,14 +694,14 @@ class CatalogDbUtils { return vnfsList
}
- public JSONObject getServiceResourcesByServiceModelInvariantUuid(String catalogDbEndpoint, String serviceModelInvariantUuid) {
+ public JSONObject getServiceResourcesByServiceModelInvariantUuid(Execution execution, String serviceModelInvariantUuid) {
JSONObject resources = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
-
+ String endPoint = "/serviceResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
+
resources = parseServiceResourcesJson(catalogDbResponse, "v1")
}
@@ -558,15 +712,20 @@ class CatalogDbUtils { return resources
}
-
- public JSONObject getServiceResourcesByServiceModelInvariantUuid(String catalogDbEndpoint, String serviceModelInvariantUuid, String catalogUtilsVersion) {
+
+ public JSONObject getServiceResourcesByServiceModelInvariantUuid(Execution execution, String serviceModelInvariantUuid, String catalogUtilsVersion) {
JSONObject resources = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
+ String endPoint = "/serviceResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- resources = parseServiceResourcesJson(catalogDbResponse, catalogUtilsVersion)
+ if (!catalogUtilsVersion.equals("v1")) {
+ resources = new JSONObject(catalogDbResponse)
+ }
+ else {
+ resources = parseServiceResourcesJson(catalogDbResponse, catalogUtilsVersion)
+ }
}
}
@@ -575,14 +734,14 @@ class CatalogDbUtils { }
return resources
- }
-
+ }
- public JSONObject getServiceResourcesByServiceModelInvariantUuidAndServiceModelVersion(String catalogDbEndpoint, String serviceModelInvariantUuid, String serviceModelVersion) {
+
+ public JSONObject getServiceResourcesByServiceModelInvariantUuidAndServiceModelVersion(Execution execution, String serviceModelInvariantUuid, String serviceModelVersion) {
JSONObject resources = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
+ String endPoint = "/serviceResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
resources = parseServiceResourcesJson(catalogDbResponse)
@@ -595,15 +754,20 @@ class CatalogDbUtils { return resources
}
-
- public JSONObject getServiceResourcesByServiceModelInvariantUuidAndServiceModelVersion(String catalogDbEndpoint, String serviceModelInvariantUuid, String serviceModelVersion, String catalogUtilsVersion) {
+
+ public JSONObject getServiceResourcesByServiceModelInvariantUuidAndServiceModelVersion(Execution execution, String serviceModelInvariantUuid, String serviceModelVersion, String catalogUtilsVersion) {
JSONObject resources = null
- String endPoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + "/serviceResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
+ String endPoint = "/serviceResources?serviceModelInvariantUuid=" + UriUtils.encode(serviceModelInvariantUuid, "UTF-8") + "&serviceModelVersion=" + UriUtils.encode(serviceModelVersion, "UTF-8")
try {
- String catalogDbResponse = getResponseFromCatalogDb(endPoint)
+ String catalogDbResponse = getResponseFromCatalogDb(execution, endPoint)
if (catalogDbResponse != null) {
- resources = parseServiceResourcesJson(catalogDbResponse, catalogUtilsVersion)
+ if (!catalogUtilsVersion.equals("v1")) {
+ resources = new JSONObject(catalogDbResponse)
+ }
+ else {
+ resources = parseServiceResourcesJson(catalogDbResponse, catalogUtilsVersion)
+ }
}
}
@@ -628,14 +792,14 @@ class CatalogDbUtils { modelInfos = new JSONArray()
for (int i = 0; i < networks.length(); i++) {
-
+
JSONObject network = networks.getJSONObject(i)
JSONObject modelJson = new JSONObject()
JSONObject modelInfo = buildModelInfo("network", network, catalogUtilsVersion)
modelJson.put("modelInfo", modelInfo)
String networkType = jsonUtils.getJsonValueForKey(network, "networkType")
modelJson.put("networkType", networkType)
-
+
switch (catalogUtilsVersion) {
case "v1":
break
@@ -648,7 +812,7 @@ class CatalogDbUtils { modelJson.put("networkRole", networkRole)
String networkScope = jsonUtils.getJsonValueForKey(network, "networkScope")
modelJson.put("networkScope", networkScope)
- break
+ break
}
modelInfos.put(modelJson)
}
@@ -665,7 +829,7 @@ class CatalogDbUtils { private JSONArray parseVnfsJson (String catalogDbResponse, String arrayName, String catalogUtilsVersion) {
JSONArray modelInfos = null
-
+
msoLogger.debug("parseVnfsJson - catalogUtilsVersion is " + catalogUtilsVersion)
try {
@@ -693,14 +857,15 @@ class CatalogDbUtils { String nfRole = jsonUtils.getJsonValueForKey(vnf, "nfRole")
modelJson.put("nfRole", nfRole)
String nfCode = jsonUtils.getJsonValueForKey(vnf, "nfCode")
- modelJson.put("nfCode", nfCode)
- break
+ modelJson.put("nfNamingCode", nfCode)
+ String nfFunction = jsonUtils.getJsonValueForKey(vnf, "nfFunction")
+ modelJson.put("nfFunction", nfFunction)
+ break
}
- JSONObject vnfJson = vnf.getJSONObject("vnf")
JSONArray vfModules = null
try {
- vfModules = vnfJson.getJSONArray("vfModules")
+ vfModules = vnf.getJSONArray("vfModules")
} catch (Exception e)
{
msoLogger.debug("Cannot find VF MODULE ARRAY: " + i + ", exception is " + e.message)
@@ -729,7 +894,7 @@ class CatalogDbUtils { boolean isBase = jsonUtils.getJsonBooleanValueForKey(vfModule, "isBase")
vfModuleModelJson.put("isBase", isBase)
break
- }
+ }
String vfModuleLabel = jsonUtils.getJsonValueForKey(vfModule, "label")
vfModuleModelJson.put("vfModuleLabel", vfModuleLabel)
Integer initialCount = jsonUtils.getJsonIntValueForKey(vfModule, "initialCount")
@@ -740,7 +905,7 @@ class CatalogDbUtils { }
modelInfos.put(modelJson)
}
-
+
String modelInfosString = modelInfos.toString()
msoLogger.debug("Returning vnfs JSON: " + modelInfosString)
@@ -751,9 +916,61 @@ class CatalogDbUtils { return modelInfos
}
+ /**
+ * This method parses a Vf Module from the
+ * Vf Modules array
+ *
+ * @param catalogDbResponse
+ * @param arrayName
+ * @param catalogUtilsVersion
+ * @return vfModulelJson
+ */
+ private JSONObject parseVfModuleJson (String catalogDbResponse, String arrayName, String catalogUtilsVersion) {
+ JSONObject vfModulelJson = new JSONObject()
+ msoLogger.debug("Started Parse Vf Module Json")
+ try {
+ JSONObject responseJson = new JSONObject(catalogDbResponse)
+ JSONArray vfModules = responseJson.getJSONArray(arrayName)
+ if(vfModules != null){
+ JSONObject vfModuleInfo = new JSONObject()
+ for (int i = 0; i < vfModules.length(); i++) {
+ JSONObject vfModule = vfModules.getJSONObject(i)
+ JSONObject vfModuleModelInfo = buildModelInfo("vfModule", vfModule, catalogUtilsVersion)
+ vfModulelJson.put("modelInfo", vfModuleModelInfo)
+ String vfModuleType = jsonUtils.getJsonValueForKey(vfModule, "type")
+ vfModulelJson.put("vfModuleType", vfModuleType)
+ switch(catalogUtilsVersion) {
+ case "v1":
+ Integer isBase = jsonUtils.getJsonIntValueForKey(vfModule, "isBase")
+ if (isBase.intValue() == 1) {
+ vfModulelJson.put("isBase", "true")
+ }
+ else {
+ vfModulelJson.put("isBase", "false")
+ }
+ break
+ default:
+ boolean isBase = jsonUtils.getJsonBooleanValueForKey(vfModule, "isBase")
+ vfModulelJson.put("isBase", isBase)
+ break
+ }
+ String vfModuleLabel = jsonUtils.getJsonValueForKey(vfModule, "label")
+ vfModulelJson.put("vfModuleLabel", vfModuleLabel)
+ Integer initialCount = jsonUtils.getJsonIntValueForKey(vfModule, "initialCount")
+ vfModulelJson.put("initialCount", initialCount.intValue())
+ }
+ }
+ msoLogger.debug("Completed Parsing Vf Module: " + vfModulelJson.toString())
+ }catch (Exception e){
+ utils.log("DEBUG", "Exception while parsing Vf Modules from Catalog DB Response: " + e.message)
+ }
+
+ return vfModulelJson
+ }
+
private JSONArray parseAllottedResourcesJson (String catalogDbResponse, String arrayName, String catalogUtilsVersion) {
JSONArray modelInfos = null
-
+
msoLogger.debug("parseAllottedResourcesJson - catalogUtilsVersion is " + catalogUtilsVersion)
try {
@@ -774,12 +991,20 @@ class CatalogDbUtils { default:
String toscaNodeType = jsonUtils.getJsonValueForKey(allottedResource, "toscaNodeType")
modelJson.put("toscaNodeType", toscaNodeType)
+ String nfType = jsonUtils.getJsonValueForKey(allottedResource, "nfType")
+ modelJson.put("nfType", nfType)
+ String nfRole = jsonUtils.getJsonValueForKey(allottedResource, "nfRole")
+ modelJson.put("nfRole", nfRole)
+ String nfCode = jsonUtils.getJsonValueForKey(allottedResource, "nfCode")
+ modelJson.put("nfNamingCode", nfCode)
+ String nfFunction = jsonUtils.getJsonValueForKey(allottedResource, "nfFunction")
+ modelJson.put("nfFunction", nfFunction)
String parentServiceModelUuid = jsonUtils.getJsonValueForKey(allottedResource, "parentServiceModelUuid")
modelJson.put("parentServiceModelUuid", parentServiceModelUuid)
break
}
-
-
+
+
modelInfos.put(modelJson)
}
@@ -818,17 +1043,17 @@ class CatalogDbUtils { return serviceResources
}
-
+
private JSONObject parseServiceResourcesJson (String catalogDbResponse, String catalogUtilsVersion) {
JSONObject serviceResources = new JSONObject()
JSONObject serviceResourcesObject = new JSONObject()
- String serviceResourcesString = ""
+ String serviceResourcesString = ""
try {
// Create array of jsons
JSONObject responseJson = new JSONObject(catalogDbResponse)
- JSONObject serviceResourcesRoot = responseJson.getJSONObject("serviceResources")
+ JSONObject serviceResourcesRoot = responseJson.getJSONObject("serviceResources")
JSONObject modelInfo = buildModelInfo("", serviceResourcesRoot, catalogUtilsVersion)
serviceResources.put("modelInfo", modelInfo)
JSONArray vnfsArray = parseVnfsJson(serviceResourcesRoot.toString(), "serviceVnfs", catalogUtilsVersion)
@@ -860,7 +1085,7 @@ class CatalogDbUtils { String modelInstanceName = jsonUtils.getJsonValueForKey(modelFromDb, "modelInstanceName")
modelInfo.put("modelInstanceName", modelInstanceName)
}
- if (!"vfModule".equals(modelType) && !"vnf".equals(modelType)) {
+ if ((!"vfModule".equals(modelType) && !"vnf".equals(modelType)) || !catalogUtilsVersion.equals("v1")) {
String modelVersionId = jsonUtils.getJsonValueForKey(modelFromDb, "modelUuid")
modelInfo.put("modelVersionId", modelVersionId)
}
@@ -884,7 +1109,7 @@ class CatalogDbUtils { default:
modelInfo.put("modelCustomizationUuid", modelCustomizationId)
break
- }
+ }
JSONObject modelJson = new JSONObject()
modelJson.put("modelInfo", modelInfo)
}
@@ -894,17 +1119,24 @@ class CatalogDbUtils { return modelInfo
}
- private String getResponseFromCatalogDb (String endPoint) {
+ private String getResponseFromCatalogDb (Execution execution, String endPoint) {
try {
- RESTConfig config = new RESTConfig(endPoint);
+ String catalogDbEndpoint = execution.getVariable("URN_mso_catalog_db_endpoint")
+ String queryEndpoint = catalogDbEndpoint + "/" + defaultDbAdapterVersion + endPoint
+ RESTConfig config = new RESTConfig(queryEndpoint);
def responseData = ''
def bpmnRequestId = UUID.randomUUID().toString()
RESTClient client = new RESTClient(config).
- addHeader('X-TransactionId', bpmnRequestId).
- addHeader('X-FromAppId', 'BPMN').
- addHeader('Content-Type', 'application/json').
- addHeader('Accept','application/json');
- msoLogger.debug('sending GET to Catalog DB endpoint' + endPoint)
+ addHeader('X-TransactionId', bpmnRequestId).
+ addHeader('X-FromAppId', 'BPMN').
+ addHeader('Content-Type', 'application/json').
+ addHeader('Accept','application/json');
+
+ String basicAuthCred = execution.getVariable("BasicAuthHeaderValueDB")
+ if (basicAuthCred != null && !"".equals(basicAuthCred)) {
+ client.addAuthorizationHeader(basicAuthCred)
+ }
+ msoLogger.debug('sending GET to Catalog DB endpoint: ' + endPoint)
APIResponse response = client.httpGet()
responseData = response.getResponseBodyAsString()
@@ -928,4 +1160,4 @@ class CatalogDbUtils { }
}
-}
+}
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/CompleteMsoProcess.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/CompleteMsoProcess.groovy index 2f9c8d299b..86a4f6a068 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/CompleteMsoProcess.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/CompleteMsoProcess.groovy @@ -83,6 +83,9 @@ public class CompleteMsoProcess extends AbstractServiceTaskProcessor { def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
// utils.log("DEBUG", "*** Started CompleteMsoProcess preProcessRequest Method ***", isDebugLogEnabled);
logDebug('Entered ' + method, isDebugLogEnabled)
+
+ setBasicDBAuthHeader(execution, isDebugLogEnabled)
+
try {
def xml = execution.getVariable("CompleteMsoProcessRequest")
@@ -167,109 +170,14 @@ public class CompleteMsoProcess extends AbstractServiceTaskProcessor { // utils.log("DEBUG", "*** Completed CompleteMsoProcess preProcessRequest Method ***", isDebugLogEnabled);
}
- public void postProcessResponse (Execution execution) {
-
- def method = getClass().getSimpleName() + '.postProcessResponse(' +'execution=' + execution.getId() +')'
- def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
- logDebug('Entered ' + method, isDebugLogEnabled)
-// utils.log("DEBUG", "*** Started CompleteMsoProcess PostProcessRequest Method ***", isDebugLogEnabled);
- try {
-
- def msoCompletionResponse = """
- <sdncadapterworkflow:MsoCompletionResponse xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1">
- <sdncadapterworkflow:out>BPEL ${execution.getVariable("CMSO_mso-bpel-name")} completed</sdncadapterworkflow:out>
- </sdncadapterworkflow:MsoCompletionResponse>
- """.trim()
-
- // Format Response
- def xmlMsoCompletionResponse = utils.formatXML(msoCompletionResponse)
- String buildMsoCompletionResponseAsString = xmlMsoCompletionResponse.drop(38).trim()
- // TODO: Should deprecate use of processKey+Response variable for the response. Will use "WorkflowResponse" instead
- execution.setVariable("WorkflowResponse", buildMsoCompletionResponseAsString)
- utils.logAudit("CompleteMsoProcess Response: " + buildMsoCompletionResponseAsString)
- execution.setVariable("CompleteMsoProcessResponse", buildMsoCompletionResponseAsString)
- execution.setVariable("CMSO_ResponseCode", "200")
-
- setSuccessIndicator(execution, true)
-
- utils.log("DEBUG", "@@ CompleteMsoProcess Response @@ " + "\n" + execution.getVariable("CompleteMsoProcessResponse"), isDebugLogEnabled)
-
- logDebug('Exited ' + method, isDebugLogEnabled)
- } catch (BpmnError e) {
- throw e;
- } catch (Exception e) {
- logError('Caught exception in ' + method, e)
- exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error - Occured in" + method)
- }
-// utils.log("DEBUG", "*** Completed CompleteMsoProcess PostProcessRequest Method ***", isDebugLogEnabled);
-
- }
-
- public void updateDBStatusToSuccessPayload (Execution execution){
- def method = getClass().getSimpleName() + '.updateDBStatusToSuccessPayload(' +'execution=' + execution.getId() +')'
- def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
- logDebug('Entered ' + method, isDebugLogEnabled)
-
- try {
- // Catalog DB headers Authorization
- String basicAuthValueDB = execution.getVariable("URN_mso_adapters_db_auth")
- utils.log("DEBUG", " Obtained BasicAuth userid password for Catalog DB adapter: " + basicAuthValueDB, isDebugLogEnabled)
-
- def encodedString = utils.getBasicAuth(basicAuthValueDB, execution.getVariable("URN_mso_msoKey"))
- execution.setVariable("BasicAuthHeaderValueDB",encodedString)
- } catch (IOException ex) {
- String dataErrorMessage = " Unable to encode Catalog DB user/password string - " + ex.getMessage()
- utils.log("DEBUG", dataErrorMessage, isDebugLogEnabled)
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
- }
-
- try {
-
- String payload = """
- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://org.openecomp.mso/requestsdb">
- <soapenv:Header/>
- <soapenv:Body>
- <req:updateStatus>
- <requestId>${execution.getVariable("CMSO_request_id")}</requestId>
- <lastModifiedBy>BPEL</lastModifiedBy>
- <status>COMPLETED</status>
- </req:updateStatus>
- </soapenv:Body>
- </soapenv:Envelope>
- """
- execution.setVariable("CMSO_updateDBStatusToSuccessPayload", payload)
- utils.logAudit("updateDBStatusToSuccessPayload: " + payload)
- logDebug('Exited ' + method, isDebugLogEnabled)
- //println("CMSO_updateDBStatusToSuccessPayload --> " + execution.getVariable("CMSO_updateDBStatusToSuccessPayload"))
-
- } catch (BpmnError e) {
- throw e;
- } catch (Exception e) {
- logError('Caught exception in ' + method, e)
- exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error - Occured in" + method)
- }
- }
-
public void setUpdateDBstatustoSuccessPayload (Execution execution){
def method = getClass().getSimpleName() + '.setUpdateDBstatustoSuccessPayload(' +'execution=' + execution.getId() +')'
def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
logDebug('Entered ' + method, isDebugLogEnabled)
-
- try {
- String basicAuthValueDB = execution.getVariable("URN_mso_adapters_db_auth")
- utils.log("DEBUG", " Obtained BasicAuth userid password for Catalog DB adapter: " + basicAuthValueDB, isDebugLogEnabled)
-
- def encodedString = utils.getBasicAuth(basicAuthValueDB, execution.getVariable("URN_mso_msoKey"))
- execution.setVariable("BasicAuthHeaderValueDB",encodedString)
- } catch (IOException ex) {
- String dataErrorMessage = " Unable to encode Catalog DB user/password string - " + ex.getMessage()
- utils.log("DEBUG", dataErrorMessage, isDebugLogEnabled)
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
- }
-
+
try {
- +
def xml = execution.getVariable("CompleteMsoProcessRequest")
//Get statusMessage if exists
@@ -357,5 +265,44 @@ public class CompleteMsoProcess extends AbstractServiceTaskProcessor { }
}
+
+ public void postProcessResponse (Execution execution) {
+
+ def method = getClass().getSimpleName() + '.postProcessResponse(' +'execution=' + execution.getId() +')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+ // utils.log("DEBUG", "*** Started CompleteMsoProcess PostProcessRequest Method ***", isDebugLogEnabled);
+ try {
+
+ def msoCompletionResponse = """
+ <sdncadapterworkflow:MsoCompletionResponse xmlns:sdncadapterworkflow="http://ecomp.com/mso/workflow/schema/v1">
+ <sdncadapterworkflow:out>BPEL ${execution.getVariable("CMSO_mso-bpel-name")} completed</sdncadapterworkflow:out>
+ </sdncadapterworkflow:MsoCompletionResponse>
+ """.trim()
+
+ // Format Response
+ def xmlMsoCompletionResponse = utils.formatXML(msoCompletionResponse)
+ String buildMsoCompletionResponseAsString = xmlMsoCompletionResponse.drop(38).trim()
+ // TODO: Should deprecate use of processKey+Response variable for the response. Will use "WorkflowResponse" instead
+ execution.setVariable("WorkflowResponse", buildMsoCompletionResponseAsString)
+ utils.logAudit("CompleteMsoProcess Response: " + buildMsoCompletionResponseAsString)
+ execution.setVariable("CompleteMsoProcessResponse", buildMsoCompletionResponseAsString)
+ execution.setVariable("CMSO_ResponseCode", "200")
+
+ setSuccessIndicator(execution, true)
+
+ utils.log("DEBUG", "@@ CompleteMsoProcess Response @@ " + "\n" + execution.getVariable("CompleteMsoProcessResponse"), isDebugLogEnabled)
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error - Occured in" + method)
+ }
+ // utils.log("DEBUG", "*** Completed CompleteMsoProcess PostProcessRequest Method ***", isDebugLogEnabled);
+
+ }
+
}
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/CreateAAIVfModule.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/CreateAAIVfModule.groovy index 9cf22aaf4a..301ee3efbc 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/CreateAAIVfModule.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/CreateAAIVfModule.groovy @@ -257,7 +257,7 @@ public class CreateAAIVfModule extends AbstractServiceTaskProcessor{ <vnf-name>${execution.getVariable("CAAIVfMod_vnfName")}</vnf-name>
<vnf-type>${execution.getVariable("CAAIVfMod_vnfType")}</vnf-type>
<service-id>${execution.getVariable("CAAIVfMod_serviceId")}</service-id>
- <orchestration-status>active</orchestration-status>
+ <orchestration-status>Active</orchestration-status>
<model-invariant-id>${execution.getVariable("CAAIVfMod_vnfPersonaId")}</model-invariant-id>
<model-version-id>${execution.getVariable("CAAIVfMod_vnfPersonaVer")}</model-version-id>
</generic-vnf>""" as String
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/DecomposeService.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/DecomposeService.groovy new file mode 100644 index 0000000000..e5b46e2d25 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/DecomposeService.groovy @@ -0,0 +1,160 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - MSO + * ================================================================================ + * 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.mso.bpmn.common.scripts; + +import static org.apache.commons.lang3.StringUtils.*; + + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.runtime.Execution +import org.json.JSONObject; +import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils +import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil +import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition +import org.openecomp.mso.bpmn.core.json.JsonUtils + +import com.att.ecomp.mso.bpmn.core.domain.* + +import groovy.json.* + +/** + * This groovy class supports the <class>DecomposeService.bpmn</class> process. + * + * @author + * + * Inputs: + * @param - msoRequestId + * @param - isDebugLogEnabled + * @param - serviceInstanceId + * @param - serviceModelInfo + * @param - requestParameters (may be null) + * + * Outputs: + * @param - rollbackData (null) + * @param - rolledBack (null) + * @param - WorkflowException + * @param - serviceDecomposition + * + */ +public class DecomposeService extends AbstractServiceTaskProcessor { + + String Prefix="DDS_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + CatalogDbUtils catalogDbUtils = new CatalogDbUtils() + JsonUtils jsonUtils = new JsonUtils() + + public void preProcessRequest (Execution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + String msg = "" + utils.log("DEBUG"," ***** preProcessRequest of DecomposeService *****", isDebugEnabled) + setBasicDBAuthHeader(execution, isDebugEnabled) + + try { + execution.setVariable("prefix", Prefix) + // check for required input + String requestId = execution.getVariable("msoRequestId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String serviceModelInfo = execution.getVariable("serviceModelInfo") + execution.setVariable("DDS_serviceModelInvariantId", jsonUtils.getJsonValue(serviceModelInfo, "modelInvariantUuid")) + execution.setVariable("DDS_modelVersion", jsonUtils.getJsonValue(serviceModelInfo, "modelVersion")) + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("DEBUG"," ***** Exit preProcessRequest of DecomposeService *****", isDebugEnabled) + } + + public void queryCatalogDb (Execution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + String msg = "" + utils.log("DEBUG"," ***** queryCatalogDB of DecomposeService *****", isDebugEnabled) + + try { + + // check for input + String serviceModelInvariantId = execution.getVariable("DDS_serviceModelInvariantId") + String modelVersion = execution.getVariable("DDS_modelVersion") + + utils.log("DEBUG", "serviceModelInvariantId: " + serviceModelInvariantId, isDebugEnabled) + utils.log("DEBUG", "modelVersion: " + modelVersion, isDebugEnabled) + + JSONObject catalogDbResponse = null + + if (modelVersion != null && modelVersion.length() > 0) + catalogDbResponse = catalogDbUtils.getServiceResourcesByServiceModelInvariantUuidAndServiceModelVersion(execution, serviceModelInvariantId, modelVersion, "v2") + else + catalogDbResponse = catalogDbUtils.getServiceResourcesByServiceModelInvariantUuid(execution, serviceModelInvariantId, "v2") + String catalogDbResponseString = catalogDbResponse.toString() + + execution.setVariable("DDS_catalogDbResponse", catalogDbResponseString) + utils.log("DEBUG", "catalog DB response string: "+ catalogDbResponseString, isDebugEnabled) + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in queryCatalogDb " + ex.getMessage() + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("DEBUG"," ***** Exit queryCatalogDb of DecomposeService *****", isDebugEnabled) + } + + + + public void actuallyDecomposeService (Execution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + String msg = "" + utils.log("DEBUG"," ***** actuallyDecomposeService of DecomposeService *****", isDebugEnabled) + + try { + + // check for input + String requestId = execution.getVariable("msoRequestId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String serviceModelInvariantId = execution.getVariable("DDS_serviceModelInvariantId") + + utils.log("DEBUG", "serviceModelInvariantId: " + serviceModelInvariantId, isDebugEnabled) + + utils.log("DEBUG", "getting service decomposition", isDebugEnabled) + + String catalogDbResponse = execution.getVariable("DDS_catalogDbResponse") + ServiceDecomposition serviceDecomposition = new ServiceDecomposition(catalogDbResponse, serviceInstanceId) + + execution.setVariable("serviceDecomposition", serviceDecomposition) + execution.setVariable("serviceDecompositionString", serviceDecomposition.toJsonString()) + + utils.log("DEBUG", "service decomposition: "+ serviceDecomposition.toJsonString(), isDebugEnabled) + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in actuallyDecomposeService " + ex.getMessage() + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("DEBUG"," ***** Exit actuallyDecomposeService of DecomposeService *****", isDebugEnabled) + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/FalloutHandler.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/FalloutHandler.groovy index 282cbb3c69..a97e86bb3f 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/FalloutHandler.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/FalloutHandler.groovy @@ -101,18 +101,8 @@ public class FalloutHandler extends AbstractServiceTaskProcessor { // Initialize flow variables
initializeProcessVariables(execution)
setSuccessIndicator(execution, false)
- - try {
- String basicAuthValueDB = execution.getVariable("URN_mso_adapters_db_auth")
- utils.log("DEBUG", " Obtained BasicAuth userid password for Catalog DB adapter: " + basicAuthValueDB, isDebugLogEnabled)
-
- def encodedString = utils.getBasicAuth(basicAuthValueDB, execution.getVariable("URN_mso_msoKey"))
- execution.setVariable("BasicAuthHeaderValueDB",encodedString)
- } catch (IOException ex) {
- String dataErrorMessage = " Unable to encode Catalog DB user/password string - " + ex.getMessage()
- utils.log("DEBUG", dataErrorMessage, isDebugLogEnabled)
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
- }
+
+ setBasicDBAuthHeader(execution, isDebugLogEnabled)
try {
def xml = execution.getVariable("FalloutHandlerRequest")
@@ -285,7 +275,7 @@ public class FalloutHandler extends AbstractServiceTaskProcessor { try {
String payload = """
- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://org.openecomp.mso/requestsdb">
+ <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="${execution.getVariable("URN_mso_default_adapter_namespace")}/requestsdb">
<soapenv:Header/>
<soapenv:Body>
<req:updateRequest>
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/GenericGetService.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/GenericGetService.groovy index 2e65339270..dcc093bc31 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/GenericGetService.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/GenericGetService.groovy @@ -87,9 +87,6 @@ import org.springframework.web.util.UriUtils * @param - GENGS_service
* @param - GENGS_FoundIndicator
* @param - WorkflowException
- *
- *
- * @author cb645j
*/
class GenericGetService extends AbstractServiceTaskProcessor{
@@ -103,7 +100,6 @@ class GenericGetService extends AbstractServiceTaskProcessor{ *
* @param - execution
*
- * @author cb645j
*/
public void preProcessRequest(Execution execution) {
def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/ManualHandling.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/ManualHandling.groovy new file mode 100644 index 0000000000..ad3cc3b08f --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/ManualHandling.groovy @@ -0,0 +1,253 @@ +/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.bpmn.common.scripts;
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+import java.time.chrono.AbstractChronology
+import java.util.List
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.TaskService
+import org.camunda.bpm.engine.task.Task
+import org.camunda.bpm.engine.task.TaskQuery
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateTask
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.camunda.bpm.engine.runtime.Execution
+import org.json.JSONObject;
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+
+
+
+/**
+ * This groovy class supports the <class>ManualHandling.bpmn</class> process.
+ *
+ * @author
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDebugLogEnabled
+ * @param - serviceType
+ * @param - vnfType
+ * @param - requestorId
+ * @param - currentActivity
+ * @param - workStep
+ * @param - failedActivity
+ * @param - errorCode
+ * @param - errorText
+ * @param - validResponses
+ *
+ * Outputs:
+ * @param - WorkflowException
+ * @param - taskId
+ *
+ */
+public class ManualHandling extends AbstractServiceTaskProcessor {
+
+ String Prefix="MH_"
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+ JsonUtils jsonUtils = new JsonUtils()
+
+ public void preProcessRequest (Execution execution) {
+ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+ String msg = ""
+ utils.log("DEBUG"," ***** preProcessRequest of ManualHandling *****", isDebugLogEnabled)
+
+ try {
+ execution.setVariable("prefix", Prefix)
+ // check for required input
+ String requestId = execution.getVariable("msoRequestId")
+ utils.log("DEBUG", "msoRequestId is: " + requestId, isDebugLogEnabled)
+ def serviceType = execution.getVariable("serviceType")
+ utils.log("DEBUG", "serviceType is: " + serviceType, isDebugLogEnabled)
+ def vnfType = execution.getVariable("vnfType")
+ utils.log("DEBUG", "vnftype is: " + vnfType, isDebugLogEnabled)
+ def currentActivity = execution.getVariable("currentActivity")
+ utils.log("DEBUG", "currentActivity is: " + currentActivity, isDebugLogEnabled)
+ def workStep = execution.getVariable("workStep")
+ utils.log("DEBUG", "workStep is: " + workStep, isDebugLogEnabled)
+ def failedActivity = execution.getVariable("failedActivity")
+ utils.log("DEBUG", "failedActivity is: " + failedActivity, isDebugLogEnabled)
+ def errorCode = execution.getVariable("errorCode")
+ utils.log("DEBUG", "errorCode is: " + errorCode, isDebugLogEnabled)
+ def errorText = execution.getVariable("errorText")
+ utils.log("DEBUG", "errorText is: " + errorText, isDebugLogEnabled)
+ def requestorId = execution.getVariable("requestorId")
+ utils.log("DEBUG", "requestorId is: " + requestorId, isDebugLogEnabled)
+ def validResponses = execution.getVariable("validResponses")
+ utils.log("DEBUG", "validResponses is: " + validResponses, isDebugLogEnabled)
+
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception ex){
+ msg = "Exception in preProcessRequest " + ex.getMessage()
+ utils.log("DEBUG", msg, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+ }
+ utils.log("DEBUG"," ***** Exit preProcessRequest of RainyDayHandler *****", isDebugLogEnabled)
+ }
+
+ public void createManualTask (Execution execution) {
+ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+ String msg = ""
+ utils.log("DEBUG"," ***** createManualTask of ManualHandling *****", isDebugLogEnabled)
+
+ try {
+ String taskId = UUID.randomUUID()
+ execution.setVariable('taskId', taskId)
+ String type = "fallout"
+ String nfRole = execution.getVariable("vnfType")
+ String subscriptionServiceType = execution.getVariable("serviceType")
+ String originalRequestId = execution.getVariable("msoRequestId")
+ String originalRequestorId = execution.getVariable("requestorId")
+ String errorSource = execution.getVariable("failedActivity")
+ String errorCode = execution.getVariable("errorCode")
+ String errorMessage = execution.getVariable("errorText")
+ String buildingBlockName = execution.getVariable("currentActivity")
+ String buildingBlockStep = execution.getVariable("workStep")
+ String validResponses = execution.getVariable("validResponses")
+
+ utils.log("DEBUG", "Before creating task", isDebugLogEnabled)
+
+ Map<String, String> taskVariables = new HashMap<String, String>()
+ taskVariables.put("type", type)
+ taskVariables.put("nfRole", nfRole)
+ taskVariables.put("subscriptionServiceType", subscriptionServiceType)
+ taskVariables.put("originalRequestId", originalRequestId)
+ taskVariables.put("originalRequestorId", originalRequestorId)
+ taskVariables.put("errorSource", errorSource)
+ taskVariables.put("errorCode", errorCode)
+ taskVariables.put("errorMessage", errorMessage)
+ taskVariables.put("buildingBlockName", buildingBlockName)
+ taskVariables.put("buildingBlockStep", buildingBlockStep)
+ taskVariables.put("validResponses", validResponses)
+
+ TaskService taskService = execution.getProcessEngineServices().getTaskService()
+ Task manualTask = taskService.newTask(taskId)
+ taskService.saveTask(manualTask)
+ taskService.setVariables(taskId, taskVariables)
+ utils.log("DEBUG", "successfully created task: "+ taskId, isDebugLogEnabled)
+
+ } catch (BpmnError e) {
+ utils.log("DEBUG", "BPMN exception: " + e.errorMessage, isDebugLogEnabled)
+ throw e;
+ } catch (Exception ex){
+ msg = "Exception in createManualTask " + ex.getMessage()
+ utils.log("DEBUG", msg, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+ }
+ utils.log("DEBUG"," ***** Exit createManualTask of ManualHandling *****", isDebugLogEnabled)
+ }
+
+ public void setTaskVariables (DelegateTask task) {
+
+ DelegateExecution execution = task.getExecution()
+
+ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+ String msg = ""
+ utils.log("DEBUG"," ***** setTaskVariables of ManualHandling *****", isDebugLogEnabled)
+ String taskId = task.getId()
+ utils.log("DEBUG", "taskId is: " + taskId, isDebugLogEnabled)
+
+ try {
+ execution.setVariable('taskId', taskId)
+ String type = "fallout"
+ String nfRole = execution.getVariable("vnfType")
+ String subscriptionServiceType = execution.getVariable("serviceType")
+ String originalRequestId = execution.getVariable("msoRequestId")
+ String originalRequestorId = execution.getVariable("requestorId")
+ String errorSource = execution.getVariable("failedActivity")
+ String errorCode = execution.getVariable("errorCode")
+ String errorMessage = execution.getVariable("errorText")
+ String buildingBlockName = execution.getVariable("currentActivity")
+ String buildingBlockStep = execution.getVariable("workStep")
+ String validResponses = execution.getVariable("validResponses")
+
+ utils.log("DEBUG", "Before creating task", isDebugLogEnabled)
+
+ Map<String, String> taskVariables = new HashMap<String, String>()
+ taskVariables.put("type", type)
+ taskVariables.put("nfRole", nfRole)
+ taskVariables.put("subscriptionServiceType", subscriptionServiceType)
+ taskVariables.put("originalRequestId", originalRequestId)
+ taskVariables.put("originalRequestorId", originalRequestorId)
+ taskVariables.put("errorSource", errorSource)
+ taskVariables.put("errorCode", errorCode)
+ taskVariables.put("errorMessage", errorMessage)
+ taskVariables.put("buildingBlockName", buildingBlockName)
+ taskVariables.put("buildingBlockStep", buildingBlockStep)
+ taskVariables.put("validResponses", validResponses)
+ TaskService taskService = execution.getProcessEngineServices().getTaskService()
+
+
+ taskService.setVariables(taskId, taskVariables)
+ utils.log("DEBUG", "successfully created task: "+ taskId, isDebugLogEnabled)
+
+ } catch (BpmnError e) {
+ utils.log("DEBUG", "BPMN exception: " + e.errorMessage, isDebugLogEnabled)
+ throw e;
+ } catch (Exception ex){
+ msg = "Exception in createManualTask " + ex.getMessage()
+ utils.log("DEBUG", msg, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+ }
+ utils.log("DEBUG"," ***** Exit createManualTask of ManualHandling *****", isDebugLogEnabled)
+ }
+
+ public void completeTask (DelegateTask task) {
+
+ DelegateExecution execution = task.getExecution()
+
+ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+ String msg = ""
+ utils.log("DEBUG"," ***** completeTask of ManualHandling *****", isDebugLogEnabled)
+ String taskId = task.getId()
+ utils.log("DEBUG", "taskId is: " + taskId, isDebugLogEnabled)
+
+ try {
+ TaskService taskService = execution.getProcessEngineServices().getTaskService()
+
+ Map<String, String> taskVariables = taskService.getVariables(taskId)
+ String responseValue = taskVariables.get("responseValue")
+
+ utils.log("DEBUG", "Received responseValue on completion: "+ responseValue, isDebugLogEnabled)
+ // Have to set the first letter of the response to upper case
+ String responseValueForRainyDay = responseValue.substring(0, 1).toUpperCase() + responseValue.substring(1)
+ utils.log("DEBUG", "ResponseValue to RainyDayHandler: "+ responseValueForRainyDay, isDebugLogEnabled)
+ execution.setVariable("responseValue", responseValueForRainyDay)
+
+ } catch (BpmnError e) {
+ utils.log("DEBUG", "BPMN exception: " + e.errorMessage, isDebugLogEnabled)
+ throw e;
+ } catch (Exception ex){
+ msg = "Exception in createManualTask " + ex.getMessage()
+ utils.log("DEBUG", msg, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+ }
+ utils.log("DEBUG"," ***** Exit completeTask of ManualHandling *****", isDebugLogEnabled)
+ }
+
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/MsoUtils.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/MsoUtils.groovy index 26c30491bc..41b86c90e7 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/MsoUtils.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/MsoUtils.groovy @@ -858,6 +858,8 @@ class MsoUtils { * @return base 64 encoded basic auth credentials
*/
def getBasicAuth(encryptedAuth, msoKey){
+ if ((encryptedAuth == null || encryptedAuth.isEmpty()) || (msoKey == null || msoKey.isEmpty()))
+ return null
try {
def auth = decrypt(encryptedAuth, msoKey)
byte[] encoded = Base64.encodeBase64(auth.getBytes())
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/NetworkUtils.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/NetworkUtils.groovy index 3ff2863d54..4c4f1749ed 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/NetworkUtils.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/NetworkUtils.groovy @@ -73,7 +73,7 @@ class NetworkUtils { * @param requestInput the request in the process
* @param queryIdResponse the response of REST AAI query by Id
* @param routeCollection the collection
- * @param policyFqdns the policy
+ * @param policyFqdns the policy
* @param tableCollection the collection
* @param cloudRegionId the cloud-region-region
* @return String request
@@ -84,12 +84,12 @@ class NetworkUtils { String serviceInstanceId = ""
String sharedValue = ""
String externalValue = ""
-
+
if (source == "VID") {
sharedValue = utils.getNodeText1(queryIdResponse, "is-shared-network") != null ? utils.getNodeText1(queryIdResponse, "is-shared-network") : "false"
externalValue = utils.getNodeText1(queryIdResponse, "is-external-network") != null ? utils.getNodeText1(queryIdResponse, "is-external-network") : "false"
serviceInstanceId = utils.getNodeText1(requestInput, "service-instance-id")
-
+
} else { // source = 'PORTAL'
sharedValue = getParameterValue(requestInput, "shared")
externalValue = getParameterValue(requestInput, "external")
@@ -101,24 +101,28 @@ class NetworkUtils { String netParams = utils.getNodeXml(requestInput, "network-params", false).replace("tag0:","").replace(":tag0","")
networkParams = buildParams(netParams)
}
-
+
String failIfExists = "false"
// requestInput
String cloudRegion = cloudRegionId
String tenantId = utils.getNodeText1(requestInput, "tenant-id")
+
String networkType = ""
+ String modelCustomizationUuid = ""
if (utils.nodeExists(requestInput, "networkModelInfo")) {
String networkModelInfo = utils.getNodeXml(requestInput, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")
networkType = utils.getNodeText1(networkModelInfo, "modelName")
+ modelCustomizationUuid = utils.getNodeText1(networkModelInfo, "modelCustomizationUuid")
} else {
- networkType = utils.getNodeText1(queryIdResponse, "network-type")
+ networkType = utils.getNodeText1(queryIdResponse, "network-type")
+ modelCustomizationUuid = utils.getNodeText1(requestInput, "modelCustomizationId")
}
-
+
// queryIdResponse
String networkName = utils.getNodeText1(queryIdResponse, "network-name")
String networkId = utils.getNodeText1(queryIdResponse, "network-id")
String networkTechnology = utils.getNodeText1(queryIdResponse, "network-technology")
-
+
// contrailNetwork - networkTechnology = 'Contrail' vs. 'AIC_SR_IOV')
String contrailNetwork = ""
if (networkTechnology.contains('Contrail') || networkTechnology.contains('contrail') || networkTechnology.contains('CONTRAIL')) {
@@ -131,7 +135,7 @@ class NetworkUtils { </contrailNetwork>"""
networkTechnology = "CONTRAIL" // replace
}
-
+
// rebuild subnets
String subnets = ""
if (utils.nodeExists(queryIdResponse, "subnets")) {
@@ -140,10 +144,10 @@ class NetworkUtils { }
String physicalNetworkName = ""
- physicalNetworkName = utils.getNodeText1(queryIdResponse, "physical-network-name")
-
+ physicalNetworkName = utils.getNodeText1(queryIdResponse, "physical-network-name")
+
String vlansCollection = buildVlans(queryIdResponse)
-
+
String notificationUrl = "" //TODO - is this coming from URN? What variable/value to use?
//String notificationUrl = execution.getVariable("URN_?????") //TODO - is this coming from URN? What variable/value to use?
@@ -165,7 +169,7 @@ class NetworkUtils { <skipAAI>true</skipAAI>
<backout>${backoutOnFailure}</backout>
<failIfExists>${failIfExists}</failIfExists>
- ${networkParams}
+ ${networkParams}
<msoRequest>
<requestId>${requestId}</requestId>
<serviceInstanceId>${serviceInstanceId}</serviceInstanceId>
@@ -176,9 +180,9 @@ class NetworkUtils { """.trim()
}
return createNetworkRequest
-
+
}
-
+
/**
* This method returns the string for Network request
* V2 for Contrail 3.x will populate cloud-region data in same cloudSiteId filed
@@ -197,18 +201,18 @@ class NetworkUtils { String serviceInstanceId = ""
String sharedValue = ""
String externalValue = ""
-
+
if (source == "VID") {
sharedValue = utils.getNodeText1(queryIdResponse, "is-shared-network") != null ? utils.getNodeText1(queryIdResponse, "is-shared-network") : "false"
externalValue = utils.getNodeText1(queryIdResponse, "is-external-network") != null ? utils.getNodeText1(queryIdResponse, "is-external-network") : "false"
serviceInstanceId = utils.getNodeText1(requestInput, "service-instance-id")
-
+
} else { // source = 'PORTAL'
sharedValue = getParameterValue(requestInput, "shared")
externalValue = getParameterValue(requestInput, "external")
serviceInstanceId = utils.getNodeText1(requestInput, "service-instance-id") != null ? utils.getNodeText1(requestInput, "service-instance-id") : ""
}
-
+
String failIfExists = "false"
// requestInput
String cloudRegion = cloudRegionId
@@ -226,9 +230,9 @@ class NetworkUtils { modelCustomizationUuid = utils.getNodeText1(networkModelInfo, "modelCustomizationUuid")
} else {
networkType = utils.getNodeText1(queryIdResponse, "network-type")
+ modelCustomizationUuid = utils.getNodeText1(requestInput, "modelCustomizationId")
}
-
// rebuild subnets
String subnets = ""
if (utils.nodeExists(queryIdResponse, "subnets")) {
@@ -241,16 +245,16 @@ class NetworkUtils { String netParams = utils.getNodeXml(requestInput, "network-params", false).replace("tag0:","").replace(":tag0","")
networkParams = buildParams(netParams)
}
-
+
String networkStackId = utils.getNodeText1(queryIdResponse, "heat-stack-id")
if (networkStackId == 'null' || networkStackId == "" || networkStackId == null) {
networkStackId = "force_update"
}
-
+
String physicalNetworkName = utils.getNodeText1(queryIdResponse, "physical-network-name")
String vlansCollection = buildVlans(queryIdResponse)
-
- updateNetworkRequest =
+
+ updateNetworkRequest =
"""<updateNetworkRequest>
<cloudSiteId>${cloudRegion}</cloudSiteId>
<tenantId>${tenantId}</tenantId>
@@ -276,7 +280,7 @@ class NetworkUtils { <skipAAI>true</skipAAI>
<backout>${backoutOnFailure}</backout>
<failIfExists>${failIfExists}</failIfExists>
- ${networkParams}
+ ${networkParams}
<msoRequest>
<requestId>${requestId}</requestId>
@@ -285,10 +289,10 @@ class NetworkUtils { <messageId>${messageId}</messageId>
<notificationUrl></notificationUrl>
</updateNetworkRequest>""".trim()
-
+
}
return updateNetworkRequest
-
+
}
/**
@@ -331,7 +335,7 @@ class NetworkUtils { <heat-stack-id></heat-stack-id>
<vnf-type>${vnfType}</vnf-type>
<orchestration-status>Pending</orchestration-status>
- <vf-module-persona-model-customization-id>${modelCustomizationId}</vf-module-persona-model-customization-id>
+ <vf-module-model-customization-id>${modelCustomizationId}</vf-module-model-customization-id>
<relationship-list>
<relationship>
<related-to>tenant</related-to>
@@ -353,9 +357,9 @@ class NetworkUtils { return requestPayload
}
-
+
def String createCloudRegionVolumeRequest(groupId, volumeName, vnfType, vnfId, tenantId, cloudRegion, namespace, modelCustomizationId) {
-
+
String requestPayload =
"""<volume-group xmlns="${namespace}">
<volume-group-id>${groupId}</volume-group-id>
@@ -363,7 +367,7 @@ class NetworkUtils { <heat-stack-id></heat-stack-id>
<vnf-type>${vnfType}</vnf-type>
<orchestration-status>Pending</orchestration-status>
- <vf-module-persona-model-customization-id>${modelCustomizationId}</vf-module-persona-model-customization-id>
+ <vf-module-model-customization-id>${modelCustomizationId}</vf-module-model-customization-id>
<relationship-list>
<relationship>
<related-to>generic-vnf</related-to>
@@ -389,7 +393,7 @@ class NetworkUtils { </relationship>
</relationship-list>
</volume-group>"""
-
+
return requestPayload
}
@@ -420,7 +424,7 @@ class NetworkUtils { <vnf-type>${vnfType}</vnf-type>
<orchestration-status>Active</orchestration-status>
<resource-version>${resourceVersion}</resource-version>
- <vf-module-persona-model-customization-id>${modelCustomizationId}</vf-module-persona-model-customization-id>
+ <vf-module-model-customization-id>${modelCustomizationId}</vf-module-model-customization-id>
${relationshipList}
</volume-group>"""
}
@@ -480,7 +484,7 @@ class NetworkUtils { } else {
createNetworkContrailResponse = utils.getNodeXml(createNetworkResponse, "updateNetworkContrailResponse", false).replace("tag0:","").replace(":tag0","")
}
-
+
// rebuild network
def networkList = ["network-id", "network-name", "network-type", "network-role", "network-technology", "neutron-network-id", "is-bound-to-vpn", "service-id", "network-role-instance", "resource-version", "resource-model-uuid", "orchestration-status", "heat-stack-id", "mso-catalog-key", "contrail-network-fqdn",
"physical-network-name", "is-provider-network", "is-shared-network", "is-external-network"]
@@ -495,10 +499,14 @@ class NetworkUtils { // rebuild 'segmentation-assignments'
def rebuildSegmentationAssignments = ""
if (utils.nodeExists(requeryIdAAIResponse, 'segmentation-assignments')) {
- List elementList = ["segmentation-id"]
- rebuildSegmentationAssignments = buildXMLElements(requeryIdAAIResponse, "", "segmentation-assignments", elementList)
+ List elementList = ["segmentation-id", "resource-version"]
+ if (utils.nodeExists(requeryIdAAIResponse, 'segmentation-assignment')) { // new tag
+ rebuildSegmentationAssignments = buildXMLElements(requeryIdAAIResponse, "segmentation-assignments", "segmentation-assignment", elementList)
+ } else {
+ rebuildSegmentationAssignments = buildXMLElements(requeryIdAAIResponse, "", "segmentation-assignments", elementList)
+ }
}
-
+
// rebuild 'ctag-assignments' / rebuildCtagAssignments
def rebuildCtagAssignmentsList = ""
if (utils.nodeExists(requeryIdAAIResponse, 'ctag-assignment')) {
@@ -538,8 +546,8 @@ class NetworkUtils { return contrailNetworkCreatedUpdate
}
-
-
+
+
/**
* This method returns the value for the name paramName.
* Ex: <network-params>
@@ -594,20 +602,20 @@ class NetworkUtils { /**
* This method returns the networkParams xml string.
- * Ex: input:
+ * Ex: input:
* <network-params>
* <param name="shared">1</param>
* <param name="external">0</external>
* </network-params>
- *
+ *
* Sample result:
* <networkParams>
* <shared>1</shared>
* <external>0</external>
* </networkParams>
- *
+ *
*/
-
+
def buildParams(networkParams) {
def build = ""
def netParams = new XmlParser().parseText(networkParams)
@@ -621,15 +629,15 @@ class NetworkUtils { build += "<${name}>${value}</${name}>"
}
build += "</networkParams>"
- }
-
+ }
+
} catch (Exception ex) {
println ' buildParams error - ' + ex.getMessage()
build = ""
- }
+ }
return build
}
-
+
def getVlans(xmlInput) {
def rtn = ""
if (xmlInput!=null) {
@@ -751,7 +759,7 @@ class NetworkUtils { }
return rtn
}
-
+
/**
* similar to network policymethod
* @param xmlInput the XML document
@@ -775,7 +783,6 @@ class NetworkUtils { } else {
rtn.add(relatedLink.substring(relatedLink.indexOf("/generic-vnf/")+13, relatedLink.length()))
}
-
}
}
}
@@ -783,7 +790,7 @@ class NetworkUtils { }
return rtn
}
-
+
/**
* similar to network policymethod
* @param xmlInput the XML document
@@ -807,7 +814,6 @@ class NetworkUtils { } else {
rtn.add(relatedLink.substring(relatedLink.indexOf("/l3-network/")+12, relatedLink.length()))
}
-
}
}
}
@@ -815,7 +821,7 @@ class NetworkUtils { }
return rtn
}
-
+
def isVfRelationshipExist(xmlInput) {
Boolean rtn = false
if (xmlInput!=null) {
@@ -824,7 +830,7 @@ class NetworkUtils { if (relationshipListSize > 0) {
for (i in 0..relationshipListSize-1) {
def relationshipXml = XmlUtil.serialize(relationshipList[i])
- if (utils.getNodeText(relationshipXml, 'related-to') == "vf-module") {
+ if (utils.getNodeText(relationshipXml, 'related-to') == "vf-module") {
rtn = true
}
}
@@ -856,7 +862,7 @@ class NetworkUtils { }
return lcpCloudRegion
}
-
+
def getTenantId(xmlInput) {
String tenantId = ""
if (xmlInput!=null) {
@@ -879,27 +885,27 @@ class NetworkUtils { }
return tenantId
}
-
+
def isInstanceValueMatch(linkResource, globalSubscriberId, serviceType) {
Boolean rtn = false
try {
String globalSubscriberIdLink = linkResource.substring(linkResource.indexOf("/customer/")+10, linkResource.indexOf("/service-subscriptions"))
String serviceTypeLink = linkResource.substring(linkResource.indexOf("/service-subscription/")+22, linkResource.indexOf("/service-instances"))
- if (globalSubscriberIdLink == globalSubscriberId) {
+ if (globalSubscriberIdLink == globalSubscriberId) {
rtn = true
} else {
if (serviceTypeLink == serviceType) {
rtn = true
}
}
-
+
} catch (Exception ex) {
println 'Exception - ' + ex.getMessage()
return false
}
return rtn
}
-
+
def getListWithElements(xmlInput, groupName) {
def rtn = ""
if (xmlInput != null) {
@@ -953,7 +959,6 @@ class NetworkUtils { xmlNetwork += "<"+element+">"+"Active"+"</"+element+">"
}
}
-
if (element=="heat-stack-id") {
if (replaceNetworkId != "") {
xmlNetwork += "<"+element+">"+replaceNetworkId+"</"+element+">"
@@ -984,7 +989,6 @@ class NetworkUtils { }
}
}
-
}
return xmlNetwork
}
@@ -1008,7 +1012,7 @@ class NetworkUtils { } else {
def subnetList = ["subnet-id", "neutron-subnet-id", "gateway-address", "network-start-address", "cidr-mask", "ip-version", "orchestration-status", "dhcp-enabled", "dhcp-start", "dhcp-end", "resource-version", "subnet-name"]
rebuildingSubnets += buildSubNetworkElements(subnetXml, createNetworkResponse, subnetList, "subnet")
- }
+ }
}
if (utils.nodeExists(subnetsData, 'relationship')) {
rebuildingSubnets = rebuildRelationship(requeryIdAAIResponse)
@@ -1040,7 +1044,8 @@ class NetworkUtils { def subnetList = ["dhcp-start", "dhcp-end", "network-start-address", "cidr-mask", "dhcp-enabled", "gateway-address", "ip-version", "subnet-id", "subnet-name"]
rebuildingSubnets += buildSubNetworkElements(subnetXml, subnetList, "subnets")
//rebuildingSubnets += buildSubNetworkElements(subnetXml, subnetList, "")
- } }
+ }
+ }
} catch (Exception ex) {
//
} finally {
@@ -1062,7 +1067,7 @@ class NetworkUtils { def xml= new XmlSlurper().parseText(subnetXml)
var = xml.'**'.find {it.name() == element}
if (var != null) {
- if (element=="orchestration-status") {
+ if (element=="orchestration-status") {
if(var.toString() == 'pending-create' || var.toString() == 'PendingCreate') {
xmlBuild += "<"+element+">"+"Created"+"</"+element+">"
} else { // pending-update or PendingUpdate'
@@ -1136,7 +1141,8 @@ class NetworkUtils { xmlBuild += "<gatewayIp>"+var.toString()+"</gatewayIp>"
}
if (element == "ip-version") {
- xmlBuild += "<ipVersion>"+var.toString()+"</ipVersion>"
+ String ipVersion = getIpvVersion(var.toString())
+ xmlBuild += "<ipVersion>"+ipVersion+"</ipVersion>"
}
if (element == "subnet-id") {
xmlBuild += "<subnetId>"+var.toString()+"</subnetId>"
@@ -1219,7 +1225,7 @@ class NetworkUtils { }
return rebuildingSubnets
}
-
+
def buildVlans(queryIdResponse) {
def rebuildingSubnets = "<vlans>"
def subnetsData = new XmlSlurper().parseText(queryIdResponse)
@@ -1230,7 +1236,7 @@ class NetworkUtils { for (i in 0..subnetsSize-1) {
def subnet = subnets[i]
def subnetXml = XmlUtil.serialize(subnet)
-
+
String vlan = utils.getNodeText1(subnetXml, "segmentation-id")
if (i>0){
rebuildingSubnets += ","
@@ -1465,7 +1471,7 @@ class NetworkUtils { }
public boolean isRollbackEnabled (Execution execution, String payloadXml) {
-
+
def rollbackEnabled = false
def rollbackValueSet = false
if (utils.nodeExists(payloadXml, "backout-on-failure")) {
@@ -1480,12 +1486,31 @@ class NetworkUtils { rollbackValueSet = true;
}
}
-
+
if (!rollbackValueSet) {
if (execution.getVariable("URN_mso_rollback") != null) {
rollbackEnabled = execution.getVariable("URN_mso_rollback").toBoolean()
- }
+ }
}
return rollbackEnabled
}
+
+
+ /**
+ * This method extracts the version for the the given ip-version.
+ *
+ * @param String ipvVersion - IP protocols version (ex: ipv4 or ipv6)
+ * @return String version - digit version (ex: 4 or 6)
+ */
+
+ public String getIpvVersion (String ipvVersion) {
+
+ String version = ""
+ if (ipvVersion.isNumber()) {
+ version = ipvVersion
+ } else {
+ version = ipvVersion.substring(ipvVersion.indexOf("ipv")+3)
+ }
+ return version
+ }
}
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/RainyDayHandler.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/RainyDayHandler.groovy new file mode 100644 index 0000000000..8f0570036e --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/RainyDayHandler.groovy @@ -0,0 +1,169 @@ +/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.bpmn.common.scripts;
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.json.JSONObject;
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.client.policy.PolicyDecision
+import org.openecomp.mso.client.policy.PolicyRestClient
+
+
+import com.att.ecomp.mso.bpmn.core.domain.*
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>RainyDayHandler.bpmn</class> process.
+ *
+ * @author
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDebugLogEnabled
+ * @param - serviceType
+ * @param - vnfType
+ * @param - currentActivity
+ * @param - workStep
+ * @param - failedActivity
+ * @param - errorCode
+ * @param - errorText
+ *
+ * Outputs:
+ * @param - WorkflowException
+ * @param - handlingCode
+ *
+ */
+public class RainyDayHandler extends AbstractServiceTaskProcessor {
+
+ String Prefix="RDH_"
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+ JsonUtils jsonUtils = new JsonUtils()
+
+ public void preProcessRequest (Execution execution) {
+ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+ String msg = ""
+ utils.log("DEBUG"," ***** preProcessRequest of RainyDayHandler *****", isDebugLogEnabled)
+
+ try {
+ execution.setVariable("prefix", Prefix)
+ // check for required input
+ String requestId = execution.getVariable("msoRequestId")
+ utils.log("DEBUG", "msoRequestId is: " + requestId, isDebugLogEnabled)
+ def serviceType = execution.getVariable("serviceType")
+ utils.log("DEBUG", "serviceType is: " + serviceType, isDebugLogEnabled)
+ def vnfType = execution.getVariable("vnfType")
+ utils.log("DEBUG", "vnftype is: " + vnfType, isDebugLogEnabled)
+ def currentActivity = execution.getVariable("currentActivity")
+ utils.log("DEBUG", "currentActivity is: " + currentActivity, isDebugLogEnabled)
+ def workStep = execution.getVariable("workStep")
+ utils.log("DEBUG", "workStep is: " + workStep, isDebugLogEnabled)
+ def failedActivity = execution.getVariable("failedActivity")
+ utils.log("DEBUG", "failedActivity is: " + failedActivity, isDebugLogEnabled)
+ def errorCode = execution.getVariable("errorCode")
+ utils.log("DEBUG", "errorCode is: " + errorCode, isDebugLogEnabled)
+ def errorText = execution.getVariable("errorText")
+ utils.log("DEBUG", "errorText is: " + errorText, isDebugLogEnabled)
+
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception ex){
+ msg = "Exception in preProcessRequest " + ex.getMessage()
+ utils.log("DEBUG", msg, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+ }
+ utils.log("DEBUG"," ***** Exit preProcessRequest of RainyDayHandler *****", isDebugLogEnabled)
+ }
+
+ public void queryPolicy (Execution execution) {
+ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+ String msg = ""
+ utils.log("DEBUG"," ***** queryPolicy of RainyDayHandler *****", isDebugLogEnabled)
+
+ try {
+
+ // check for input
+ String serviceType = execution.getVariable("serviceType")
+ String vnfType = execution.getVariable("vnfType")
+
+ utils.log("DEBUG", "serviceType: " + serviceType, isDebugLogEnabled)
+ utils.log("DEBUG", "vnfType: " + vnfType, isDebugLogEnabled)
+
+ def errorCode = execution.getVariable("errorCode")
+ def bbId = execution.getVariable("currentActivity")
+ def workStep = execution.getVariable("workStep")
+
+ utils.log("DEBUG", "Before querying policy", isDebugLogEnabled)
+
+ PolicyDecision decisionObject = null
+
+ try {
+ PolicyRestClient policyClient = new PolicyRestClient()
+ utils.log("DEBUG", "Created policy client", isDebugLogEnabled)
+ decisionObject = policyClient.getDecision(serviceType, vnfType, bbId, workStep, errorCode)
+ utils.log("DEBUG", "Obtained decision object", isDebugLogEnabled)
+ } catch(Exception e) {
+ msg = "Exception in queryPolicy " + e.getMessage()
+ utils.log("DEBUG", msg, isDebugLogEnabled)
+
+ }
+
+ String decision = 'DENY'
+ String disposition = "Abort"
+ if (decisionObject != null) {
+ decision = decisionObject.getDecision()
+ disposition = decisionObject.getDetails()
+ utils.log("DEBUG", "Obtained disposition from policy engine: " + disposition, isDebugLogEnabled)
+ }
+ else {
+ disposition = "Manual"
+ }
+ if (disposition == null) {
+ disposition = "Manual"
+ }
+ execution.setVariable("handlingCode", disposition)
+ execution.setVariable("validResponses", "rollback, abort, skip, retry")
+ utils.log("DEBUG", "Disposition: "+ disposition, isDebugLogEnabled)
+
+ } catch (BpmnError e) {
+ utils.log("DEBUG", "BPMN exception: " + e.errorMessage, isDebugLogEnabled)
+ throw e;
+ } catch (Exception ex){
+ msg = "Exception in queryPolicy " + ex.getMessage()
+ utils.log("DEBUG", msg, isDebugLogEnabled)
+ //exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+ }
+ utils.log("DEBUG"," ***** Exit queryPolicy of RainyDayHandler *****", isDebugLogEnabled)
+ }
+
+
+
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/SDNCAdapter.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/SDNCAdapter.groovy index 0f05a6b82c..d37e889f21 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/SDNCAdapter.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/SDNCAdapter.groovy @@ -50,7 +50,8 @@ public class SDNCAdapter extends AbstractServiceTaskProcessor { execution.setVariable("asynchronousResponseTimeout", false)
execution.setVariable("continueListening", false)
execution.setVariable("SDNCA_SuccessIndicator", false)
-
+ execution.setVariable("SDNCA_InterimNotify", false)
+
// Authorization Info
String basicAuthValue = execution.getVariable("URN_mso_adapters_po_auth")
utils.log("DEBUG", "Obtained BasicAuth userid password for sdnc adapter:" + basicAuthValue, isDebugEnabled)
@@ -145,8 +146,8 @@ public class SDNCAdapter extends AbstractServiceTaskProcessor { utils.logAudit("Outgoing SDNCAdapterRequest:\n" + sdncAdapterRequest)
execution.setVariable("sdncAdapterRequest", sdncAdapterRequest)
- utils.log("DEBUG", execution.getVariable("sdncAdapterRequest"), isDebugEnabled) - utils.log("DEBUG", execution.getVariable("URN_mso_adapters_sdnc_endpoint"), isDebugEnabled) + utils.log("DEBUG", execution.getVariable("sdncAdapterRequest"), isDebugEnabled)
+ utils.log("DEBUG", execution.getVariable("URN_mso_adapters_sdnc_endpoint"), isDebugEnabled)
}catch(Exception e){
utils.log("DEBUG", 'Internal Error occured during PreProcess Method: ' + e, isDebugEnabled)
exceptionUtil.buildAndThrowWorkflowException(execution, 9999, 'Internal Error occured during PreProcess Method') // TODO: what message and error code?
@@ -178,7 +179,7 @@ public class SDNCAdapter extends AbstractServiceTaskProcessor { utils.log("DEBUG","DECODED SDNCCallback RequestData is:\n" + callbackRequestData, isDebugEnabled)
String sdncAdapterWorkflowResponse ="""
- <sdncadapterworkflow:SDNCAdapterWorkflowResponse xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"> + <sdncadapterworkflow:SDNCAdapterWorkflowResponse xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1">
<sdncadapterworkflow:response-data>
${callbackHeader}
${callbackRequestData}
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/SDNCAdapterUtils.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/SDNCAdapterUtils.groovy index 4ca0370185..cd5828e14f 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/SDNCAdapterUtils.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/SDNCAdapterUtils.groovy @@ -438,6 +438,15 @@ class SDNCAdapterUtils { public String sdncTopologyRequestV2 (Execution execution, String requestXML, String serviceInstanceId, String callbackUrl, String action, String requestAction, String cloudRegionId, networkId, String queryAAIResponse, String additionalData) {
def utils=new MsoUtils()
+ // SNDC is expecting request Id for header as unique each call.
+ String hdrRequestId = ""
+ String testHdrRequestId = execution.getVariable("testMessageId") // for test purposes.
+ if (testHdrRequestId == null) {
+ hdrRequestId = UUID.randomUUID() // generate unique
+ } else {
+ hdrRequestId = testHdrRequestId
+ }
+
String requestId = ""
try {
requestId = execution.getVariable("mso-request-id")
@@ -457,7 +466,7 @@ class SDNCAdapterUtils { // Replace/Use the value of network-type from aai query (vs input) during Delete Network flows.
if (queryAAIResponse != null) {
- networkType = utils.getNodeText1(queryAAIResponse, "network-type")
+ networkType = utils.getNodeText1(queryAAIResponse, "network-type")
}
String serviceId = ""
@@ -486,17 +495,17 @@ class SDNCAdapterUtils { // get subscriber name
int subscriberNameStart = siRelatedLink.indexOf("customers/customer/")
int subscriberNameEnd = siRelatedLink.indexOf("/service-subscriptions/")
- subscriberName = siRelatedLink.substring(subscriberNameStart + 19, subscriberNameEnd)
+ subscriberName = siRelatedLink.substring(subscriberNameStart + 19, subscriberNameEnd)
subscriberName = UriUtils.decode(subscriberName,"UTF-8")
}
String content =
- """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://openecomp.com/mso/workflow/schema/v1"
- xmlns:sdncadapterworkflow="http://openecomp.com/mso/workflow/schema/v1"
- xmlns:sdncadapter="http://domain2.openecomp.com/workflow/sdnc/adapter/schema/v1"
- xmlns:ns5="http://openecomp.com/mso/request/types/v1">
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1">
<sdncadapter:RequestHeader>
- <sdncadapter:RequestId>${requestId}</sdncadapter:RequestId>
+ <sdncadapter:RequestId>${hdrRequestId}</sdncadapter:RequestId>
<sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>
<sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>
<sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
@@ -551,22 +560,21 @@ class SDNCAdapterUtils { String hdrRequestId = ""
String testHdrRequestId = execution.getVariable("testMessageId") // for test purposes.
if (testHdrRequestId == null) {
- hdrRequestId = UUID.randomUUID() // generate unique
+ hdrRequestId = UUID.randomUUID() // generate unique
} else {
- hdrRequestId = testHdrRequestId
+ hdrRequestId = testHdrRequestId
}
String requestId = ""
String testRequestId = execution.getVariable("testMessageId") // for test purposes.
if (testRequestId == null) {
- try {
- requestId = execution.getVariable("mso-request-id")
- } catch (Exception ex) {
- requestId = utils.getNodeText1(requestXML, "request-id")
- }
+ requestId = execution.getVariable("mso-request-id")
+ if (requestId == null) {
+ requestId = execution.getVariable("msoRequestId")
+ }
} else {
- requestId = testRequestId
- }
+ requestId = testRequestId
+ }
String aicCloudRegion = cloudRegionId
String tenantId = ""
@@ -621,32 +629,32 @@ class SDNCAdapterUtils { // network-information from 'networkModelInfo' // verify the DB Catalog response
String networkModelInfo = utils.getNodeXml(requestXML, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")
String modelInvariantUuid = utils.getNodeText1(networkModelInfo, "modelInvariantUuid") !=null ?
- utils.getNodeText1(networkModelInfo, "modelInvariantUuid") : ""
+ utils.getNodeText1(networkModelInfo, "modelInvariantUuid") : ""
String modelCustomizationUuid = utils.getNodeText1(networkModelInfo, "modelCustomizationUuid") !=null ?
- utils.getNodeText1(networkModelInfo, "modelCustomizationUuid") : ""
+ utils.getNodeText1(networkModelInfo, "modelCustomizationUuid") : ""
String modelUuid = utils.getNodeText1(networkModelInfo, "modelUuid") !=null ?
- utils.getNodeText1(networkModelInfo, "modelUuid") : ""
+ utils.getNodeText1(networkModelInfo, "modelUuid") : ""
String modelVersion = utils.getNodeText1(networkModelInfo, "modelVersion") !=null ?
- utils.getNodeText1(networkModelInfo, "modelVersion") : ""
+ utils.getNodeText1(networkModelInfo, "modelVersion") : ""
String modelName = utils.getNodeText1(networkModelInfo, "modelName") !=null ?
- utils.getNodeText1(networkModelInfo, "modelName") : ""
+ utils.getNodeText1(networkModelInfo, "modelName") : ""
// service-information from 'networkModelInfo' // verify the DB Catalog response
String serviceModelInfo = utils.getNodeXml(requestXML, "serviceModelInfo", false).replace("tag0:","").replace(":tag0","")
String serviceModelInvariantUuid = utils.getNodeText1(serviceModelInfo, "modelInvariantUuid") !=null ?
- utils.getNodeText1(serviceModelInfo, "modelInvariantUuid") : ""
+ utils.getNodeText1(serviceModelInfo, "modelInvariantUuid") : ""
String serviceModelUuid = utils.getNodeText1(serviceModelInfo, "modelUuid") !=null ?
- utils.getNodeText1(serviceModelInfo, "modelUuid") : ""
+ utils.getNodeText1(serviceModelInfo, "modelUuid") : ""
String serviceModelVersion = utils.getNodeText1(serviceModelInfo, "modelVersion") !=null ?
- utils.getNodeText1(serviceModelInfo, "modelVersion") : ""
+ utils.getNodeText1(serviceModelInfo, "modelVersion") : ""
String serviceModelName = utils.getNodeText1(serviceModelInfo, "modelName") !=null ?
- utils.getNodeText1(serviceModelInfo, "modelName") : ""
+ utils.getNodeText1(serviceModelInfo, "modelName") : ""
String content =
- """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://openecomp.com/mso/workflow/schema/v1"
- xmlns:sdncadapter="http://domain2.openecomp.com/workflow/sdnc/adapter/schema/v1"
- xmlns:sdncadapterworkflow="http://openecomp.com/mso/workflow/schema/v1">
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1"
+ xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1">
<sdncadapter:RequestHeader>
<sdncadapter:RequestId>${hdrRequestId}</sdncadapter:RequestId>
<sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>
@@ -774,8 +782,9 @@ class SDNCAdapterUtils { }
try{
- // if a response code is 0 or 200 then Success
- if (requestDataResponseCode == 200 || requestDataResponseCode == 0) {
+ execution.setVariable(prefix+'sdncRequestDataResponseCode', requestDataResponseCode.toString())
+ // if a response code is 0 or 2XX then Success
+ if ((requestDataResponseCode >= 200 && requestDataResponseCode <= 299) || requestDataResponseCode == 0) {
execution.setVariable(prefix+'sdncResponseSuccess', true)
taskProcessor.utils.log("DEBUG", "Setting sdncResponseSuccess to True ", isDebugLogEnabled)
taskProcessor.utils.log("DEBUG", "Exited ValidateSDNCResponse Method", isDebugLogEnabled)
@@ -892,7 +901,7 @@ class SDNCAdapterUtils { taskProcessor.utils.log("DEBUG", "intDataResponseCode " + intDataResponseCode , isDebugLogEnabled)
// if response-code is not Success (200, 201, etc) we need to throw an exception
- if (intDataResponseCode != 200 && intDataResponseCode != 0) {
+ if ((intDataResponseCode < 200 || intDataResponseCode > 299) && intDataResponseCode != 0) {
execution.setVariable(prefix+'ResponseCode', intDataResponseCode)
execution.setVariable("L3HLAB_rollback", true)
def msg = trinityExceptionUtil.mapSDNCAdapterExceptionToErrorResponse(response, execution)
@@ -927,29 +936,32 @@ class SDNCAdapterUtils { }
public String modelInfoToEcompModelInformation(String jsonModelInfo) {
- String modelInvariantId = jsonUtil.getJsonValue(jsonModelInfo, "modelInvariantId")
- String modelVersionId = jsonUtil.getJsonValue(jsonModelInfo, "modelVersionId")
- if (modelVersionId == null) {
- modelVersionId = ""
+ String modelInvariantUuid = jsonUtil.getJsonValue(jsonModelInfo, "modelInvariantUuid")
+ String modelUuid = jsonUtil.getJsonValue(jsonModelInfo, "modelUuid")
+ if (modelUuid == null) {
+ modelUuid = ""
}
String modelCustomizationUuid = jsonUtil.getJsonValue(jsonModelInfo, "modelCustomizationUuid")
String modelCustomizationString = ""
if (modelCustomizationUuid != null) {
modelCustomizationString = "<model-customization-uuid>${modelCustomizationUuid}</model-customization-uuid>"
- }
+ }
String modelVersion = jsonUtil.getJsonValue(jsonModelInfo, "modelVersion")
+ if (modelVersion == null) {
+ modelVersion = ""
+ }
String modelName = jsonUtil.getJsonValue(jsonModelInfo, "modelName")
String ecompModelInformation =
"""<ecomp-model-information>
- <model-invariant-uuid>${modelInvariantId}</model-invariant-uuid>
- <model-uuid>${modelVersionId}</model-uuid>
+ <model-invariant-uuid>${modelInvariantUuid}</model-invariant-uuid>
+ <model-uuid>${modelUuid}</model-uuid>
${modelCustomizationString}
<model-version>${modelVersion}</model-version>
<model-name>${modelName}</model-name>
</ecomp-model-information>"""
- return ecompModelInformation
- }
+ return ecompModelInformation
+ }
/**
* Decode XML - replace & < and > with '&', '<' and '>'
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/VfModuleBase.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/VfModuleBase.groovy index 7a97d5cd12..e0393cb206 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/VfModuleBase.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/VfModuleBase.groovy @@ -501,6 +501,319 @@ public abstract class VfModuleBase extends AbstractServiceTaskProcessor { return vfModuleParams
}
+
+
+ /*
+ * Parses VNF parameters passed in on the incoming requests and SDNC parameters returned from SDNC get response
+ * for both VNF and VF Module
+ * and puts them into the format expected by VNF adapter.
+ * @param vnfParamsMap - map of VNF parameters passed in the request body
+ * @param vnfSdncGetResponse - response string from SDNC GET VNF topology request
+ * @param vfmoduleSdncGetResponse - response string from SDNC GET VF Module topology request
+ * @param vnfId
+ * @param vnfName
+ * @param vfModuleId
+ * @param vfModuleName
+ * @param vfModuleIndex - can be null
+ * @return a String of key/value entries for vfModuleParams
+ */
+
+ protected String buildVfModuleParamsFromCombinedTopologies(Map<String, String> vnfParamsMap, String vnfSdncGetResponse, String vfmoduleSdncGetResponse, String vnfId, String vnfName,
+ String vfModuleId, String vfModuleName, String vfModuleIndex) {
+
+ // Set up initial parameters
+
+ Map<String, String> paramsMap = new HashMap<String, String>()
+
+ if (vfModuleIndex != null) {
+ paramsMap.put("vf_module_index", "${vfModuleIndex}")
+ }
+
+ // Add-on data
+ paramsMap.put("vnf_id", "${vnfId}")
+ paramsMap.put("vnf_name", "${vnfName}")
+ paramsMap.put("vf_module_id", "${vfModuleId}")
+ paramsMap.put("vf_module_name", "${vfModuleName}")
+
+ //Get SDNC Response Data for VNF
+
+ String vnfData = utils.getNodeXml(vnfSdncGetResponse, "response-data")
+ vnfData = vnfData.replaceAll("<", "<")
+ vnfData = vnfData.replaceAll(">", ">")
+
+ String vnfTopology = utils.getNodeXml(vnfData, "vnf-topology")
+ vnfTopology = utils.removeXmlPreamble(vnfTopology)
+ vnfTopology = utils.removeXmlNamespaces(vnfTopology)
+
+ InputSource sourceVnf = new InputSource(new StringReader(vnfData));
+ DocumentBuilderFactory docFactoryVnf = DocumentBuilderFactory.newInstance();
+ docFactoryVnf.setNamespaceAware(true)
+ DocumentBuilder docBuilderVnf = docFactoryVnf.newDocumentBuilder()
+ Document responseXmlVnf = docBuilderVnf.parse(sourceVnf)
+
+ // Availability Zones Data
+
+ NodeList aZonesList = responseXmlVnf.getElementsByTagNameNS("*", "availability-zones")
+ String aZonePosition = "0"
+ for (int z = 0; z < aZonesList.getLength(); z++) {
+ Node node = aZonesList.item(z)
+ if (node.getNodeType() == Node.ELEMENT_NODE) {
+ Element eElement = (Element) node
+ String aZoneValue = utils.getElementText(eElement, "availability-zone")
+ aZonePosition = z.toString()
+ paramsMap.put("availability_zone_${aZonePosition}", "${aZoneValue}")
+ }
+ }
+
+ // VNF Networks Data
+
+ StringBuilder sbNet = new StringBuilder()
+
+ NodeList vnfNetworkList = responseXmlVnf.getElementsByTagNameNS("*", "vnf-networks")
+ for (int x = 0; x < vnfNetworkList.getLength(); x++) {
+ Node node = vnfNetworkList.item(x)
+ if (node.getNodeType() == Node.ELEMENT_NODE) {
+ Element eElement = (Element) node
+ String vnfNetworkKey = utils.getElementText(eElement, "network-role")
+ String vnfNetworkNeutronIdValue = utils.getElementText(eElement, "neutron-id")
+ String vnfNetworkNetNameValue = utils.getElementText(eElement, "network-name")
+ String vnfNetworkSubNetIdValue = utils.getElementText(eElement, "subnet-id")
+ String vnfNetworkV6SubNetIdValue = utils.getElementText(eElement, "ipv6-subnet-id")
+ String vnfNetworkNetFqdnValue = utils.getElementText(eElement, "contrail-network-fqdn")
+ paramsMap.put("${vnfNetworkKey}_net_id", "${vnfNetworkNeutronIdValue}")
+ paramsMap.put("${vnfNetworkKey}_net_name", "${vnfNetworkNetNameValue}")
+ paramsMap.put("${vnfNetworkKey}_subnet_id", "${vnfNetworkSubNetIdValue}")
+ paramsMap.put("${vnfNetworkKey}_v6_subnet_id", "${vnfNetworkV6SubNetIdValue}")
+ paramsMap.put("${vnfNetworkKey}_net_fqdn", "${vnfNetworkNetFqdnValue}")
+
+ NodeList sriovVlanFilterList = eElement.getElementsByTagNameNS("*","sriov-vlan-filter-list")
+ StringBuffer sriovFilterBuf = new StringBuffer()
+ String values = ""
+ for(int i = 0; i < sriovVlanFilterList.getLength(); i++){
+ Node node1 = sriovVlanFilterList.item(i)
+ if (node1.getNodeType() == Node.ELEMENT_NODE) {
+ Element eElement1 = (Element) node1
+ String value = utils.getElementText(eElement1, "sriov-vlan-filter")
+ if (i != sriovVlanFilterList.getLength() - 1) {
+ values = sriovFilterBuf.append(value + ",")
+ }
+ else {
+ values = sriovFilterBuf.append(value);
+ }
+ }
+ }
+ if (!values.isEmpty()) {
+ paramsMap.put("${vnfNetworkKey}_ATT_VF_VLAN_FILTER", "${values}")
+ }
+ }
+ }
+
+ //Get SDNC Response Data for VF Module
+
+ String vfModuleData = utils.getNodeXml(vfmoduleSdncGetResponse, "response-data")
+ vfModuleData = vfModuleData.replaceAll("<", "<")
+ vfModuleData = vfModuleData.replaceAll(">", ">")
+
+ String vfModuleTopology = utils.getNodeXml(vfModuleData, "vf-module-topology")
+ vfModuleTopology = utils.removeXmlPreamble(vfModuleTopology)
+ vfModuleTopology = utils.removeXmlNamespaces(vfModuleTopology)
+ String vfModuleTopologyIdentifier = utils.getNodeXml(vfModuleTopology, "vf-module-topology-identifier")
+
+ InputSource sourceVfModule = new InputSource(new StringReader(vfModuleData));
+ DocumentBuilderFactory docFactoryVfModule = DocumentBuilderFactory.newInstance();
+ docFactoryVfModule.setNamespaceAware(true)
+ DocumentBuilder docBuilderVfModule = docFactoryVfModule.newDocumentBuilder()
+ Document responseXmlVfModule = docBuilderVfModule.parse(sourceVfModule)
+
+ // VMS Data
+
+ def key
+ def value
+ def networkKey
+ def networkValue
+ def floatingIPKey
+ def floatingIPKeyValue
+ def floatingIPV6Key
+ def floatingIPV6KeyValue
+ StringBuilder sb = new StringBuilder()
+
+ NodeList vmsList = responseXmlVfModule.getElementsByTagNameNS("*","vm")
+ for (int x = 0; x < vmsList.getLength(); x++) {
+ Node node = vmsList.item(x)
+ if (node.getNodeType() == Node.ELEMENT_NODE) {
+ Element eElement = (Element) node
+ key = utils.getElementText(eElement, "vm-type")
+ String values
+ String position = "0"
+ StringBuilder sb1 = new StringBuilder()
+ NodeList valueList = eElement.getElementsByTagNameNS("*","vm-names")
+ NodeList vmNetworksList = eElement.getElementsByTagNameNS("*","vm-networks")
+ for(int i = 0; i < valueList.getLength(); i++){
+ Node node1 = valueList.item(i)
+ if (node1.getNodeType() == Node.ELEMENT_NODE) {
+ Element eElement1 = (Element) node1
+ value = utils.getElementText(eElement1, "vm-name")
+ if (i != valueList.getLength() - 1) {
+ values = sb1.append(value + ",")
+ }
+ else {
+ values = sb1.append(value);
+ }
+ position = i.toString()
+ paramsMap.put("${key}_name_${position}", "${value}")
+ }
+ }
+ for(int n = 0; n < vmNetworksList.getLength(); n++){
+ String floatingIpKeyValueStr = ""
+ String floatingIpV6KeyValueStr = ""
+ Node nodeNetworkKey = vmNetworksList.item(n)
+ if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
+ Element eElementNetworkKey = (Element) nodeNetworkKey
+ String ipAddressValues
+ String ipV6AddressValues
+ String networkPosition = "0"
+ StringBuilder sb2 = new StringBuilder()
+ StringBuilder sb3 = new StringBuilder()
+ StringBuilder sb4 = new StringBuilder()
+ networkKey = utils.getElementText(eElementNetworkKey, "network-role")
+ floatingIPKey = key + '_' + networkKey + '_floating_ip'
+ floatingIPKeyValue = utils.getElementText(eElementNetworkKey, "floating-ip")
+ if(!floatingIPKeyValue.isEmpty()){
+ paramsMap.put("$floatingIPKey", "$floatingIPKeyValue")
+ }
+ floatingIPV6Key = key + '_' + networkKey + '_floating_v6_ip'
+ floatingIPV6KeyValue = utils.getElementText(eElementNetworkKey, "floating-ip-v6")
+ if(!floatingIPV6KeyValue.isEmpty()){
+ paramsMap.put("$floatingIPV6Key", "$floatingIPV6KeyValue")
+ }
+ NodeList networkIpsList = eElementNetworkKey.getElementsByTagNameNS("*","network-ips")
+ for(int a = 0; a < networkIpsList.getLength(); a++){
+ Node ipAddress = networkIpsList.item(a)
+ if (ipAddress.getNodeType() == Node.ELEMENT_NODE) {
+ Element eElementIpAddress = (Element) ipAddress
+ String ipAddressValue = utils.getElementText(eElementIpAddress, "ip-address")
+ if (a != networkIpsList.getLength() - 1) {
+ ipAddressValues = sb2.append(ipAddressValue + ",")
+ }
+ else {
+ ipAddressValues = sb2.append(ipAddressValue);
+ }
+ networkPosition = a.toString()
+ paramsMap.put("${key}_${networkKey}_ip_${networkPosition}", "${ipAddressValue}")
+ }
+ }
+
+ paramsMap.put("${key}_${networkKey}_ips", "${ipAddressValues}")
+
+ NodeList interfaceRoutePrefixesList = eElementNetworkKey.getElementsByTagNameNS("*","interface-route-prefixes")
+ String interfaceRoutePrefixValues = sb3.append("[")
+
+ for(int a = 0; a < interfaceRoutePrefixesList.getLength(); a++){
+ Node interfaceRoutePrefix = interfaceRoutePrefixesList.item(a)
+ if (interfaceRoutePrefix.getNodeType() == Node.ELEMENT_NODE) {
+ Element eElementInterfaceRoutePrefix = (Element) interfaceRoutePrefix
+ String interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix-cidr")
+ if (interfaceRoutePrefixValue == null || interfaceRoutePrefixValue.isEmpty()) {
+ interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix")
+ }
+ if (a != interfaceRoutePrefixesList.getLength() - 1) {
+ interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}" + ",")
+ }
+ else {
+ interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}")
+ }
+ }
+ }
+ interfaceRoutePrefixValues = sb3.append("]")
+ if (interfaceRoutePrefixesList.getLength() > 0) {
+ paramsMap.put("${key}_${networkKey}_route_prefixes", "${interfaceRoutePrefixValues}")
+ }
+
+ NodeList networkIpsV6List = eElementNetworkKey.getElementsByTagNameNS("*","network-ips-v6")
+ for(int a = 0; a < networkIpsV6List.getLength(); a++){
+ Node ipV6Address = networkIpsV6List.item(a)
+ if (ipV6Address.getNodeType() == Node.ELEMENT_NODE) {
+ Element eElementIpV6Address = (Element) ipV6Address
+ String ipV6AddressValue = utils.getElementText(eElementIpV6Address, "ip-address-ipv6")
+ if (a != networkIpsV6List.getLength() - 1) {
+ ipV6AddressValues = sb4.append(ipV6AddressValue + ",")
+ }
+ else {
+ ipV6AddressValues = sb4.append(ipV6AddressValue);
+ }
+ networkPosition = a.toString()
+ paramsMap.put("${key}_${networkKey}_v6_ip_${networkPosition}", "${ipV6AddressValue}")
+ }
+ }
+ paramsMap.put("${key}_${networkKey}_v6_ips", "${ipV6AddressValues}")
+ }
+ }
+ paramsMap.put("${key}_names", "${values}")
+ }
+ }
+ //SDNC Response Params
+ List<String> sdncResponseParamsToSkip = ["vnf_id", "vf_module_id", "vnf_name", "vf_module_name"]
+
+ String vnfParamsChildNodes = utils.getChildNodes(vnfData, "param")
+ if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){
+ // No SDNC params for VNF
+ }else{
+ NodeList paramsList = responseXmlVnf.getElementsByTagNameNS("*", "param")
+ for (int z = 0; z < paramsList.getLength(); z++) {
+ Node node = paramsList.item(z)
+ Element eElement = (Element) node
+ String vnfParameterName = utils.getElementText(eElement, "name")
+ if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
+ String vnfParameterValue = utils.getElementText(eElement, "value")
+ paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")
+ }
+ }
+ }
+
+ String vfModuleParamsChildNodes = utils.getChildNodes(vfModuleData, "param")
+ if(vfModuleParamsChildNodes == null || vfModuleParamsChildNodes.length() < 1){
+ // No SDNC params for VF Module
+ }else{
+ NodeList paramsList = responseXmlVfModule.getElementsByTagNameNS("*", "param")
+ for (int z = 0; z < paramsList.getLength(); z++) {
+ Node node = paramsList.item(z)
+ Element eElement = (Element) node
+ String vnfParameterName = utils.getElementText(eElement, "name")
+ if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
+ String vnfParameterValue = utils.getElementText(eElement, "value")
+ paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")
+ }
+ }
+ }
+
+ // Parameters received from the request should overwrite any parameters received from SDNC
+ if (vnfParamsMap != null) {
+ for (Map.Entry<String, String> entry : vnfParamsMap.entrySet()) {
+ String vnfKey = entry.getKey()
+ String vnfValue = entry.getValue()
+ paramsMap.put("$vnfKey", "$vnfValue")
+ }
+ }
+
+ StringBuilder sbParams = new StringBuilder()
+ def vfModuleParams = ""
+ for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
+ String paramsXml
+ String paramName = entry.getKey()
+ String paramValue = entry.getValue()
+ paramsXml =
+ """<entry>
+ <key>${paramName}</key>
+ <value>${paramValue}</value>
+ </entry>
+ """
+
+ vfModuleParams = sbParams.append(paramsXml)
+ }
+
+ return vfModuleParams
+
+ }
/*
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/VidUtils.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/VidUtils.groovy index 022a00c192..7ae5821c59 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/VidUtils.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/VidUtils.groovy @@ -99,7 +99,7 @@ class VidUtils { asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion
}
if (it.relatedInstance.modelInfo?.modelType == 'vnf') {
- modelCustomizationName = it.relatedInstance.modelInfo?.modelCustomizationName
+ modelCustomizationName = it.relatedInstance.modelInfo?.modelInstanceName
}
}
@@ -110,7 +110,7 @@ class VidUtils { if(userParams != null) {
userParamsNode = buildUserParams(userParams)
}
- def modelCustomizationId = requestMap.requestDetails?.modelInfo?.modelCustomizationId ?: ''
+ def modelCustomizationId = requestMap.requestDetails?.modelInfo?.modelCustomizationUuid ?: ''
def xmlReq = """
<volume-request xmlns="http://www.w3.org/2001/XMLSchema">
@@ -205,6 +205,7 @@ class VidUtils { * @return
* Note: See latest version: createXmlNetworkRequestInstance()
*/
+
public String createXmlNetworkRequestInfra(execution, def networkJsonIncoming) {
def requestId = execution.getVariable("requestId")
@@ -216,6 +217,11 @@ class VidUtils { try {
Map reqMap = jsonSlurper.parseText(networkJsonIncoming)
def instanceName = reqMap.requestDetails.requestInfo.instanceName
+ def modelCustomizationId = reqMap.requestDetails.modelInfo.modelCustomizationId
+ if (modelCustomizationId == null) {
+ modelCustomizationId = reqMap.requestDetails.modelInfo.modelCustomizationUuid !=null ?
+ reqMap.requestDetails.modelInfo.modelCustomizationUuid : ""
+ }
def modelName = reqMap.requestDetails.modelInfo.modelName
def lcpCloudRegionId = reqMap.requestDetails.cloudConfiguration.lcpCloudRegionId
def tenantId = reqMap.requestDetails.cloudConfiguration.tenantId
@@ -253,6 +259,7 @@ class VidUtils { <network-id>${networkId}</network-id>
<network-name>${instanceName}</network-name>
<network-type>${modelName}</network-type>
+ <modelCustomizationId>${modelCustomizationId}</modelCustomizationId>
<aic-cloud-region>${lcpCloudRegionId}</aic-cloud-region>
<tenant-id>${tenantId}</tenant-id>
<service-id>${serviceId}</service-id>
@@ -279,12 +286,11 @@ class VidUtils { */
public String createXmlNetworkRequestInstance(execution) {
- def networkModelVersionId = ""
+ def networkModelUuid = ""
def networkModelName = ""
- def networkModelType = ""
def networkModelVersion = ""
- def networkModelCustomizationId = ""
- def networkModelInvariantId = ""
+ def networkModelCustomizationUuid = ""
+ def networkModelInvariantUuid = ""
// verify the DB Catalog response JSON structure
def networkModelInfo = execution.getVariable("networkModelInfo")
@@ -293,23 +299,20 @@ class VidUtils { try {
Map modelMap = jsonSlurper.parseText(networkModelInfo)
if (modelMap != null) {
- if (networkModelInfo.contains("modelVersionId")) {
- networkModelVersionId = modelMap.modelVersionId !=null ? modelMap.modelVersionId : ""
+ if (networkModelInfo.contains("modelUuid")) {
+ networkModelUuid = modelMap.modelUuid !=null ? modelMap.modelUuid : ""
}
if (networkModelInfo.contains("modelName")) {
networkModelName = modelMap.modelName !=null ? modelMap.modelName : ""
}
- if (networkModelInfo.contains("modelType")) {
- networkModelType = modelMap.modelType !=null ? modelMap.modelType : ""
- }
if (networkModelInfo.contains("modelVersion")) {
networkModelVersion = modelMap.modelVersion !=null ? modelMap.modelVersion : ""
}
- if (networkModelInfo.contains("modelCustomizationId")) {
- networkModelCustomizationId = modelMap.modelCustomizationId !=null ? modelMap.modelCustomizationId : ""
+ if (networkModelInfo.contains("modelCustomizationUuid")) {
+ networkModelCustomizationUuid = modelMap.modelCustomizationUuid !=null ? modelMap.modelCustomizationUuid : ""
}
- if (networkModelInfo.contains("modelInvariantId")) {
- networkModelInvariantId = modelMap.modelInvariantId !=null ? modelMap.modelInvariantId : ""
+ if (networkModelInfo.contains("modelInvariantUuid")) {
+ networkModelInvariantUuid = modelMap.modelInvariantUuid !=null ? modelMap.modelInvariantUuid : ""
}
}
} catch (Exception ex) {
@@ -317,12 +320,11 @@ class VidUtils { }
}
- def serviceModelVersionId = ""
+ def serviceModelUuid = ""
def serviceModelName = ""
- def serviceModelType = ""
def serviceModelVersion = ""
- def serviceModelCustomizationId = ""
- def serviceModelInvariantId = ""
+ def serviceModelCustomizationUuid = ""
+ def serviceModelInvariantUuid = ""
// verify the DB Catalog response JSON structure
def serviceModelInfo = execution.getVariable("serviceModelInfo")
@@ -331,23 +333,20 @@ class VidUtils { try {
Map modelMap = jsonServiceSlurper.parseText(serviceModelInfo)
if (modelMap != null) {
- if (serviceModelInfo.contains("modelVersionId")) {
- serviceModelVersionId = modelMap.modelVersionId !=null ? modelMap.modelVersionId : ""
+ if (serviceModelInfo.contains("modelUuid")) {
+ serviceModelUuid = modelMap.modelUuid !=null ? modelMap.modelUuid : ""
}
if (serviceModelInfo.contains("modelName")) {
serviceModelName = modelMap.modelName !=null ? modelMap.modelName : ""
}
- if (serviceModelInfo.contains("modelType")) {
- serviceModelType = modelMap.modelType !=null ? modelMap.modelType : ""
- }
if (serviceModelInfo.contains("modelVersion")) {
serviceModelVersion = modelMap.modelVersion !=null ? modelMap.modelVersion : ""
}
- if (serviceModelInfo.contains("modelCustomizationId")) {
- serviceModelCustomizationId = modelMap.modelCustomizationId !=null ? modelMap.modelCustomizationId : ""
+ if (serviceModelInfo.contains("modelCustomizationUuid")) {
+ serviceModelCustomizationUuid = modelMap.modelCustomizationUuid !=null ? modelMap.modelCustomizationUuid : ""
}
- if (serviceModelInfo.contains("modelInvariantId")) {
- serviceModelInvariantId = modelMap.modelInvariantId !=null ? modelMap.modelInvariantId : ""
+ if (serviceModelInfo.contains("modelInvariantUuid")) {
+ serviceModelInvariantUuid = modelMap.modelInvariantUuid !=null ? modelMap.modelInvariantUuid : ""
}
}
} catch (Exception ex) {
@@ -399,7 +398,7 @@ class VidUtils { <network-inputs>
<network-id>${networkId}</network-id>
<network-name>${networkName}</network-name>
- <network-type>${networkModelType}</network-type>
+ <network-type>${networkModelName}</network-type>
<subscription-service-type>${subscriptionServiceType}</subscription-service-type>
<global-customer-id>${globalSubscriberId}</global-customer-id>
<aic-cloud-region>${aicCloudReqion}</aic-cloud-region>
@@ -409,19 +408,18 @@ class VidUtils { <failIfExist>${failIfExist}</failIfExist>
<networkModelInfo>
<modelName>${networkModelName}</modelName>
- <modelUuid>${networkModelVersionId}</modelUuid>
- <modelInvariantUuid>${networkModelInvariantId}</modelInvariantUuid>
+ <modelUuid>${networkModelUuid}</modelUuid>
+ <modelInvariantUuid>${networkModelInvariantUuid}</modelInvariantUuid>
<modelVersion>${networkModelVersion}</modelVersion>
- <modelCustomizationUuid>${networkModelCustomizationId}</modelCustomizationUuid>
- <modelType>${networkModelType}</modelType>
+ <modelCustomizationUuid>${networkModelCustomizationUuid}</modelCustomizationUuid>
</networkModelInfo>
<serviceModelInfo>
<modelName>${serviceModelName}</modelName>
- <modelUuid>${serviceModelVersionId}</modelUuid>
- <modelInvariantUuid>${serviceModelInvariantId}</modelInvariantUuid>
+ <modelUuid>${serviceModelUuid}</modelUuid>
+ <modelInvariantUuid>${serviceModelInvariantUuid}</modelInvariantUuid>
<modelVersion>${serviceModelVersion}</modelVersion>
- <modelCustomizationUuid>${serviceModelCustomizationId}</modelCustomizationUuid>
- <modelType>${serviceModelType}</modelType>
+ <modelCustomizationUuid>${serviceModelCustomizationUuid}</modelCustomizationUuid>
+
</serviceModelInfo>
<sdncVersion>${sdncVersion}</sdncVersion>
</network-inputs>
@@ -504,9 +502,9 @@ class VidUtils { def serviceId = requestMap.requestDetails?.requestParameters?.serviceId ?: ''
def aicCloudRegion = requestMap.requestDetails?.cloudConfiguration?.lcpCloudRegionId ?: ''
def tenantId = requestMap.requestDetails?.cloudConfiguration?.tenantId ?: ''
- def personaModelId = requestMap.requestDetails?.modelInfo?.modelInvariantId ?: ''
- def personaModelVersion = requestMap.requestDetails?.modelInfo?.modelVersion ?: ''
- def modelCustomizationId = requestMap.requestDetails?.modelInfo?.modelCustomizationId ?: ''
+ def personaModelId = requestMap.requestDetails?.modelInfo?.modelInvariantUuid ?: ''
+ def personaModelVersion = requestMap.requestDetails?.modelInfo?.modelUuid ?: ''
+ def modelCustomizationId = requestMap.requestDetails?.modelInfo?.modelCustomizationUuid ?: ''
def xmlReq = """
<vnf-request>
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/VnfAdapterRestV1.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/VnfAdapterRestV1.groovy index 0ec9c93862..93a3d2426c 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/VnfAdapterRestV1.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/VnfAdapterRestV1.groovy @@ -269,6 +269,7 @@ class VnfAdapterRestV1 extends AbstractServiceTaskProcessor { } catch (Exception e) {
String msg = 'Caught exception in ' + method + ": " + e
logError(msg)
+ logDebug(msg)
exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
}
}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/AbstractCallbackService.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/AbstractCallbackService.java index 214ae28b70..49e42acaf6 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/AbstractCallbackService.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/AbstractCallbackService.java @@ -108,7 +108,7 @@ public abstract class AbstractCallbackService { protected boolean correlate(String messageEventName, String correlationVariable,
String correlationValue, Map<String, Object> variables, String logMarker)
throws Exception {
-
+ try{
LOGGER.debug(logMarker + " Attempting to find process waiting"
+ " for " + messageEventName + " with " + correlationVariable
+ " = '" + correlationValue + "'");
@@ -240,6 +240,16 @@ public abstract class AbstractCallbackService { LOGGER.error(MessageEnum.BPMN_GENERAL_EXCEPTION, "BPMN", MsoLogger.getServiceName(),
MsoLogger.ErrorCode.UnknownError, msg, e);
}
+ } catch (Exception e) {
+ // This must be an exception from the flow itself. Log it, but don't
+ // report it back to the client.
+ String msg = "Caught " + e.getClass().getSimpleName() + " after receiving " + messageEventName
+ + " with " + correlationVariable + " = '" + correlationValue
+ + "': " + e;
+ LOGGER.debug(msg);
+ LOGGER.error(MessageEnum.BPMN_GENERAL_EXCEPTION, "BPMN CORRELATION ERROR -", MsoLogger.getServiceName(),
+ MsoLogger.ErrorCode.UnknownError, msg, e);
+ }
return true;
}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowAsyncResource.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowAsyncResource.java index 1bd1dfde70..382d2b7feb 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowAsyncResource.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowAsyncResource.java @@ -21,8 +21,6 @@ package org.openecomp.mso.bpmn.common.workflow.service; import java.util.HashMap;
import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
import java.util.UUID;
import javax.ws.rs.Consumes;
@@ -33,6 +31,7 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.Response;
import org.camunda.bpm.engine.ProcessEngineServices;
+import org.camunda.bpm.engine.ProcessEngines;
import org.camunda.bpm.engine.RuntimeService;
import org.camunda.bpm.engine.runtime.ProcessInstance;
import org.camunda.bpm.engine.variable.impl.VariableMapImpl;
@@ -53,15 +52,15 @@ import org.slf4j.MDC; * For asynchronous process - the activity may send a acknowledgement response and then proceed further on executing the process
*/
@Path("/async")
-public abstract class WorkflowAsyncResource { +public class WorkflowAsyncResource {
- private static final WorkflowContextHolder contextHolder = WorkflowContextHolder.getInstance();
- protected Optional<ProcessEngineServices> pes4junit = Optional.empty();
+ private WorkflowContextHolder contextHolder = WorkflowContextHolder.getInstance();
+ protected ProcessEngineServices pes4junit = null;
- private final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL);
+ private MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL);
private static final String logMarker = "[WRKFLOW-RESOURCE]";
- private static final long DEFAULT_WAIT_TIME = 30000; //default wait time
+ private static final int DEFAULT_WAIT_TIME = 30000; //default wait time
/**
* Asynchronous JAX-RS method that starts a process instance.
@@ -76,6 +75,7 @@ public abstract class WorkflowAsyncResource { public void startProcessInstanceByKey(final @Suspend(180000) AsynchronousResponse asyncResponse,
@PathParam("processKey") String processKey, VariableMapImpl variableMap) {
+ WorkflowResponse response = new WorkflowResponse();
long startTime = System.currentTimeMillis();
Map<String, Object> inputVariables = null;
WorkflowContext workflowContext = null;
@@ -107,7 +107,6 @@ public abstract class WorkflowAsyncResource { }
msoLogger.debug(logMarker + "Exception in startProcessInstance by key");
- WorkflowResponse response = new WorkflowResponse();
response.setMessage("Fail" );
response.setResponse("Error occurred while executing the process: " + e);
response.setMessageCode(500);
@@ -206,28 +205,29 @@ public abstract class WorkflowAsyncResource { return contextHolder.processCallback(processKey, processInstanceId, requestId, callbackResponse);
}
- private static String getOrCreate(Map<String, Object> inputVariables, String key) {
- String value = Objects.toString(inputVariables.get(key), null);
- if (value == null) {
- value = UUID.randomUUID().toString();
- inputVariables.put(key, value);
- }
- return value;
- }
-
// Note: the business key is used to identify the process in unit tests
- private static String getBusinessKey(Map<String, Object> inputVariables) {
- return getOrCreate(inputVariables, "mso-business-key");
+ private String getBusinessKey(Map<String, Object> inputVariables) {
+ Object businessKey = inputVariables.get("mso-business-key");
+ if (businessKey == null ) {
+ businessKey = UUID.randomUUID().toString();
+ inputVariables.put("mso-business-key", businessKey);
+ }
+ return businessKey.toString();
}
- private static String getRequestId(Map<String, Object> inputVariables) {
- return getOrCreate(inputVariables, "mso-request-id");
+ private String getRequestId(Map<String, Object> inputVariables) {
+ Object requestId = inputVariables.get("mso-request-id");
+ if (requestId == null ) {
+ requestId = UUID.randomUUID().toString();
+ inputVariables.put("mso-request-id", requestId);
+ }
+ return requestId.toString();
}
private long getWaitTime(Map<String, Object> inputVariables)
{
-
- String timeout = Objects.toString(inputVariables.get("mso-service-request-timeout"), null);
+ String timeout = inputVariables.get("mso-service-request-timeout") == null
+ ? null : inputVariables.get("mso-service-request-timeout").toString();
if (timeout != null) {
try {
@@ -252,7 +252,7 @@ public abstract class WorkflowAsyncResource { }
- private static void setLogContext(String processKey,
+ private void setLogContext(String processKey,
Map<String, Object> inputVariables) {
MsoLogger.setServiceName("MSO." + processKey);
if (inputVariables != null) {
@@ -260,24 +260,32 @@ public abstract class WorkflowAsyncResource { }
}
- private static String getKeyValueFromInputVariables(Map<String,Object> inputVariables, String key) {
+ private String getKeyValueFromInputVariables(Map<String,Object> inputVariables, String key) {
if (inputVariables == null) return "";
- return Objects.toString(inputVariables.get(key), "N/A");
+ Object requestId = inputVariables.get(key);
+ if (requestId != null) return requestId.toString();
+ return "N/A";
}
private boolean isProcessEnded(String processInstanceId) {
ProcessEngineServices pes = getProcessEngineServices();
- return pes.getRuntimeService().createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult() == null;
+ return pes.getRuntimeService().createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult() == null ? true : false ;
}
- protected abstract ProcessEngineServices getProcessEngineServices(); + protected ProcessEngineServices getProcessEngineServices() {
+ if (pes4junit == null) {
+ return ProcessEngines.getDefaultProcessEngine();
+ } else {
+ return pes4junit;
+ }
+ }
public void setProcessEngineServices4junit(ProcessEngineServices pes) {
- pes4junit = Optional.ofNullable(pes);
+ pes4junit = pes;
}
- private static Map<String, Object> getInputVariables(VariableMapImpl variableMap) {
+ private Map<String, Object> getInputVariables(VariableMapImpl variableMap) {
Map<String, Object> inputVariables = new HashMap<String,Object>();
@SuppressWarnings("unchecked")
Map<String, Object> vMap = (Map<String, Object>) variableMap.get("variables");
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowContext.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowContext.java index 93aa15c59a..3d7e333fdf 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowContext.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowContext.java @@ -72,7 +72,7 @@ public class WorkflowContext implements Delayed { @Override
public long getDelay(TimeUnit unit) {
// 0 or negative means this object is considered to be expired
- return unit.convert(startTime + timeout - System.currentTimeMillis(), TimeUnit.MILLISECONDS);
+ return unit.convert(startTime + timeout - System.currentTimeMillis(), unit);
}
/**
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowResource.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowResource.java index a9a9f4b12d..8d049634c7 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowResource.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowResource.java @@ -255,7 +255,11 @@ public class WorkflowResource { */
private boolean isProcessEnded(String processInstanceId) {
ProcessEngineServices pes = getProcessEngineServices();
- return pes.getRuntimeService().createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult() == null ? true : false ;
+ try {
+ return pes.getRuntimeService().createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult() == null ? true : false ;
+ } catch (Exception e) {
+ return true;
+ }
}
private void processResponseMap(WorkflowResponse workflowResponse, Map<String, Object> responseMap) {
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowResourceApplication.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowResourceApplication.java index d6c9b51cd6..89f9f28901 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowResourceApplication.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowResourceApplication.java @@ -41,7 +41,7 @@ public class WorkflowResourceApplication extends Application { public WorkflowResourceApplication() {
singletons.add(new WorkflowResource());
- singletons.add(new WorkflowAsyncCommonResource());
+ singletons.add(new WorkflowAsyncResource());
singletons.add(new WorkflowMessageResource());
}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIClientResponseExceptionMapper.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIClientResponseExceptionMapper.java new file mode 100644 index 0000000000..3189d4467d --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIClientResponseExceptionMapper.java @@ -0,0 +1,71 @@ +package org.openecomp.mso.client.aai; + +import java.io.IOException; + +import javax.annotation.Priority; +import javax.ws.rs.BadRequestException; +import javax.ws.rs.ForbiddenException; +import javax.ws.rs.InternalServerErrorException; +import javax.ws.rs.NotAcceptableException; +import javax.ws.rs.NotAllowedException; +import javax.ws.rs.NotAuthorizedException; +import javax.ws.rs.NotFoundException; +import javax.ws.rs.NotSupportedException; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.client.ClientRequestContext; +import javax.ws.rs.client.ClientResponseContext; +import javax.ws.rs.client.ClientResponseFilter; +import javax.ws.rs.core.Response; +import javax.ws.rs.ext.Provider; + +import org.openecomp.mso.client.aai.entities.AAIError; + +import com.fasterxml.jackson.databind.ObjectMapper; + +@Provider +@Priority(value = 1) +public class AAIClientResponseExceptionMapper implements ClientResponseFilter { + + @Override + public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException { + if (responseContext.getStatus() != Response.Status.OK.getStatusCode() && responseContext.hasEntity()) { + AAIError error = new ObjectMapper().readValue(responseContext.getEntityStream(), AAIError.class); + String message = error.getRequestError().getServiceException().getText(); + + Response.Status status = Response.Status.fromStatusCode(responseContext.getStatus()); + WebApplicationException webAppException; + switch (status) { + case BAD_REQUEST: + webAppException = new BadRequestException(message); + break; + case UNAUTHORIZED: + webAppException = new NotAuthorizedException(message); + break; + case FORBIDDEN: + webAppException = new ForbiddenException(message); + break; + case NOT_FOUND: + webAppException = new NotFoundException(message); + break; + case METHOD_NOT_ALLOWED: + webAppException = new NotAllowedException(message); + break; + case NOT_ACCEPTABLE: + webAppException = new NotAcceptableException(message); + break; + case UNSUPPORTED_MEDIA_TYPE: + webAppException = new NotSupportedException(message); + break; + case INTERNAL_SERVER_ERROR: + webAppException = new InternalServerErrorException(message); + break; + case SERVICE_UNAVAILABLE: + webAppException = new WebApplicationException(message); + break; + default: + webAppException = new WebApplicationException(message); + } + throw webAppException; + } + } +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAICommonObjectMapperProvider.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAICommonObjectMapperProvider.java new file mode 100644 index 0000000000..83435a8c69 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAICommonObjectMapperProvider.java @@ -0,0 +1,49 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - MSO + * ================================================================================ + * 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.mso.client.aai; + +import javax.ws.rs.ext.ContextResolver; +import javax.ws.rs.ext.Provider; + +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; + +@Provider +public class AAICommonObjectMapperProvider implements ContextResolver<ObjectMapper> { + + final ObjectMapper mapper; + + public AAICommonObjectMapperProvider() { + mapper = new ObjectMapper(); + mapper.setSerializationInclusion(Include.NON_NULL); + mapper.enable(MapperFeature.USE_ANNOTATIONS); + mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false); + mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, false); + } + + @Override + public ObjectMapper getContext(Class<?> type) { + return mapper; + } +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIQueryObjectMapperProvider.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIQueryObjectMapperProvider.java new file mode 100644 index 0000000000..a6d693b02a --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIQueryObjectMapperProvider.java @@ -0,0 +1,47 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - MSO + * ================================================================================ + * 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.mso.client.aai; + +import javax.ws.rs.ext.Provider; + +import com.fasterxml.jackson.databind.AnnotationIntrospector; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector; +import com.fasterxml.jackson.databind.type.TypeFactory; +import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector; + +@Provider +public class AAIQueryObjectMapperProvider extends AAICommonObjectMapperProvider { + + public AAIQueryObjectMapperProvider() { + super(); + AnnotationIntrospector aiJaxb = new JaxbAnnotationIntrospector(TypeFactory.defaultInstance()); + AnnotationIntrospector aiJackson = new JacksonAnnotationIntrospector(); + // first Jaxb, second Jackson annotations + mapper.setAnnotationIntrospector(AnnotationIntrospector.pair(aiJaxb, aiJackson)); + + } + + @Override + public ObjectMapper getContext(Class<?> type) { + return mapper; + } +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowAsyncCommonResource.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIResourcesObjectMapperProvider.java index f3ad810a3e..339fea5067 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/workflow/service/WorkflowAsyncCommonResource.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIResourcesObjectMapperProvider.java @@ -1,32 +1,38 @@ -/*-
- * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
- * ================================================================================
- * 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.mso.bpmn.common.workflow.service;
-
-import org.camunda.bpm.engine.ProcessEngineServices;
-import org.camunda.bpm.engine.ProcessEngines;
-
-
-public class WorkflowAsyncCommonResource extends WorkflowAsyncResource {
-
- protected ProcessEngineServices getProcessEngineServices() {
- return pes4junit.orElse(ProcessEngines.getProcessEngine("common"));
- }
-}
+/*- + * ============LICENSE_START======================================================= + * OPENECOMP - MSO + * ================================================================================ + * 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.mso.client.aai; + +import javax.ws.rs.ext.Provider; + +import com.fasterxml.jackson.databind.ObjectMapper; + +@Provider +public class AAIResourcesObjectMapperProvider extends AAICommonObjectMapperProvider { + + public AAIResourcesObjectMapperProvider() { + super(); + } + + @Override + public ObjectMapper getContext(Class<?> type) { + return mapper; + } +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIRestClient.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIRestClient.java new file mode 100644 index 0000000000..8d96437e68 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIRestClient.java @@ -0,0 +1,24 @@ +package org.openecomp.mso.client.aai; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.List; + +import org.openecomp.aai.domain.yang.GenericVnf; +import org.openecomp.aai.domain.yang.Pserver; +import org.openecomp.aai.domain.yang.Pservers; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; + +public interface AAIRestClient { + + Pservers getPhysicalServers(String hostName, String uuid); + + List<Pserver> getPhysicalServerByVnfId(String vnfId, String transactionLoggingUuid) throws UnsupportedEncodingException, JsonParseException, JsonMappingException, IOException; + + void updateMaintenceFlag(String vnfId,boolean inMaint, String transactionLoggingUuid) throws Exception; + + void updateMaintenceFlagVnfId(String vnfId, boolean inMaint, String transactionLoggingUuid) throws Exception; + + GenericVnf getVnfByName(String vnfId, String transactionLoggingUuid) throws Exception; +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIRestClientImpl.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIRestClientImpl.java new file mode 100644 index 0000000000..99024490a3 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIRestClientImpl.java @@ -0,0 +1,167 @@ +package org.openecomp.mso.client.aai; + +import java.io.File; +import java.io.IOException; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.logging.Logger; + +import javax.net.ssl.SSLContext; +import javax.ws.rs.client.Client; +import javax.ws.rs.client.ClientBuilder; +import javax.ws.rs.client.Entity; +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.MediaType; + +import org.openecomp.aai.domain.yang.GenericVnf; +import org.openecomp.aai.domain.yang.GenericVnfs; +import org.openecomp.aai.domain.yang.Pserver; +import org.openecomp.aai.domain.yang.Pservers; +import org.openecomp.mso.bpmn.core.PropertyConfiguration; +import org.openecomp.mso.client.aai.entities.CustomQuery; +import org.openecomp.mso.client.aai.entities.Results; +import org.openecomp.mso.logger.MsoLogger; +import org.openecomp.mso.properties.MsoPropertiesFactory; +import org.springframework.stereotype.Service; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +@Service +public class AAIRestClientImpl implements AAIRestClient { + + private final WebTarget webTarget; + + private static MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory(); + + private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.GENERAL); + + private static final String ENDPOINT_VERSION = "v10"; + private static final String ENDPOINT_GET_ALL = ENDPOINT_VERSION + "/cloud-infrastructure/pservers"; + private static final String ENDPOINT_GET_ALL_VNFS = ENDPOINT_VERSION + "/network/generic-vnfs"; + private static final String ENDPOINT_CUSTOM_QUERY = ENDPOINT_VERSION + "/query"; + private static final String PSERVER_BY_VNF_QUERY = "g.V().has('aai-node-type', 'generic-vnf').has('vnf-name','USAUTOUFTIL2001UJDM02').out('runsOnPserver').has('aai-node-type', 'pserver')"; + private static final String PSERVER_VNF_QUERY = "pservers-fromVnf"; + private static final String GENERIC_VNF_PATH = ENDPOINT_VERSION + "/network/generic-vnfs/generic-vnf"; + private static final String SERVICE_TOPOLOGY_BY_SERVICE_INSTANCE_ID = "store(‘x’).union(__.in(‘subscribesTo’).has(‘aai-node-type’,’customer’).store(‘x’),__.out(‘uses’).has(‘aai-node-type’,’allotted-resource’).store(‘x’),__.in(‘hasInstance’).has(‘aai-node-type’,’generic-vnf’).store(‘x’).union(" + + ".out(‘has’).has(‘aai-node-type’,’vf-module’).store(‘x’),out(‘uses’).has(‘aai-node-type’,’volume-group’).store(‘x’)," + + ".out(‘hasLInterface’).has(‘aai-node-type’,’l-interface’).union(" + + ".out(‘hasIpAddress’).has(‘aai-node-type’,’l3-interface-ipv4-address’).store(‘x’).out(‘isMemberOf’).has(‘aai-node-type’,’l3-network’).store(‘x’)," + + ".out(‘hasIpAddress’).has(‘aai-node-type’,’l3-interface-ipv6-address’).store(‘x’).out(‘isMemberOf’).has(‘aai-node-type’,’l3-network’).store(‘x’)" + + ")," + ".out(‘runsOnVserver’).has(‘aai-node-type’,’vserver’).store(‘x’).union(" + + ".in(‘owns’).has(‘aai-node-type’,’tenant’).store(‘x’).in(‘has’).has(‘aai-node-type’,’cloud-region’).store(‘x’)," + + ".out(‘runsOnPserver’).has(‘aai-node-type’,’pserver’).store(‘x’)," + + ".out(‘hasLInterface’).has(‘aai-node-type’,’l-interface’).union(" + + ".out(‘hasIpAddress’).has(‘aai-node-type’,’l3-interface-ipv4-address’).store(‘x’).out(‘isMemberOf’).has(‘aai-node-type’,’l3-network’).store(‘x’)," + + ".out(‘hasIpAddress’).has(‘aai-node-type’,’l3-interface-ipv6-address’).store(‘x’).out(‘isMemberOf’).has(‘aai-node-type’,’l3-network’).store(‘x’)" + + ")" + ")" + ")" + ").cap(‘x’).unfold().dedup()"; + + public AAIRestClientImpl() throws NoSuchAlgorithmException { + + Logger logger = Logger.getLogger(getClass().getName()); + Map<String, String> properties = PropertyConfiguration.getInstance().getProperties("mso.bpmn.urn.properties"); + Client client = this.getSSLClient(); + webTarget = client.register(logger).register(new AAIClientResponseExceptionMapper()) + .target(properties.get("aai.endpoint") + "/aai"); + } + + public AAIRestClientImpl(final String host) throws NoSuchAlgorithmException { + Logger logger = Logger.getLogger(getClass().getName()); + Client client = this.getSSLClient(); + Map<String, String> properties = PropertyConfiguration.getInstance().getProperties("mso.bpmn.urn.properties"); + webTarget = client.register(logger).register(new AAIClientResponseExceptionMapper()).target(host + "/aai"); + } + + @Override + public Pservers getPhysicalServers(String hostName, String uuid) { + return webTarget.register(AAIResourcesObjectMapperProvider.class).path(ENDPOINT_GET_ALL).request() + .header("X-FromAppId", "MSO").header("X-TransactionId", uuid) + .header("Content-Type", MediaType.APPLICATION_JSON_TYPE).accept(MediaType.APPLICATION_JSON_TYPE).get() + .readEntity(Pservers.class); + } + + @Override + public List<Pserver> getPhysicalServerByVnfId(String vnfId, String transactionLoggingUuid) + throws JsonParseException, JsonMappingException, IOException { + List<String> startNodes = new ArrayList<String>(); + startNodes.add("network/generic-vnfs/generic-vnf/" + vnfId); + String jsonInput = webTarget.register(AAIQueryObjectMapperProvider.class).path(ENDPOINT_CUSTOM_QUERY) + .queryParam("format", "resource").request().header("X-FromAppId", "MSO") + .header("X-TransactionId", transactionLoggingUuid) + .header("Content-Type", MediaType.APPLICATION_JSON_TYPE).accept(MediaType.APPLICATION_JSON_TYPE) + .put(Entity.entity(new CustomQuery(startNodes, PSERVER_VNF_QUERY), MediaType.APPLICATION_JSON)) + .readEntity(String.class); + + + return this.getListOfPservers(jsonInput); + } + + protected List<Pserver> getListOfPservers(String jsonInput) throws JsonParseException, JsonMappingException, IOException + { + ObjectMapper mapper = new AAIQueryObjectMapperProvider().getContext(Object.class); + Results<Map<String, Pserver>> resultsFromJson = mapper.readValue(jsonInput, + new TypeReference<Results<Map<String, Pserver>>>() { + }); + List<Pserver> results = new ArrayList<>(); + for (Map<String, Pserver> m : resultsFromJson.getResult()) { + results.add(m.get("pserver")); + } + return results; + } + + protected List<Pserver> getListOfPservers(File jsonInput) throws JsonParseException, JsonMappingException, IOException + { + ObjectMapper mapper = new AAIQueryObjectMapperProvider().getContext(Object.class); + Results<Map<String, Pserver>> resultsFromJson = mapper.readValue(jsonInput, + new TypeReference<Results<Map<String, Pserver>>>() { + }); + List<Pserver> results = new ArrayList<>(); + for (Map<String, Pserver> m : resultsFromJson.getResult()) { + results.add(m.get("pserver")); + } + return results; + } + + @Override + public void updateMaintenceFlag(String vnfName, boolean inMaint, String transactionLoggingUuid) throws Exception { + GenericVnfs genericVnfs = webTarget.register(AAIResourcesObjectMapperProvider.class).path(ENDPOINT_GET_ALL_VNFS) + .queryParam("vnf-name", vnfName).request().header("X-FromAppId", "MSO") + .header("X-TransactionId", transactionLoggingUuid).header("Content-Type", "application/json") + .accept(MediaType.APPLICATION_JSON_TYPE).get().readEntity(GenericVnfs.class); + + if (genericVnfs.getGenericVnf().size() > 1) + throw new Exception("Multiple Generic Vnfs Returned"); + + GenericVnf genericVnf = genericVnfs.getGenericVnf().get(0); + updateMaintenceFlagVnfId(genericVnf.getVnfId(), inMaint, transactionLoggingUuid); + } + + @Override + public void updateMaintenceFlagVnfId(String vnfId, boolean inMaint, String transactionLoggingUuid) + throws Exception { + GenericVnf genericVnf = new GenericVnf(); + genericVnf.setInMaint(inMaint); + webTarget.register(AAIResourcesObjectMapperProvider.class).path(GENERIC_VNF_PATH + "/" + vnfId).request() + .header("X-FromAppId", "MSO").header("X-TransactionId", transactionLoggingUuid) + .header("Content-Type", "application/merge-patch+json") + .header("Accept", MediaType.APPLICATION_JSON_TYPE).header("X-HTTP-Method-Override", "PATCH") + .put(Entity.entity(genericVnf, MediaType.valueOf("application/merge-patch+json"))); + } + + @Override + public GenericVnf getVnfByName(String vnfId, String transactionLoggingUuid) throws Exception { + return webTarget.register(AAIResourcesObjectMapperProvider.class).path(GENERIC_VNF_PATH + "/" + vnfId).request() + .header("X-FromAppId", "MSO").header("X-TransactionId", transactionLoggingUuid) + .header("Content-Type", "application/json").accept(MediaType.APPLICATION_JSON_TYPE).get() + .readEntity(GenericVnf.class); + } + + protected Client getSSLClient() throws NoSuchAlgorithmException { + return ClientBuilder.newBuilder().sslContext(SSLContext.getDefault()).build(); + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIUpdator.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIUpdator.java new file mode 100644 index 0000000000..787158f8c6 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIUpdator.java @@ -0,0 +1,11 @@ +package org.openecomp.mso.client.aai; + +import java.io.IOException; + +public interface AAIUpdator { + + void updateVnfToLocked(String vnfName, String uuid) throws IOException, Exception; + + void updateVnfToUnLocked(String vnfName, String uuid) throws IOException, Exception; + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIUpdatorImpl.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIUpdatorImpl.java new file mode 100644 index 0000000000..50b3e61d96 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIUpdatorImpl.java @@ -0,0 +1,29 @@ +package org.openecomp.mso.client.aai; + +import org.springframework.beans.factory.annotation.Autowired; + +public class AAIUpdatorImpl implements AAIUpdator { + + @Autowired + protected AAIRestClient client; + + public AAIRestClient getClient() { + return client; + } + + + public void setClient(AAIRestClient client) { + this.client = client; + } + + @Override + public void updateVnfToLocked(String vnfId, String uuid) throws Exception { + client.updateMaintenceFlagVnfId(vnfId, true, uuid); + } + + @Override + public void updateVnfToUnLocked(String vnfId, String uuid) throws Exception { + client.updateMaintenceFlagVnfId(vnfId, false, uuid); + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIValidator.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIValidator.java new file mode 100644 index 0000000000..5ec2dd679d --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIValidator.java @@ -0,0 +1,12 @@ +package org.openecomp.mso.client.aai; + +import java.io.IOException; + +public interface AAIValidator { + + boolean isPhysicalServerLocked(String hostName, String transactionLoggingUuid) throws IOException; + + boolean isVNFLocked(String vnfId, String transactionLoggingUuid) throws IOException, Exception; + + +}
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIValidatorImpl.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIValidatorImpl.java new file mode 100644 index 0000000000..be39c5fb8b --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIValidatorImpl.java @@ -0,0 +1,51 @@ +package org.openecomp.mso.client.aai; + +import java.io.IOException; +import java.util.List; + +import org.openecomp.aai.domain.yang.GenericVnf; +import org.openecomp.aai.domain.yang.Pserver; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + + + +@Service +public class AAIValidatorImpl implements AAIValidator { + + + @Autowired + protected AAIRestClient client; + + public AAIRestClient getClient() { + return client; + } + + + public void setClient(AAIRestClient client) { + this.client = client; + } + + @Override + public boolean isPhysicalServerLocked(String vnfId, String transactionLoggingUuid) throws IOException { + List<Pserver> pservers; + boolean isLocked = false; + pservers = client.getPhysicalServerByVnfId(vnfId, transactionLoggingUuid); + for (Pserver pserver : pservers) + if (pserver.isInMaint()) + isLocked = true; + + return isLocked; + } + + @Override + public boolean isVNFLocked(String vnfId, String transactionLoggingUuid) throws Exception { + boolean isLocked = false; + GenericVnf genericVnf = client.getVnfByName(vnfId, transactionLoggingUuid); + if (genericVnf.isInMaint()) + isLocked = true; + + return isLocked; + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/AAIEntity.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/AAIEntity.java new file mode 100644 index 0000000000..a34b96efce --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/AAIEntity.java @@ -0,0 +1,5 @@ +package org.openecomp.mso.client.aai.entities; + +public class AAIEntity { + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/AAIError.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/AAIError.java new file mode 100644 index 0000000000..900587224f --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/AAIError.java @@ -0,0 +1,27 @@ + +package org.openecomp.mso.client.aai.entities; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "requestError" +}) +public class AAIError { + + @JsonProperty("requestError") + private RequestError requestError; + + @JsonProperty("requestError") + public RequestError getRequestError() { + return requestError; + } + + @JsonProperty("requestError") + public void setRequestError(RequestError requestError) { + this.requestError = requestError; + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/CustomQuery.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/CustomQuery.java new file mode 100644 index 0000000000..fb37899e0d --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/CustomQuery.java @@ -0,0 +1,48 @@ +package org.openecomp.mso.client.aai.entities; + +import java.io.UnsupportedEncodingException; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonInclude; + + +@JsonInclude(JsonInclude.Include.NON_NULL) +public class CustomQuery { + + List<String> start; + + public String getGremlin() { + return gremlin; + } + + public void setGremlin(String gremlin) { + this.gremlin = gremlin; + } + String query; + String gremlin; + + public CustomQuery(List<String>start, String query){ + this.start=start; + this.query= "query/" + query; + } + + public CustomQuery(String gremlin) throws UnsupportedEncodingException{ + this.gremlin=gremlin; + } + + public List<String> getStart() { + return start; + } + + public void setStart(List<String> start) { + this.start = start; + } + + public String getQuery() { + return query; + } + + public void setQuery(String query) { + this.query = query; + } +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/RequestError.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/RequestError.java new file mode 100644 index 0000000000..525d983940 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/RequestError.java @@ -0,0 +1,27 @@ + +package org.openecomp.mso.client.aai.entities; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "serviceException" +}) +public class RequestError { + + @JsonProperty("serviceException") + private ServiceException serviceException; + + @JsonProperty("serviceException") + public ServiceException getServiceException() { + return serviceException; + } + + @JsonProperty("serviceException") + public void setServiceException(ServiceException serviceException) { + this.serviceException = serviceException; + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/Results.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/Results.java new file mode 100644 index 0000000000..384ac25246 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/Results.java @@ -0,0 +1,33 @@ +package org.openecomp.mso.client.aai.entities; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "results" +}) +@XmlRootElement(name = "results") +public class Results<T> { + + @XmlElement(name="results") + protected List<T> result; + + public List<T> getResult() { + if (result == null) { + result = new ArrayList<T>(); + } + return this.result; + } + + public void setResult(List<T> result) { + this.result=result; + } +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/ServiceException.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/ServiceException.java new file mode 100644 index 0000000000..0ea3ebb061 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/entities/ServiceException.java @@ -0,0 +1,54 @@ + +package org.openecomp.mso.client.aai.entities; + +import java.util.List; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "messageId", + "text", + "variables" +}) +public class ServiceException { + + @JsonProperty("messageId") + private String messageId; + @JsonProperty("text") + private String text; + @JsonProperty("variables") + private List<String> variables = null; + + @JsonProperty("messageId") + public String getMessageId() { + return messageId; + } + + @JsonProperty("messageId") + public void setMessageId(String messageId) { + this.messageId = messageId; + } + + @JsonProperty("text") + public String getText() { + return text; + } + + @JsonProperty("text") + public void setText(String text) { + this.text = text; + } + + @JsonProperty("variables") + public List<String> getVariables() { + return variables; + } + + @JsonProperty("variables") + public void setVariables(List<String> variables) { + this.variables = variables; + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerCallback.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerCallback.java new file mode 100644 index 0000000000..794f112fa9 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerCallback.java @@ -0,0 +1,19 @@ +package org.openecomp.mso.client.appc; +import org.openecomp.appc.client.lcm.api.ResponseHandler; +import org.openecomp.appc.client.lcm.exceptions.AppcClientException; + +public class ApplicationControllerCallback<T> implements ResponseHandler<T> { + + @Override + public void onResponse(T response) { + System.out.println("ON RESPONSE"); + + } + + @Override + public void onException(AppcClientException exception) { + System.out.println("ON EXCEPTION"); + + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerClient.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerClient.java new file mode 100644 index 0000000000..e8dc5af90c --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerClient.java @@ -0,0 +1,147 @@ +package org.openecomp.mso.client.appc; + +import java.beans.BeanInfo; + +import java.util.Map; + +import org.openecomp.mso.bpmn.core.PropertyConfiguration; + +import java.beans.IntrospectionException; +import java.beans.Introspector; +import java.beans.PropertyDescriptor; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.time.Instant; +import java.util.Properties; +import java.util.UUID; + +import org.springframework.beans.factory.annotation.Autowired; + +import org.openecomp.appc.client.lcm.api.AppcClientServiceFactoryProvider; +import org.openecomp.appc.client.lcm.api.AppcLifeCycleManagerServiceFactory; +import org.openecomp.appc.client.lcm.api.ApplicationContext; +import org.openecomp.appc.client.lcm.api.LifeCycleManagerStateful; +import org.openecomp.appc.client.lcm.api.ResponseHandler; +import org.openecomp.appc.client.lcm.exceptions.AppcClientException; +import org.openecomp.appc.client.lcm.model.Action; +import org.openecomp.appc.client.lcm.model.ActionIdentifiers; +import org.openecomp.appc.client.lcm.model.AuditOutput; +import org.openecomp.appc.client.lcm.model.CommonHeader; +import org.openecomp.appc.client.lcm.model.Flags; +import org.openecomp.appc.client.lcm.model.Flags.Force; +import org.openecomp.appc.client.lcm.model.Flags.Mode; +import org.openecomp.appc.client.lcm.model.Payload; +import org.openecomp.appc.client.lcm.model.Status; +import org.openecomp.appc.client.lcm.model.ZULU; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; + +public class ApplicationControllerClient { + + private static final int ACCEPT_SERIES = 100; + private static final int ERROR_SERIES = 200; + private static final int REJECT_SERIES = 300; + private static final int SUCCESS_SERIES = 400; + private static final int SUCCESS_STATUS = SUCCESS_SERIES + 0; + private static final int PARTIAL_SERIES = 500; + private static final int PARTIAL_SUCCESS_STATUS = PARTIAL_SERIES + 0; + + private final boolean useLCMBypass = false; + + private final String apiVer = "2.00"; + private final String originatorId = "MSO"; + private final int flagsTTL = 65000; + private final static String clientName = "MSO"; + + @Autowired + public ApplicationControllerSupport appCSupport; + + private LifeCycleManagerStateful client; + + public Status runCommand(Action action, ActionIdentifiers identifier, Flags flags, Payload payload, + String requestID) throws Exception { + Object requestObject = createRequest(action, identifier, flags, payload, requestID); + client = getAppCClient(); + Method lcmMethod = appCSupport.getAPIMethod(action.name(), client, false); + appCSupport.logLCMMessage(requestObject); + Object response = lcmMethod.invoke(client, requestObject); + return appCSupport.getStatusFromGenericResponse(response); + } + + public void shutdownclient() { + AppcClientServiceFactoryProvider.getFactory(AppcLifeCycleManagerServiceFactory.class) + .shutdownLifeCycleManager(false); + } + + public LifeCycleManagerStateful getAppCClient() throws AppcClientException { + if (client == null) + client = AppcClientServiceFactoryProvider.getFactory(AppcLifeCycleManagerServiceFactory.class) + .createLifeCycleManagerStateful(new ApplicationContext(), getLCMProperties()); + return client; + } + + private Properties getLCMProperties() { + return getLCMPropertiesHelper(); + } + + protected Properties getLCMPropertiesHelper() { + Properties properties = new Properties(); + Map<String, String> globalProperties = PropertyConfiguration.getInstance() + .getProperties("mso.bpmn.urn.properties"); + + properties.put("topic.read", globalProperties.get("appc.topic.read")); + properties.put("topic.read.timeout", globalProperties.get("appc.topic.read.timeout")); + properties.put("client.response.timeout", globalProperties.get("appc.client.response.timeout")); + properties.put("topic.write", globalProperties.get("appc.topic.write")); + properties.put("poolMembers", globalProperties.get("appc.pool.members")); + properties.put("client.key", globalProperties.get("appc.client.key")); + properties.put("client.secret", globalProperties.get("appc.client.secret")); + properties.put("client.name", clientName); + return properties; + } + + public Object createRequest(Action action, ActionIdentifiers identifier, Flags flags, Payload payload, + String requestId) throws Exception { + Object requestObject = appCSupport.getInput(action.name()); + try { + org.openecomp.appc.client.lcm.model.CommonHeader commonHeader = buildCommonHeader(requestId); + requestObject.getClass().getDeclaredMethod("setCommonHeader", CommonHeader.class).invoke(requestObject, + commonHeader); + requestObject.getClass().getDeclaredMethod("setAction", Action.class).invoke(requestObject, action); + requestObject.getClass().getDeclaredMethod("setActionIdentifiers", ActionIdentifiers.class) + .invoke(requestObject, identifier); + } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { + throw new Exception("Error Building AppC Request: " + e.getMessage()); + } + return requestObject; + } + + private org.openecomp.appc.client.lcm.model.CommonHeader buildCommonHeader(String requestId) { + org.openecomp.appc.client.lcm.model.CommonHeader commonHeader = new org.openecomp.appc.client.lcm.model.CommonHeader(); + commonHeader.setApiVer(apiVer); + commonHeader.setOriginatorId(originatorId); + commonHeader.setRequestId(requestId == null ? UUID.randomUUID().toString() : requestId); + commonHeader.setSubRequestId(requestId); + org.openecomp.appc.client.lcm.model.Flags flags = new org.openecomp.appc.client.lcm.model.Flags(); + String flagsMode = "NORMAL"; + Mode mode = Mode.valueOf(flagsMode); + flags.setMode(mode); + String flagsForce = "FALSE"; + Force force = Force.valueOf(flagsForce); + flags.setForce(force); + flags.setTtl(flagsTTL); + commonHeader.setFlags(flags); + Instant timestamp = Instant.now(); + ZULU zulu = new ZULU(timestamp.toString()); + commonHeader.setTimestamp(zulu); + return commonHeader; + } + + public Flags createRequestFlags() { + Flags flags = new Flags(); + flags.setTtl(6000); + return flags; + } +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerSupport.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerSupport.java new file mode 100644 index 0000000000..c0f1a2067e --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerSupport.java @@ -0,0 +1,226 @@ +package org.openecomp.mso.client.appc; + + +import java.beans.BeanInfo; +import java.beans.IntrospectionException; +import java.beans.Introspector; +import java.beans.PropertyDescriptor; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Properties; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PropertiesLoaderUtils; +import org.springframework.stereotype.Component; + +import org.openecomp.appc.client.lcm.api.AppcClientServiceFactoryProvider; +import org.openecomp.appc.client.lcm.api.AppcLifeCycleManagerServiceFactory; +import org.openecomp.appc.client.lcm.api.ApplicationContext; +import org.openecomp.appc.client.lcm.api.LifeCycleManagerStateful; +import org.openecomp.appc.client.lcm.api.ResponseHandler; +import org.openecomp.appc.client.lcm.exceptions.AppcClientException; +import org.openecomp.appc.client.lcm.model.Status; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; + + +@Component +public class ApplicationControllerSupport { + + private static final int ACCEPT_SERIES = 100; + private static final int ERROR_SERIES = 200; + private static final int REJECT_SERIES = 300; + private static final int SUCCESS_SERIES = 400; + private static final int SUCCESS_STATUS = SUCCESS_SERIES + 0; + private static final int PARTIAL_SERIES = 500; + private static final int PARTIAL_SUCCESS_STATUS = PARTIAL_SERIES + 0; + private static final int PARTIAL_FAILURE_STATUS = PARTIAL_SERIES + 1; + + @Value("${lcm.model.package:org.openecomp.appc.client.lcm.model}") + private String lcmModelPackage; + + public LifeCycleManagerStateful createService() throws AppcClientException, IOException { + AppcLifeCycleManagerServiceFactory factory = AppcClientServiceFactoryProvider + .getFactory(AppcLifeCycleManagerServiceFactory.class); + return factory.createLifeCycleManagerStateful(new ApplicationContext(), getLCMProperties()); + } + + /** + * @param inputClass + * @return + * @throws ClassNotFoundException + * @throws InstantiationException + * @throws IllegalAccessException + */ + public Object getInput(String action) { + try { + return getInputClass(action).newInstance(); + } catch (IllegalAccessException | InstantiationException e) { + throw new RuntimeException( + String.format("%s : %s", "Unable to instantiate viable LCM Kit input class for action", action), e); + } + } + + /** + * @param action + * @return + * @throws ClassNotFoundException + */ + public Method getAPIMethod(String action, LifeCycleManagerStateful lcmStateful, boolean async) { + Method[] methods = lcmStateful.getClass().getMethods(); + for (Method method : methods) { + if (method.getName().equalsIgnoreCase(action)) { + Class<?>[] methodParameterTypes = method.getParameterTypes(); + if (methodParameterTypes.length > 0) { + if (getInputClass(action).equals(methodParameterTypes[0])) { + if (async) { + if (methodParameterTypes.length == 2 + && ResponseHandler.class.isAssignableFrom(methodParameterTypes[1])) { + return method; + } + } else if (methodParameterTypes.length == 1) { + return method; + } + } + } + } + } + throw new RuntimeException(String.format("%s : %s, async=%b", + "Unable to derive viable LCM Kit API method for action", action, async)); + } + + public Method getCommonHeaderSetterMethod(String action) { + return getBeanPropertyMethodFor(getInputClass(action), "commonHeader", true); + } + + public Method getPayloadSetterMethod(String action) { + return getBeanPropertyMethodFor(getInputClass(action), "payload", true); + } + + public Status getStatusFromGenericResponse(Object response) { + Method statusReader = getBeanPropertyMethodFor(response.getClass(), "status", false); + if (statusReader != null) { + try { + return (Status) statusReader.invoke(response); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + throw new RuntimeException(String.format("Unable to obtain status from LCM Kit response", e)); + } + } + return new Status(); + } + + public static StatusCategory getCategoryOf(Status status) { + int codeSeries = status.getCode() - (status.getCode() % 100); + switch (codeSeries) { + case ACCEPT_SERIES: + return StatusCategory.NORMAL; + case ERROR_SERIES: + case REJECT_SERIES: + return StatusCategory.ERROR; + case SUCCESS_SERIES: + return status.getCode() == SUCCESS_STATUS ? StatusCategory.NORMAL : StatusCategory.ERROR; + case PARTIAL_SERIES: + switch (status.getCode()) { + case PARTIAL_SUCCESS_STATUS: + return StatusCategory.NORMAL; + case PARTIAL_FAILURE_STATUS: + return StatusCategory.ERROR; + default: + return StatusCategory.WARNING; + } + default: + return StatusCategory.WARNING; + } + } + + public static boolean getFinalityOf(Status status) { + int codeSeries = status.getCode() - (status.getCode() % 100); + switch (codeSeries) { + case ACCEPT_SERIES: + case PARTIAL_SERIES: + return false; + case ERROR_SERIES: + case REJECT_SERIES: + case SUCCESS_SERIES: + return true; + default: + return true; + } + } + + /** + * @return + * @throws IOException + */ + private Properties getLCMProperties() throws IOException { + Resource resource = new ClassPathResource("/lcm.properties"); + Properties properties = PropertiesLoaderUtils.loadProperties(resource); + return properties; + } + + private Method getBeanPropertyMethodFor(Class<?> clazz, String propertyName, boolean isWriter) { + BeanInfo beanInfo; + try { + beanInfo = Introspector.getBeanInfo(clazz, Object.class); + } catch (IntrospectionException e) { + throw new RuntimeException( + String.format("Unable to produce bean property method for class : %s, property : %s, writer=%b", + clazz.getName(), propertyName, isWriter), + e); + } + PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); + for (PropertyDescriptor propertyDescriptor : propertyDescriptors) { + if (propertyDescriptor.getName().equals(propertyName)) { + return isWriter ? propertyDescriptor.getWriteMethod() : propertyDescriptor.getReadMethod(); + } + } + throw new RuntimeException( + String.format("Unable to produce bean property method for class : %s, property : %s, writer=%b", + clazz.getName(), propertyName, isWriter)); + } + + /** + * @param action + * @return + * @throws ClassNotFoundException + */ + private Class<?> getInputClass(String action) { + try { + return Class.forName(lcmModelPackage + '.' + action + "Input"); + } catch (ClassNotFoundException e) { + throw new RuntimeException(String.format("%s : %s using package : ", + "Unable to identify viable LCM Kit input class for action", action, lcmModelPackage), e); + } + } + + public static enum StatusCategory { + NORMAL("normal"), + WARNING("warning"), + ERROR("error"); + + private final String category; + + private StatusCategory(final String category) { + this.category = category; + } + + @Override + public String toString() { + return category; + } + } + + public void logLCMMessage(Object message) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setSerializationInclusion(Include.NON_NULL); + ObjectWriter writer = objectMapper.writerWithDefaultPrettyPrinter(); + String inputAsJSON = writer.writeValueAsString(message); + System.out.println("LCM Kit input message follows."); + System.out.println(inputAsJSON); + } +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/dmaap/Consumer.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/dmaap/Consumer.java new file mode 100644 index 0000000000..6c0b3ac633 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/dmaap/Consumer.java @@ -0,0 +1,34 @@ +package org.openecomp.mso.client.dmaap; + +public interface Consumer { + + /** + * Should this consumer continue to consume messages from the topic? + * @return + */ + public boolean continuePolling(); + /** + * Process a message from a DMaaP topic + * + * @param message + * @throws Exception + */ + public void processMessage(String message) throws Exception; + /** + * Has the request been accepted by the receiving system? + * Should the consumer move to processing messages? + * + * @param message + * @return + */ + public boolean isAccepted(String message); + /** + * The request id to filter messages on + * @return + */ + public String getRequestId(); + /** + * Logic that defines when the consumer should stop processing messages + */ + public void stopProcessingMessages(); +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/dmaap/DmaapConsumer.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/dmaap/DmaapConsumer.java new file mode 100644 index 0000000000..07ed8719b7 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/dmaap/DmaapConsumer.java @@ -0,0 +1,40 @@ +package org.openecomp.mso.client.dmaap; + +import java.io.FileNotFoundException; +import java.io.IOException; + +import com.att.nsa.mr.client.MRClientFactory; +import com.att.nsa.mr.client.MRConsumer; + +public class DmaapConsumer { + + private final MRConsumer mrConsumer; + public DmaapConsumer() { + mrConsumer = null; + } + public DmaapConsumer (String filepath) throws FileNotFoundException, IOException { + + mrConsumer = MRClientFactory.createConsumer(filepath); + } + + + public MRConsumer getMRConsumer() { + return mrConsumer; + } + public boolean consume(Consumer consumer) throws Exception { + boolean accepted = false; + while (consumer.continuePolling()) { + for (String message : this.getMRConsumer().fetch()) { + if (!accepted && consumer.isAccepted(message)) { + accepted = true; + } + if (accepted) { + consumer.processMessage(message); + } + } + } + + return true; + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/dmaap/DmaapPublisher.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/dmaap/DmaapPublisher.java new file mode 100644 index 0000000000..bce3e6c3d7 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/dmaap/DmaapPublisher.java @@ -0,0 +1,30 @@ +package org.openecomp.mso.client.dmaap; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import com.att.nsa.mr.client.MRBatchingPublisher; +import com.att.nsa.mr.client.MRClientFactory; + +public class DmaapPublisher { + + private final long seconds; + private final MRBatchingPublisher publisher; + + public DmaapPublisher(String filepath) throws FileNotFoundException, IOException { + this.seconds = 20; + this.publisher = MRClientFactory.createBatchingPublisher(filepath); + } + + public DmaapPublisher(String filepath, long seconds) throws FileNotFoundException, IOException { + this.seconds = seconds; + this.publisher = MRClientFactory.createBatchingPublisher(filepath); + } + + public void send(String json) throws IOException, InterruptedException { + publisher.send(json); + publisher.close(seconds, TimeUnit.SECONDS); + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/exceptions/SDNOException.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/exceptions/SDNOException.java new file mode 100644 index 0000000000..b9e3c5d9ad --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/exceptions/SDNOException.java @@ -0,0 +1,19 @@ +package org.openecomp.mso.client.exceptions; + + +public class SDNOException extends Exception { + + private static final long serialVersionUID = 6189163383568887383L; + + public SDNOException() { + super(); + } + + public SDNOException(String string) { + super(string); + } + + public SDNOException(Exception e) { + super(e); + } +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/CommonObjectMapperProvider.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/CommonObjectMapperProvider.java new file mode 100644 index 0000000000..8e709f21b5 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/CommonObjectMapperProvider.java @@ -0,0 +1,31 @@ +package org.openecomp.mso.client.policy;
+
+import javax.ws.rs.ext.ContextResolver;
+
+import javax.ws.rs.ext.Provider;
+
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.MapperFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+
+@Provider
+public class CommonObjectMapperProvider implements ContextResolver<ObjectMapper> {
+
+ final ObjectMapper mapper;
+
+ public CommonObjectMapperProvider() {
+
+ mapper = new ObjectMapper();
+ mapper.setSerializationInclusion(Include.NON_NULL);
+ mapper.enable(MapperFeature.USE_ANNOTATIONS);
+ mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
+ mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, false);
+ }
+
+ @Override
+ public ObjectMapper getContext(Class<?> type) {
+ return mapper;
+ }
+}
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/DecisionAttributes.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/DecisionAttributes.java new file mode 100644 index 0000000000..2325955950 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/DecisionAttributes.java @@ -0,0 +1,74 @@ + +package org.openecomp.mso.client.policy; + + + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ "ServiceType", "VNFType", "BB_ID", "WorkStep", "ErrorCode" }) +public class DecisionAttributes { + + @JsonProperty("ServiceType") + private String serviceType; + @JsonProperty("VNFType") + private String vNFType; + @JsonProperty("BB_ID") + private String bbID; + @JsonProperty("WorkStep") + private String workStep; + @JsonProperty("ErrorCode") + private String errorCode; + + @JsonProperty("ServiceType") + public String getServiceType() { + return serviceType; + } + + @JsonProperty("ServiceType") + public void setServiceType(String serviceType) { + this.serviceType = serviceType; + } + + @JsonProperty("VNFType") + public String getVNFType() { + return vNFType; + } + + @JsonProperty("VNFType") + public void setVNFType(String vNFType) { + this.vNFType = vNFType; + } + + @JsonProperty("BB_ID") + public String getBBID() { + return bbID; + } + + @JsonProperty("BB_ID") + public void setBBID(String bBID) { + this.bbID = bBID; + } + + @JsonProperty("WorkStep") + public String getWorkStep() { + return workStep; + } + + @JsonProperty("WorkStep") + public void setWorkStep(String workStep) { + this.workStep = workStep; + } + + @JsonProperty("ErrorCode") + public String getErrorCode() { + return errorCode; + } + + @JsonProperty("ErrorCode") + public void setErrorCode(String errorCode) { + this.errorCode = errorCode; + } +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/LoggingFilter.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/LoggingFilter.java new file mode 100644 index 0000000000..9a7c21fba1 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/LoggingFilter.java @@ -0,0 +1,109 @@ +package org.openecomp.mso.client.policy;
+
+import java.io.BufferedInputStream;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FilterOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.util.logging.Logger;
+import javax.annotation.Priority;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.client.ClientRequestContext;
+import javax.ws.rs.client.ClientRequestFilter;
+import javax.ws.rs.client.ClientResponseContext;
+import javax.ws.rs.client.ClientResponseFilter;
+import javax.ws.rs.ext.WriterInterceptor;
+import javax.ws.rs.ext.WriterInterceptorContext;
+
+@Priority(Integer.MIN_VALUE)
+public class LoggingFilter implements ClientRequestFilter, ClientResponseFilter, WriterInterceptor {
+
+ private static final Logger logger = Logger.getLogger(LoggingFilter.class.getName());
+ private static final String ENTITY_STREAM_PROPERTY = "LoggingFilter.entityStream";
+ private static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
+ private final int maxEntitySize = 1024 * 8;
+
+ private void log(StringBuilder sb) {
+ logger.info(sb.toString());
+ }
+
+ private InputStream logInboundEntity(final StringBuilder b, InputStream stream, final Charset charset)
+ throws IOException {
+ if (!stream.markSupported()) {
+ stream = new BufferedInputStream(stream);
+ }
+ stream.mark(maxEntitySize + 1);
+ final byte[] entity = new byte[maxEntitySize + 1];
+ final int entitySize = stream.read(entity);
+ b.append(new String(entity, 0, Math.min(entitySize, maxEntitySize), charset));
+ if (entitySize > maxEntitySize) {
+ b.append("...more...");
+ }
+ b.append('\n');
+ stream.reset();
+ return stream;
+ }
+
+ @Override
+ public void filter(ClientRequestContext requestContext) throws IOException {
+ if (requestContext.hasEntity()) {
+ final OutputStream stream = new LoggingStream(requestContext.getEntityStream());
+ requestContext.setEntityStream(stream);
+ requestContext.setProperty(ENTITY_STREAM_PROPERTY, stream);
+ }
+ }
+
+ @Override
+ public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
+ final StringBuilder sb = new StringBuilder();
+ if (responseContext.hasEntity()) {
+ responseContext.setEntityStream(logInboundEntity(sb, responseContext.getEntityStream(), DEFAULT_CHARSET));
+ log(sb);
+ }
+
+ }
+
+ @Override
+ public void aroundWriteTo(WriterInterceptorContext context) throws IOException, WebApplicationException {
+ final LoggingStream stream = (LoggingStream) context.getProperty(ENTITY_STREAM_PROPERTY);
+ context.proceed();
+ if (stream != null) {
+ log(stream.getStringBuilder(DEFAULT_CHARSET));
+ }
+ }
+
+ private class LoggingStream extends FilterOutputStream {
+
+ private final StringBuilder sb = new StringBuilder();
+ private final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ LoggingStream(OutputStream out) {
+ super(out);
+ }
+
+ StringBuilder getStringBuilder(Charset charset) {
+ // write entity to the builder
+ final byte[] entity = baos.toByteArray();
+
+ sb.append(new String(entity, 0, entity.length, charset));
+ if (entity.length > maxEntitySize) {
+ sb.append("...more...");
+ }
+ sb.append('\n');
+
+ return sb;
+ }
+
+ @Override
+ public void write(final int i) throws IOException {
+ if (baos.size() <= maxEntitySize) {
+ baos.write(i);
+ }
+ out.write(i);
+ }
+ }
+}
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/PolicyDecision.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/PolicyDecision.java new file mode 100644 index 0000000000..e0ad170504 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/PolicyDecision.java @@ -0,0 +1,38 @@ + +package org.openecomp.mso.client.policy; + + + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ "decision", "details" }) +public class PolicyDecision { + + @JsonProperty("decision") + private String decision; + @JsonProperty("details") + private String details; + + @JsonProperty("decision") + public String getDecision() { + return decision; + } + + @JsonProperty("decision") + public void setDecision(String decision) { + this.decision = decision; + } + + @JsonProperty("details") + public String getDetails() { + return details; + } + + @JsonProperty("details") + public void setDetails(String details) { + this.details = details; + } +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/PolicyDecisionRequest.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/PolicyDecisionRequest.java new file mode 100644 index 0000000000..2af91f6638 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/PolicyDecisionRequest.java @@ -0,0 +1,38 @@ + +package org.openecomp.mso.client.policy; + + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ "decisionAttributes", "ecompcomponentName" }) +public class PolicyDecisionRequest { + + @JsonProperty("decisionAttributes") + private DecisionAttributes decisionAttributes; + @JsonProperty("ecompcomponentName") + private String ecompcomponentName; + + @JsonProperty("decisionAttributes") + public DecisionAttributes getDecisionAttributes() { + return decisionAttributes; + } + + @JsonProperty("decisionAttributes") + public void setDecisionAttributes(DecisionAttributes decisionAttributes) { + this.decisionAttributes = decisionAttributes; + } + + @JsonProperty("ecompcomponentName") + public String getEcompcomponentName() { + return ecompcomponentName; + } + + @JsonProperty("ecompcomponentName") + public void setEcompcomponentName(String ecompcomponentName) { + this.ecompcomponentName = ecompcomponentName; + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/PolicyRestClient.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/PolicyRestClient.java new file mode 100644 index 0000000000..6af1c5dab7 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/PolicyRestClient.java @@ -0,0 +1,69 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - MSO + * ================================================================================ + * 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.mso.client.policy; + +import java.util.Map; +import java.util.UUID; + +import javax.ws.rs.client.Entity; +import javax.ws.rs.core.MediaType; + +import org.springframework.stereotype.Service; + +@Service +public class PolicyRestClient extends RestClient { + + private static final String ENDPOINT_KEY = "policy.endpoint"; + private static final String X_ECOMP_REQUESTID = String.valueOf(UUID.randomUUID()); + + public PolicyRestClient() { + super(ENDPOINT_KEY); + } + + @Override + protected void initializeHeaderMap(Map<String, String> headerMap) { + headerMap.put("ClientAuth", properties.get("policy.client.auth")); + headerMap.put("Authorization", properties.get("policy.auth")); + headerMap.put("Environment", properties.get("policy.environment")); + headerMap.put("X-ECOMP-RequestID", X_ECOMP_REQUESTID); + } + + public PolicyDecision getDecision(String serviceType, String vnfType, String bbID, String workStep, + String errorCode) { + DecisionAttributes decisionAttributes = new DecisionAttributes(); + decisionAttributes.setServiceType(serviceType); + decisionAttributes.setVNFType(vnfType); + decisionAttributes.setBBID(bbID); + decisionAttributes.setWorkStep(workStep); + decisionAttributes.setErrorCode(errorCode); + + return this.getDecision(decisionAttributes); + } + + private PolicyDecision getDecision(DecisionAttributes decisionAttributes) { + PolicyDecisionRequest decisionRequest = new PolicyDecisionRequest(); + decisionRequest.setDecisionAttributes(decisionAttributes); + decisionRequest.setEcompcomponentName(ECOMP_COMPONENT_NAME); + + return this.getBuilder().accept(MediaType.APPLICATION_JSON_TYPE) + .post(Entity.entity(decisionRequest, MediaType.APPLICATION_JSON)).readEntity(PolicyDecision.class); + } +}
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/RestClient.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/RestClient.java new file mode 100644 index 0000000000..f8e1ffd74f --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/RestClient.java @@ -0,0 +1,76 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - MSO + * ================================================================================ + * 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.mso.client.policy; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.logging.Logger; + +import javax.ws.rs.client.ClientBuilder; +import javax.ws.rs.client.Invocation.Builder; +import javax.ws.rs.client.WebTarget; + + +import org.openecomp.mso.bpmn.core.PropertyConfiguration; +import org.openecomp.mso.logger.MsoLogger; +import org.springframework.stereotype.Service; + +@Service +public abstract class RestClient { + protected static final String ECOMP_COMPONENT_NAME = "MSO"; + + private WebTarget webTarget; + + protected final Map<String, String> headerMap; + protected final MsoLogger msoLogger; + protected Map<String, String> properties; + protected String host; + + protected RestClient(String endpointKey) { + Logger logger = Logger.getLogger(getClass().getName()); + msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.GENERAL); + + properties = PropertyConfiguration.getInstance().getProperties("mso.bpmn.urn.properties"); + headerMap = new HashMap<>(); + initializeHeaderMap(headerMap); + + host = this.getHost(endpointKey); + + webTarget = ClientBuilder.newClient().register(logger).register(new LoggingFilter()) + .register(new CommonObjectMapperProvider()).target(host); + } + + private String getHost(String key) { + return properties.get(key); + } + + protected Builder getBuilder() { + Builder builder = webTarget.request(); + + for (Entry<String, String> entry : headerMap.entrySet()) { + builder.header(entry.getKey(), entry.getValue()); + } + return builder; + } + + protected abstract void initializeHeaderMap(Map<String, String> headerMap); +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/Body.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/Body.java new file mode 100644 index 0000000000..d35d3906f2 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/Body.java @@ -0,0 +1,58 @@ + +package org.openecomp.mso.client.sdno; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "input" +}) +public class Body implements Serializable +{ + + @JsonProperty("input") + private Input input; + @JsonIgnore + private Map<String, Object> additionalProperties = new HashMap<String, Object>(); + private final static long serialVersionUID = 9101706044452851559L; + + @JsonProperty("input") + public Input getInput() { + return input; + } + + @JsonProperty("input") + public void setInput(Input input) { + this.input = input; + } + + public Body withInput(Input input) { + this.input = input; + return this; + } + + @JsonAnyGetter + public Map<String, Object> getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public Body withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/Input.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/Input.java new file mode 100644 index 0000000000..da28ac507a --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/Input.java @@ -0,0 +1,58 @@ + +package org.openecomp.mso.client.sdno; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "request-healthdiagnostic" +}) +public class Input implements Serializable +{ + + @JsonProperty("request-healthdiagnostic") + private RequestHealthDiagnostic RequestHealthDiagnostic; + @JsonIgnore + private Map<String, Object> additionalProperties = new HashMap<String, Object>(); + private final static long serialVersionUID = 7155546785389227528L; + + @JsonProperty("request-healthdiagnostic") + public RequestHealthDiagnostic getRequestHealthDiagnostic() { + return RequestHealthDiagnostic; + } + + @JsonProperty("request-healthdiagnostic") + public void setRequestHealthDiagnostic(RequestHealthDiagnostic RequestHealthDiagnostic) { + this.RequestHealthDiagnostic = RequestHealthDiagnostic; + } + + public Input withRequestHealthDiagnostic(RequestHealthDiagnostic RequestHealthDiagnostic) { + this.RequestHealthDiagnostic = RequestHealthDiagnostic; + return this; + } + + @JsonAnyGetter + public Map<String, Object> getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public Input withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/RequestHealthDiagnostic.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/RequestHealthDiagnostic.java new file mode 100644 index 0000000000..a1109b2dfd --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/RequestHealthDiagnostic.java @@ -0,0 +1,166 @@ + +package org.openecomp.mso.client.sdno; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "request-client-name", + "request-node-name", + "request-node-ip", + "request-id", + "request-user-id", + "request-node-type", + "health-diagnostic-code" +}) +public class RequestHealthDiagnostic implements Serializable +{ + + @JsonProperty("request-client-name") + private String requestClientName; + @JsonProperty("request-node-name") + private String requestNodeName; + @JsonProperty("request-node-ip") + private String requestNodeIp; + @JsonProperty("request-id") + private String requestId; + @JsonProperty("request-user-id") + private String requestUserId; + @JsonProperty("request-node-type") + private String requestNodeType; + @JsonProperty("health-diagnostic-code") + private String healthDiagnosticCode; + @JsonIgnore + private Map<String, Object> additionalProperties = new HashMap<String, Object>(); + private final static long serialVersionUID = 1166788526178388021L; + + @JsonProperty("request-client-name") + public String getRequestClientName() { + return requestClientName; + } + + @JsonProperty("request-client-name") + public void setRequestClientName(String requestClientName) { + this.requestClientName = requestClientName; + } + + public RequestHealthDiagnostic withRequestClientName(String requestClientName) { + this.requestClientName = requestClientName; + return this; + } + + @JsonProperty("request-node-name") + public String getRequestNodeName() { + return requestNodeName; + } + + @JsonProperty("request-node-name") + public void setRequestNodeName(String requestNodeName) { + this.requestNodeName = requestNodeName; + } + + public RequestHealthDiagnostic withRequestNodeName(String requestNodeName) { + this.requestNodeName = requestNodeName; + return this; + } + + @JsonProperty("request-node-ip") + public String getRequestNodeIp() { + return requestNodeIp; + } + + @JsonProperty("request-node-ip") + public void setRequestNodeIp(String requestNodeIp) { + this.requestNodeIp = requestNodeIp; + } + + public RequestHealthDiagnostic withRequestNodeIp(String requestNodeIp) { + this.requestNodeIp = requestNodeIp; + return this; + } + + @JsonProperty("request-id") + public String getRequestId() { + return requestId; + } + + @JsonProperty("request-id") + public void setRequestId(String requestId) { + this.requestId = requestId; + } + + public RequestHealthDiagnostic withRequestId(String requestId) { + this.requestId = requestId; + return this; + } + + @JsonProperty("request-user-id") + public String getRequestUserId() { + return requestUserId; + } + + @JsonProperty("request-user-id") + public void setRequestUserId(String requestUserId) { + this.requestUserId = requestUserId; + } + + public RequestHealthDiagnostic withRequestUserId(String requestUserId) { + this.requestUserId = requestUserId; + return this; + } + + @JsonProperty("request-node-type") + public String getRequestNodeType() { + return requestNodeType; + } + + @JsonProperty("request-node-type") + public void setRequestNodeType(String requestNodeType) { + this.requestNodeType = requestNodeType; + } + + public RequestHealthDiagnostic withRequestNodeType(String requestNodeType) { + this.requestNodeType = requestNodeType; + return this; + } + + @JsonProperty("health-diagnostic-code") + public String getHealthDiagnosticCode() { + return healthDiagnosticCode; + } + + @JsonProperty("health-diagnostic-code") + public void setHealthDiagnosticCode(String healthDiagnosticCode) { + this.healthDiagnosticCode = healthDiagnosticCode; + } + + public RequestHealthDiagnostic withHealthDiagnosticCode(String healthDiagnosticCode) { + this.healthDiagnosticCode = healthDiagnosticCode; + return this; + } + + @JsonAnyGetter + public Map<String, Object> getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public RequestHealthDiagnostic withAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/ResultInfo.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/ResultInfo.java new file mode 100644 index 0000000000..a5199acad7 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/ResultInfo.java @@ -0,0 +1,96 @@ +package org.openecomp.mso.client.sdno; + +import java.util.HashMap; +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ +"client-name", +"code", +"processing-host", +"request-id", +"status" +}) +public class ResultInfo { + +@JsonProperty("client-name") +private String clientName; +@JsonProperty("code") +private String code; +@JsonProperty("processing-host") +private String processingHost; +@JsonProperty("request-id") +private String requestId; +@JsonProperty("status") +private String status; +@JsonIgnore +private Map<String, Object> additionalProperties = new HashMap<String, Object>(); + +@JsonProperty("client-name") +public String getClientName() { +return clientName; +} + +@JsonProperty("client-name") +public void setClientName(String clientName) { +this.clientName = clientName; +} + +@JsonProperty("code") +public String getCode() { +return code; +} + +@JsonProperty("code") +public void setCode(String code) { +this.code = code; +} + +@JsonProperty("processing-host") +public String getProcessingHost() { +return processingHost; +} + +@JsonProperty("processing-host") +public void setProcessingHost(String processingHost) { +this.processingHost = processingHost; +} + +@JsonProperty("request-id") +public String getRequestId() { +return requestId; +} + +@JsonProperty("request-id") +public void setRequestId(String requestId) { +this.requestId = requestId; +} + +@JsonProperty("status") +public String getStatus() { +return status; +} + +@JsonProperty("status") +public void setStatus(String status) { +this.status = status; +} + +@JsonAnyGetter +public Map<String, Object> getAdditionalProperties() { +return this.additionalProperties; +} + +@JsonAnySetter +public void setAdditionalProperty(String name, Object value) { +this.additionalProperties.put(name, value); +} + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/SDNO.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/SDNO.java new file mode 100644 index 0000000000..c634164b59 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/SDNO.java @@ -0,0 +1,94 @@ + +package org.openecomp.mso.client.sdno; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "operation", + "nodeType", + "body" +}) +public class SDNO implements Serializable +{ + + @JsonProperty("operation") + private String operation; + @JsonProperty("nodeType") + private String nodeType; + @JsonProperty("body") + private Body body; + @JsonIgnore + private Map<String, Object> additionalProperties = new HashMap<String, Object>(); + private final static long serialVersionUID = -5303297382564282650L; + + @JsonProperty("operation") + public String getOperation() { + return operation; + } + + @JsonProperty("operation") + public void setOperation(String operation) { + this.operation = operation; + } + + public SDNO withOperation(String operation) { + this.operation = operation; + return this; + } + + @JsonProperty("nodeType") + public String getNodeType() { + return nodeType; + } + + @JsonProperty("nodeType") + public void setNodeType(String nodeType) { + this.nodeType = nodeType; + } + + public SDNO withNodeType(String nodeType) { + this.nodeType = nodeType; + return this; + } + + @JsonProperty("body") + public Body getBody() { + return body; + } + + @JsonProperty("body") + public void setBody(Body body) { + this.body = body; + } + + public SDNO withBody(Body body) { + this.body = body; + return this; + } + + @JsonAnyGetter + public Map<String, Object> getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + public SDNO SDNO (String name, Object value) { + this.additionalProperties.put(name, value); + return this; + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/SDNOValidator.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/SDNOValidator.java new file mode 100644 index 0000000000..be63feef05 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/SDNOValidator.java @@ -0,0 +1,9 @@ +package org.openecomp.mso.client.sdno; + +import java.io.IOException; + +public interface SDNOValidator { + + void healthDiagnostic(String vnfName, String uuid) throws IOException, Exception; + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/SDNOValidatorImpl.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/SDNOValidatorImpl.java new file mode 100644 index 0000000000..d37e2bc70f --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/sdno/SDNOValidatorImpl.java @@ -0,0 +1,133 @@ +package org.openecomp.mso.client.sdno; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Optional; + +import org.openecomp.mso.client.dmaap.Consumer; +import org.openecomp.mso.client.dmaap.DmaapConsumer; +import org.openecomp.mso.client.dmaap.DmaapPublisher; +import org.openecomp.mso.client.exceptions.SDNOException; +import org.openecomp.mso.jsonpath.JsonPathUtil; + +public class SDNOValidatorImpl implements SDNOValidator, Consumer { + + private final static String aafUserName = "something"; + private final static String clientName = "MSO"; + private final static String healthDiagnosticPath = "body.output.response-healthdiagnostic"; + private final static String producerFilePath = ""; + private String uuid; + private boolean continuePolling = true; + @Override + public void healthDiagnostic(String vnfName, String uuid) { + //Query A&AI data + // setup SDNO Entity + //Call SDNO for Health Diagnostic + //create producer file for MRClient https://wiki.web.att.com/display/MessageRouter/DMaaP_MR_JavaReferenceClient + // final MRBatchingPublisher pub = MRClientFactory.createBatchingPublisher(producerFilePath); + // pub.send("Mypartitionkey",JSON.toString(object)); + //create consumer file for MRClient https://wiki.web.att.com/display/MessageRouter/DMaaP_MR_JavaReferenceClient + //check for error in subscription feed filter via jsonpath + //block and continue to poll waiting for response + } + + protected SDNO buildRequestDiagnostic(String vnfName, String uuid, String oamIp) { + + Input input = new Input(); + SDNO parentRequest = new SDNO(); + Body body = new Body(); + parentRequest.setBody(body); + parentRequest.setNodeType("vPE"); + parentRequest.setOperation("health-diagnostic"); + + body.setInput(input); + + RequestHealthDiagnostic request = new RequestHealthDiagnostic(); + request.setRequestClientName(clientName); + request.setRequestNodeName(vnfName); + request.setRequestNodeIp(oamIp); //generic-vnf oam ip + request.setRequestUserId(aafUserName); //mech id? + request.setRequestId(uuid); //something to identify this request by for polling + + input.setRequestHealthDiagnostic(request); + + return parentRequest; + } + protected void submitRequest(String json) throws FileNotFoundException, IOException, InterruptedException { + DmaapPublisher publisher = new DmaapPublisher(this.producerFilePath); + publisher.send(json); + } + protected boolean pollForResponse(DmaapConsumer consumer, String uuid) throws Exception { + this.uuid = uuid; + return consumer.consume(this); + } + + @Override + public boolean continuePolling() { + return continuePolling; + } + + @Override + public void stopProcessingMessages() { + continuePolling = false; + } + @Override + public void processMessage(String message) throws Exception { + if (isHealthDiagnostic(message, this.getRequestId())) { + if (!healthDiagnosticSuccessful(message)) { + Optional<String> statusMessage = this.getStatusMessage(message); + if (statusMessage.isPresent()) { + throw new SDNOException(statusMessage.get()); + } else { + throw new SDNOException(); + } + } else { + stopProcessingMessages(); + } + } + } + + @Override + public boolean isAccepted(String message) { + if (isResultInfo(message)) { + Optional<String> code = isAccepted(message, this.getRequestId()); + if (code.isPresent()) { + if ("202".equals(code.get())) { + return true; + } else { + //TODO check other statuses 400 and 500 + } + } else { + //TODO throw error + } + } + + return false; + } + + @Override + public String getRequestId() { + return uuid; + } + + protected Optional<String> isAccepted(String json, String uuid) { + return JsonPathUtil.getInstance().locateResult(json, String.format("$.result-info[?(@.status=='ACCEPTED' && @.request-id=='%s')].code", uuid)); + } + + protected boolean isResultInfo(String json) { + return JsonPathUtil.getInstance().pathExists(json, "$[?(@.result-info)]"); + } + + protected boolean isHealthDiagnostic(String json, String uuid) { + return JsonPathUtil.getInstance().pathExists(json, String.format("$[?(@.result-info.request-id=='%s')].%s", uuid, healthDiagnosticPath)); + } + + protected boolean healthDiagnosticSuccessful(String json) { + return JsonPathUtil.getInstance().pathExists(json, "$." + healthDiagnosticPath + "[?(@.response-status=='Success')]"); + } + + protected Optional<String> getStatusMessage(String json) { + return JsonPathUtil.getInstance().locateResult(json, "$." + healthDiagnosticPath + ".response-details-json"); + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/jsonpath/JsonPathUtil.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/jsonpath/JsonPathUtil.java new file mode 100644 index 0000000000..56ce2dfa19 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/jsonpath/JsonPathUtil.java @@ -0,0 +1,39 @@ +package org.openecomp.mso.jsonpath; + +import java.util.Optional; + +import com.jayway.jsonpath.Configuration; +import com.jayway.jsonpath.JsonPath; +import com.jayway.jsonpath.Option; + +import net.minidev.json.JSONArray; + +public class JsonPathUtil { + + + private final Configuration conf; + + private JsonPathUtil() { + conf = Configuration.defaultConfiguration().addOptions(Option.ALWAYS_RETURN_LIST, Option.SUPPRESS_EXCEPTIONS); + } + + private static class Helper { + private static final JsonPathUtil INSTANCE = new JsonPathUtil(); + } + + public static JsonPathUtil getInstance() { + return Helper.INSTANCE; + } + public boolean pathExists(String json, String jsonPath) { + return !JsonPath.using(conf).parse(json).<JSONArray>read(jsonPath).isEmpty(); + } + + public <T> Optional<T> locateResult(String json, String jsonPath) { + final JSONArray result = JsonPath.using(conf).parse(json).read(jsonPath); + if (result.isEmpty()) { + return Optional.empty(); + } else { + return Optional.of((T)result.get(0)); + } + } +} diff --git a/bpmn/MSOCommonBPMN/src/main/resources/processengine.properties b/bpmn/MSOCommonBPMN/src/main/resources/processengine.properties deleted file mode 100644 index c21925c23f..0000000000 --- a/bpmn/MSOCommonBPMN/src/main/resources/processengine.properties +++ /dev/null @@ -1,20 +0,0 @@ -### -# ============LICENSE_START======================================================= -# ECOMP MSO -# ================================================================================ -# 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========================================================= -### -processEngineName=common diff --git a/bpmn/MSOCommonBPMN/src/main/resources/processes.xml b/bpmn/MSOCommonBPMN/src/main/resources/processes.xml deleted file mode 100644 index f4f8efdbc4..0000000000 --- a/bpmn/MSOCommonBPMN/src/main/resources/processes.xml +++ /dev/null @@ -1,81 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- ============LICENSE_START=======================================================
- ECOMP MSO
- ================================================================================
- 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=========================================================
- -->
-
-
-<process-application
- xmlns="http://www.camunda.org/schema/1.0/ProcessApplication"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <process-engine name="common">
- <configuration>org.camunda.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration</configuration>
- <datasource>java:jboss/datasources/ProcessEngine</datasource>
- <properties>
- <property name="history">full</property>
- <property name="databaseSchemaUpdate">true</property>
- <property name="authorizationEnabled">true</property>
- <property name="jobExecutorDeploymentAware">true</property>
- <property name="jobExecutorActivate">true</property>
- </properties>
- <plugins>
-
- <!-- plugin enabling Process Application event listener support -->
- <plugin>
- <class>org.camunda.bpm.application.impl.event.ProcessApplicationEventListenerPlugin</class>
- </plugin>
-
- <!-- plugin enabling integration of camunda Spin -->
- <plugin>
- <class>org.camunda.spin.plugin.impl.SpinProcessEnginePlugin</class>
- </plugin>
-
- <!-- plugin enabling connect support -->
- <plugin>
- <class>org.camunda.connect.plugin.impl.ConnectProcessEnginePlugin</class>
- </plugin>
-
- <plugin>
- <class>org.openecomp.mso.bpmn.core.plugins.LoggingAndURNMappingPlugin</class>
- </plugin>
-
- <!-- Needed until all subflows generate MSOWorkflowException events -->
- <plugin>
- <class>org.openecomp.mso.bpmn.core.plugins.WorkflowExceptionPlugin</class>
- </plugin>
-
- <!-- Optional Plugin for Camunda BPM Workbench -->
- <!-- <plugin>
- <class>org.camunda.bpm.debugger.server.EmbeddableDebugWebsocketBootstrap</class>
- <properties>
- <property name="httpPort">8088</property>
- </properties>
- </plugin> -->
- </plugins>
- </process-engine>
-
-
- <process-archive name="MSOCommonBPMN">
- <process-engine>common</process-engine>
- <properties>
- <property name="isDeleteUponUndeploy">false</property>
- <property name="isScanForProcessDefinitions">true</property>
- </properties>
- </process-archive>
-
-</process-application>
diff --git a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/BuildingBlock/DecomposeService.bpmn b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/BuildingBlock/DecomposeService.bpmn new file mode 100644 index 0000000000..8a89b43cde --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/BuildingBlock/DecomposeService.bpmn @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+ <bpmn2:process id="DecomposeService" name="DecomposeService" isExecutable="true">
+ <bpmn2:startEvent id="createSI_startEvent" name="Start Flow">
+ <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+ </bpmn2:startEvent>
+ <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSI_startEvent" targetRef="preProcessRequest_ScriptTask" />
+ <bpmn2:endEvent id="EndEvent_3">
+ <bpmn2:incoming>SequenceFlow_0tj2l1j</bpmn2:incoming>
+ </bpmn2:endEvent>
+ <bpmn2:subProcess id="SubProcess_06d8lk8" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+ <bpmn2:startEvent id="StartEvent_0yljq9y">
+ <bpmn2:outgoing>SequenceFlow_0tgrn11</bpmn2:outgoing>
+ <bpmn2:errorEventDefinition />
+ </bpmn2:startEvent>
+ <bpmn2:endEvent id="EndEvent_117lkk3">
+ <bpmn2:incoming>SequenceFlow_0g4aus9</bpmn2:incoming>
+ </bpmn2:endEvent>
+ <bpmn2:sequenceFlow id="SequenceFlow_0tgrn11" sourceRef="StartEvent_0yljq9y" targetRef="processJavaError" />
+ <bpmn2:scriptTask id="processJavaError" name="Process Error" scriptFormat="groovy">
+ <bpmn2:incoming>SequenceFlow_0tgrn11</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_0g4aus9</bpmn2:outgoing>
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.processJavaException(execution)]]></bpmn2:script>
+ </bpmn2:scriptTask>
+ <bpmn2:sequenceFlow id="SequenceFlow_0g4aus9" sourceRef="processJavaError" targetRef="EndEvent_117lkk3" />
+ </bpmn2:subProcess>
+ <bpmn2:scriptTask id="decomposeService_ScriptTask" name="Decompose Service" scriptFormat="groovy">
+ <bpmn2:incoming>SequenceFlow_12vj619</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_0tj2l1j</bpmn2:outgoing>
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*
+def dds = new DecomposeService()
+dds.actuallyDecomposeService(execution)]]></bpmn2:script>
+ </bpmn2:scriptTask>
+ <bpmn2:sequenceFlow id="SequenceFlow_0tj2l1j" sourceRef="decomposeService_ScriptTask" targetRef="EndEvent_3" />
+ <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+ <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_0yxffj2</bpmn2:outgoing>
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*
+def dds = new DecomposeService()
+dds.preProcessRequest(execution)
+]]></bpmn2:script>
+ </bpmn2:scriptTask>
+ <bpmn2:sequenceFlow id="SequenceFlow_0yxffj2" sourceRef="preProcessRequest_ScriptTask" targetRef="queryCatalogDB_ScriptTask" />
+ <bpmn2:sequenceFlow id="SequenceFlow_12vj619" sourceRef="queryCatalogDB_ScriptTask" targetRef="decomposeService_ScriptTask" />
+ <bpmn2:scriptTask id="queryCatalogDB_ScriptTask" name="Query Catalog DB" scriptFormat="groovy">
+ <bpmn2:incoming>SequenceFlow_0yxffj2</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_12vj619</bpmn2:outgoing>
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*
+def dds = new DecomposeService()
+dds.queryCatalogDb(execution)]]></bpmn2:script>
+ </bpmn2:scriptTask>
+ </bpmn2:process>
+ <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+ <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DecomposeService">
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent">
+ <dc:Bounds x="152" y="79" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="147" y="120" width="48" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+ <di:waypoint xsi:type="dc:Point" x="188" y="97" />
+ <di:waypoint xsi:type="dc:Point" x="301" y="97" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="245" y="82" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3">
+ <dc:Bounds x="898" y="79" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="916" y="120" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="SubProcess_06d8lk8_di" bpmnElement="SubProcess_06d8lk8" isExpanded="true">
+ <dc:Bounds x="142" y="243" width="417" height="161" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="StartEvent_0yljq9y_di" bpmnElement="StartEvent_0yljq9y">
+ <dc:Bounds x="179" y="310" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="197" y="351" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_117lkk3_di" bpmnElement="EndEvent_117lkk3">
+ <dc:Bounds x="465" y="310" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="483" y="351" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0tgrn11_di" bpmnElement="SequenceFlow_0tgrn11">
+ <di:waypoint xsi:type="dc:Point" x="215" y="328" />
+ <di:waypoint xsi:type="dc:Point" x="290" y="328" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="253" y="313" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ScriptTask_0twd3su_di" bpmnElement="decomposeService_ScriptTask">
+ <dc:Bounds x="708" y="57" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0tj2l1j_di" bpmnElement="SequenceFlow_0tj2l1j">
+ <di:waypoint xsi:type="dc:Point" x="808" y="97" />
+ <di:waypoint xsi:type="dc:Point" x="898" y="97" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="853" y="82" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+ <dc:Bounds x="301" y="57" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0yxffj2_di" bpmnElement="SequenceFlow_0yxffj2">
+ <di:waypoint xsi:type="dc:Point" x="401" y="97" />
+ <di:waypoint xsi:type="dc:Point" x="513" y="97" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="457" y="82" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ScriptTask_0b5155c_di" bpmnElement="processJavaError">
+ <dc:Bounds x="290" y="288" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0g4aus9_di" bpmnElement="SequenceFlow_0g4aus9">
+ <di:waypoint xsi:type="dc:Point" x="390" y="328" />
+ <di:waypoint xsi:type="dc:Point" x="465" y="328" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="428" y="313" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_12vj619_di" bpmnElement="SequenceFlow_12vj619">
+ <di:waypoint xsi:type="dc:Point" x="613" y="97" />
+ <di:waypoint xsi:type="dc:Point" x="708" y="97" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="661" y="82" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ScriptTask_17xngtx_di" bpmnElement="queryCatalogDB_ScriptTask">
+ <dc:Bounds x="513" y="57" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/BuildingBlock/ManualHandling.bpmn b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/BuildingBlock/ManualHandling.bpmn new file mode 100644 index 0000000000..2f30864c39 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/BuildingBlock/ManualHandling.bpmn @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="ManualHandling" name="ManualHandling" isExecutable="true"> + <bpmn2:startEvent id="createSI_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_0jav6cu</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_192yimz</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:subProcess id="SubProcess_06d8lk8" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_0yljq9y"> + <bpmn2:outgoing>SequenceFlow_0tgrn11</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_117lkk3"> + <bpmn2:incoming>SequenceFlow_0g4aus9</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0tgrn11" sourceRef="StartEvent_0yljq9y" targetRef="processJavaError" /> + <bpmn2:scriptTask id="processJavaError" name="Process Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0tgrn11</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0g4aus9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0g4aus9" sourceRef="processJavaError" targetRef="EndEvent_117lkk3" /> + </bpmn2:subProcess> + <bpmn2:sequenceFlow id="SequenceFlow_0jav6cu" sourceRef="createSI_startEvent" targetRef="Task_1qrt7xw" /> + <bpmn2:sequenceFlow id="SequenceFlow_0zgg47r" sourceRef="Task_1qrt7xw" targetRef="ManualHandlingUserTask" /> + <bpmn2:scriptTask id="Task_1qrt7xw" name="PreProcess Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0jav6cu</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0zgg47r</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* +def mh = new ManualHandling() +mh.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_192yimz" sourceRef="ManualHandlingUserTask" targetRef="EndEvent_3" /> + <bpmn2:userTask id="ManualHandlingUserTask" name="Manual Handling User Task"> + <bpmn2:extensionElements> + <camunda:taskListener event="complete"> + <camunda:script scriptFormat="groovy"><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* +def mh = new ManualHandling() +mh.completeTask(task)]]></camunda:script> + </camunda:taskListener> + <camunda:properties> + <camunda:property /> + </camunda:properties> + <camunda:taskListener event="create"> + <camunda:script scriptFormat="groovy"><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* +def mh = new ManualHandling() +mh.setTaskVariables(task)]]></camunda:script> + </camunda:taskListener> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0zgg47r</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_192yimz</bpmn2:outgoing> + </bpmn2:userTask> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ManualHandling"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent"> + <dc:Bounds x="152" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="147" y="120" width="48" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3"> + <dc:Bounds x="598" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="616" y="120" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_06d8lk8_di" bpmnElement="SubProcess_06d8lk8" isExpanded="true"> + <dc:Bounds x="142" y="243" width="417" height="161" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0yljq9y_di" bpmnElement="StartEvent_0yljq9y"> + <dc:Bounds x="179" y="310" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="197" y="351" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_117lkk3_di" bpmnElement="EndEvent_117lkk3"> + <dc:Bounds x="465" y="310" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="483" y="351" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0tgrn11_di" bpmnElement="SequenceFlow_0tgrn11"> + <di:waypoint xsi:type="dc:Point" x="215" y="328" /> + <di:waypoint xsi:type="dc:Point" x="290" y="328" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="253" y="313" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0b5155c_di" bpmnElement="processJavaError"> + <dc:Bounds x="290" y="288" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0g4aus9_di" bpmnElement="SequenceFlow_0g4aus9"> + <di:waypoint xsi:type="dc:Point" x="390" y="328" /> + <di:waypoint xsi:type="dc:Point" x="465" y="328" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="428" y="313" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0jav6cu_di" bpmnElement="SequenceFlow_0jav6cu"> + <di:waypoint xsi:type="dc:Point" x="188" y="97" /> + <di:waypoint xsi:type="dc:Point" x="238" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="213" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0zgg47r_di" bpmnElement="SequenceFlow_0zgg47r"> + <di:waypoint xsi:type="dc:Point" x="338" y="97" /> + <di:waypoint xsi:type="dc:Point" x="413" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="376" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_055s81f_di" bpmnElement="Task_1qrt7xw"> + <dc:Bounds x="238" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_192yimz_di" bpmnElement="SequenceFlow_192yimz"> + <di:waypoint xsi:type="dc:Point" x="513" y="97" /> + <di:waypoint xsi:type="dc:Point" x="598" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="556" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="UserTask_1krqrz1_di" bpmnElement="ManualHandlingUserTask"> + <dc:Bounds x="413" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/BuildingBlock/RainyDayHandler.bpmn b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/BuildingBlock/RainyDayHandler.bpmn new file mode 100644 index 0000000000..2638d85a8a --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/BuildingBlock/RainyDayHandler.bpmn @@ -0,0 +1,186 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="RainyDayHandler" name="RainyDayHandler" isExecutable="true"> + <bpmn2:startEvent id="createSI_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSI_startEvent" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_0uwsjoh</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1f0bjoy</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:subProcess id="SubProcess_06d8lk8" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_0yljq9y"> + <bpmn2:outgoing>SequenceFlow_0tgrn11</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_117lkk3"> + <bpmn2:incoming>SequenceFlow_0g4aus9</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0tgrn11" sourceRef="StartEvent_0yljq9y" targetRef="processJavaError" /> + <bpmn2:scriptTask id="processJavaError" name="Process Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0tgrn11</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0g4aus9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0g4aus9" sourceRef="processJavaError" targetRef="EndEvent_117lkk3" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0yxffj2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* +def rdh = new RainyDayHandler() +rdh.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0yxffj2" sourceRef="preProcessRequest_ScriptTask" targetRef="QueryPolicyEngine" /> + <bpmn2:sequenceFlow id="SequenceFlow_12vj619" sourceRef="QueryPolicyEngine" targetRef="ExclusiveGateway_0kqwevj" /> + <bpmn2:scriptTask id="QueryPolicyEngine" name="Query Policy " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0yxffj2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12vj619</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* +def rdh = new RainyDayHandler() +rdh.queryPolicy(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0kqwevj" name="Is Manual Handling Requested?" default="SequenceFlow_0uwsjoh"> + <bpmn2:incoming>SequenceFlow_12vj619</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0uwsjoh</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0navei4</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0uwsjoh" name="no" sourceRef="ExclusiveGateway_0kqwevj" targetRef="EndEvent_3" /> + <bpmn2:sequenceFlow id="SequenceFlow_0navei4" name="yes" sourceRef="ExclusiveGateway_0kqwevj" targetRef="Task_1qu3p0x"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("handlingCode") == "Manual"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="Task_1qu3p0x" name="Manual Handling" calledElement="ManualHandling"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="vnfType" target="vnfType" /> + <camunda:in source="requestorId" target="requestorId" /> + <camunda:in source="currentActivity" target="currentActivity" /> + <camunda:in source="failedActivity" target="failedActivity" /> + <camunda:in source="workStep" target="workStep" /> + <camunda:in source="errorCode" target="errorCode" /> + <camunda:in source="errorText" target="errorText" /> + <camunda:in source="RFH_validResponses" target="validResponses" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="responseValue" target="handlingCode" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0navei4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1f0bjoy</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1f0bjoy" sourceRef="Task_1qu3p0x" targetRef="EndEvent_3" /> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="RainyDayHandler"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent"> + <dc:Bounds x="152" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="147" y="120" width="48" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="188" y="97" /> + <di:waypoint xsi:type="dc:Point" x="301" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="245" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3"> + <dc:Bounds x="1025" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1043" y="120" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_06d8lk8_di" bpmnElement="SubProcess_06d8lk8" isExpanded="true"> + <dc:Bounds x="142" y="243" width="417" height="161" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0yljq9y_di" bpmnElement="StartEvent_0yljq9y"> + <dc:Bounds x="179" y="310" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="197" y="351" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_117lkk3_di" bpmnElement="EndEvent_117lkk3"> + <dc:Bounds x="465" y="310" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="483" y="351" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0tgrn11_di" bpmnElement="SequenceFlow_0tgrn11"> + <di:waypoint xsi:type="dc:Point" x="215" y="328" /> + <di:waypoint xsi:type="dc:Point" x="290" y="328" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="253" y="313" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="301" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0yxffj2_di" bpmnElement="SequenceFlow_0yxffj2"> + <di:waypoint xsi:type="dc:Point" x="401" y="97" /> + <di:waypoint xsi:type="dc:Point" x="513" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="457" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0b5155c_di" bpmnElement="processJavaError"> + <dc:Bounds x="290" y="288" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0g4aus9_di" bpmnElement="SequenceFlow_0g4aus9"> + <di:waypoint xsi:type="dc:Point" x="390" y="328" /> + <di:waypoint xsi:type="dc:Point" x="465" y="328" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="428" y="313" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12vj619_di" bpmnElement="SequenceFlow_12vj619"> + <di:waypoint xsi:type="dc:Point" x="613" y="97" /> + <di:waypoint xsi:type="dc:Point" x="881" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="747" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_17xngtx_di" bpmnElement="QueryPolicyEngine"> + <dc:Bounds x="513" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0kqwevj_di" bpmnElement="ExclusiveGateway_0kqwevj" isMarkerVisible="true"> + <dc:Bounds x="881" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="876" y="122" width="59" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0uwsjoh_di" bpmnElement="SequenceFlow_0uwsjoh"> + <di:waypoint xsi:type="dc:Point" x="931" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1025" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="973" y="82" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0navei4_di" bpmnElement="SequenceFlow_0navei4"> + <di:waypoint xsi:type="dc:Point" x="906" y="72" /> + <di:waypoint xsi:type="dc:Point" x="906" y="51" /> + <di:waypoint xsi:type="dc:Point" x="906" y="51" /> + <di:waypoint xsi:type="dc:Point" x="906" y="19" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="912" y="51" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0cg4bcv_di" bpmnElement="Task_1qu3p0x"> + <dc:Bounds x="856" y="-61" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1f0bjoy_di" bpmnElement="SequenceFlow_1f0bjoy"> + <di:waypoint xsi:type="dc:Point" x="956" y="-21" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="-21" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="79" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1000" y="-36" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/CompleteMsoProcess.bpmn b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/CompleteMsoProcess.bpmn index cd977e3ae6..2629ea7437 100644 --- a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/CompleteMsoProcess.bpmn +++ b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/CompleteMsoProcess.bpmn @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_EsMs0HcuEeW2U_kkOHX1ZQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.6.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_EsMs0HcuEeW2U_kkOHX1ZQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> <bpmn2:process id="CompleteMsoProcess" name="CompleteMsoProcess" isExecutable="true"> <bpmn2:scriptTask id="preProcessRequest" name="Pre-Process Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> @@ -10,25 +10,12 @@ preProcessRequestData.preProcessRequest(execution) ]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest" targetRef="ExclusiveGateway_5" /> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest" targetRef="ExclusiveGateway_1r258d4" /> <bpmn2:startEvent id="StartEvent_1" name="Start With Message "> <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> <bpmn2:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_2" /> </bpmn2:startEvent> <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="StartEvent_1" targetRef="preProcessRequest" /> - <bpmn2:parallelGateway id="ExclusiveGateway_5"> - <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_45</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_46</bpmn2:outgoing> - </bpmn2:parallelGateway> - <bpmn2:sequenceFlow id="SequenceFlow_45" name="" sourceRef="ExclusiveGateway_5" targetRef="ParallelGateway_3" /> - <bpmn2:sequenceFlow id="SequenceFlow_46" name="" sourceRef="ExclusiveGateway_5" targetRef="ExclusiveGateway_3" /> - <bpmn2:exclusiveGateway id="ParallelGateway_3" name="Notification Url Present?" default="SequenceFlow_40"> - <bpmn2:incoming>SequenceFlow_45</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_40</bpmn2:outgoing> - <bpmn2:outgoing>if_notifcationURLExists</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_40" name="No" sourceRef="ParallelGateway_3" targetRef="ParallelGateway_5" /> <bpmn2:subProcess id="subProcessExceptionCompleteMSO" name="Sub Process Exception Complete MSO" triggeredByEvent="true"> <bpmn2:endEvent id="endEventExceptionCompleteMSO"> <bpmn2:extensionElements> @@ -47,60 +34,23 @@ preProcessRequestData.preProcessRequest(execution) </bpmn2:startEvent> <bpmn2:sequenceFlow id="SequenceFlow_1i1h3il" sourceRef="startEventExceptionCompleteMSO" targetRef="endEventExceptionCompleteMSO" /> </bpmn2:subProcess> - <bpmn2:exclusiveGateway id="ParallelGateway_7"> - <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_24</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_39</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_39" name="" sourceRef="ParallelGateway_7" targetRef="ParallelGateway_6" /> <bpmn2:endEvent id="EndEvent_4"> <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> <bpmn2:errorEventDefinition id="ErrorEventDefinition_5" errorRef="Error_3" /> </bpmn2:endEvent> - <bpmn2:scriptTask id="ScriptTask_3" name="Prepare Update DB Request" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_72</bpmn2:incoming> + <bpmn2:scriptTask id="ScriptTask_3" name="Prepare Infra Update DB Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_127i45q</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* def completeMsoProcess = new CompleteMsoProcess() completeMsoProcess.setUpdateDBstatustoSuccessPayload(execution)]]></bpmn2:script> </bpmn2:scriptTask> <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="ScriptTask_3" targetRef="updateInfraRequest" /> - <bpmn2:endEvent id="EndEvent_5"> - <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_3" errorRef="Error_3" /> - </bpmn2:endEvent> - <bpmn2:exclusiveGateway id="ExclusiveGateway_3" name="Active Request?" default="SequenceFlow_72"> - <bpmn2:incoming>SequenceFlow_46</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_72</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_81</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_72" name="No" sourceRef="ExclusiveGateway_3" targetRef="ScriptTask_3" /> - <bpmn2:sequenceFlow id="SequenceFlow_81" name="Yes" sourceRef="ExclusiveGateway_3" targetRef="prepareUpdateRequest"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CMSO_request_id-Ok") ==true}]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:scriptTask id="BuildErrorMessage1" name="Build Error Message" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_25</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_1q7eer1</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> - <bpmn2:script><![CDATA[//println "INSIDE --> Build Error Message @@@@" -import org.openecomp.mso.bpmn.common.scripts.* -def buildDataErrorMessage = new CompleteMsoProcess() -buildDataErrorMessage.buildDataError(execution, "Complete --Update DB status to SUCCESS-- Failed")]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="BuildErrorMessage1" targetRef="EndEvent_5" /> - <bpmn2:scriptTask id="prepareUpdateRequest" name="Prepare Update DB Request" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_81</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_49</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* -def completeMsoProcess = new CompleteMsoProcess() -completeMsoProcess.updateDBStatusToSuccessPayload(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_49" name="" sourceRef="prepareUpdateRequest" targetRef="updateDBStatus" /> - <bpmn2:serviceTask id="updateInfraRequest" name="Update DB status to SUCCESS"> + <bpmn2:serviceTask id="updateInfraRequest" name="Update Infra DB status to SUCCESS"> <bpmn2:extensionElements> <camunda:connector> <camunda:inputOutput> - <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> <camunda:inputParameter name="payload"><![CDATA[${execution.getVariable("CMSO_setUpdateDBstatustoSuccessPayload")}]]></camunda:inputParameter> <camunda:inputParameter name="headers"> <camunda:map> @@ -119,10 +69,6 @@ completeMsoProcess.updateDBStatusToSuccessPayload(execution)]]></bpmn2:script> <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> </bpmn2:serviceTask> <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="updateInfraRequest" targetRef="ExclusiveGateway_7" /> - <bpmn2:boundaryEvent id="BoundaryEvent_6" name="" attachedToRef="updateDBStatus"> - <bpmn2:outgoing>SequenceFlow_1q7eer1</bpmn2:outgoing> - <bpmn2:errorEventDefinition id="_ErrorEventDefinition_83" errorRef="Error_1" /> - </bpmn2:boundaryEvent> <bpmn2:scriptTask id="BuildErrorMessage" name="Build Error Message" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_0mipf25</bpmn2:incoming> @@ -134,78 +80,20 @@ def buildDataErrorMessage = new CompleteMsoProcess() buildDataErrorMessage.buildDataError(execution, "Complete MSO -- Update DB status to SUCCESS -- Failed")]]></bpmn2:script> </bpmn2:scriptTask> <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="BuildErrorMessage" targetRef="EndEvent_4" /> - <bpmn2:exclusiveGateway id="ExclusiveGateway_10" default="SequenceFlow_25"> - <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_25</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_24" name="" sourceRef="ExclusiveGateway_10" targetRef="ParallelGateway_7"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CMSO_updateRequestResponseCode")==200}]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_25" name="" sourceRef="ExclusiveGateway_10" targetRef="BuildErrorMessage1" /> <bpmn2:exclusiveGateway id="ExclusiveGateway_7" default="SequenceFlow_1"> <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_03z8rch</bpmn2:outgoing> </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ExclusiveGateway_7" targetRef="ParallelGateway_7"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CMSO_updateRequestResponseCode")==200}]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="ExclusiveGateway_7" targetRef="BuildErrorMessage" /> - <bpmn2:serviceTask id="updateDBStatus" name="Update DB status to SUCCESS"> - <bpmn2:extensionElements> - <camunda:connector> - <camunda:inputOutput> - <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter> - <camunda:inputParameter name="payload"><![CDATA[${execution.getVariable("CMSO_updateDBStatusToSuccessPayload")}]]></camunda:inputParameter> - <camunda:inputParameter name="headers"> - <camunda:map> - <camunda:entry key="content-type">application/soap+xml</camunda:entry> - <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> - </camunda:map> - </camunda:inputParameter> - <camunda:inputParameter name="method">POST</camunda:inputParameter> - <camunda:outputParameter name="CMSO_updateRequestResponse"><![CDATA[${statusCode == null || statusCode == 204 ? "" : response}]]></camunda:outputParameter> - <camunda:outputParameter name="CMSO_updateRequestResponseCode">${statusCode}</camunda:outputParameter> - </camunda:inputOutput> - <camunda:connectorId>soap-http-connector</camunda:connectorId> - </camunda:connector> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_49</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="updateDBStatus" targetRef="ExclusiveGateway_10" /> <bpmn2:boundaryEvent id="BoundaryEvent_7" name="" attachedToRef="updateInfraRequest"> <bpmn2:outgoing>SequenceFlow_0mipf25</bpmn2:outgoing> <bpmn2:errorEventDefinition id="_ErrorEventDefinition_84" errorRef="Error_1" /> </bpmn2:boundaryEvent> - <bpmn2:exclusiveGateway id="ParallelGateway_5"> - <bpmn2:incoming>SequenceFlow_40</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_13qdn1s</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="ParallelGateway_5" targetRef="ParallelGateway_6" /> - <bpmn2:parallelGateway id="ParallelGateway_6"> - <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_39</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_33</bpmn2:outgoing> - </bpmn2:parallelGateway> - <bpmn2:sequenceFlow id="SequenceFlow_33" name="" sourceRef="ParallelGateway_6" targetRef="Done" /> - <bpmn2:scriptTask id="Done" name="Prepare Response" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_33</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> - <bpmn2:script><![CDATA[println "INSIDE --> Complete MSO Process Done SUCCESSFULLY" -import org.openecomp.mso.bpmn.common.scripts.* -def postProcessResponseData = new CompleteMsoProcess() -postProcessResponseData.postProcessResponse(execution) -println "CompleteMsoProcess Response -->" + "\n" + execution.getVariable("CompletionHandlerResponse")]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="Done" targetRef="EndEvent_1" /> <bpmn2:endEvent id="EndEvent_1"> - <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1pzb94j</bpmn2:incoming> <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_2" /> </bpmn2:endEvent> - <bpmn2:sequenceFlow id="SequenceFlow_1q7eer1" name="Connect Fault" sourceRef="BoundaryEvent_6" targetRef="BuildErrorMessage1" /> <bpmn2:sequenceFlow id="SequenceFlow_0mipf25" name="Connect Fault" sourceRef="BoundaryEvent_7" targetRef="BuildErrorMessage" /> <bpmn2:callActivity id="CallActivity_101qf6x" name="Call Notification Service" calledElement="${URN_mso_workflow_notification_name}"> <bpmn2:extensionElements> @@ -214,13 +102,66 @@ println "CompleteMsoProcess Response -->" + "\n" + execution.getVariable("Comple <camunda:in variables="all" /> <camunda:out variables="all" /> </bpmn2:extensionElements> - <bpmn2:incoming>if_notifcationURLExists</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_81</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_13qdn1s</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_13qdn1s" sourceRef="CallActivity_101qf6x" targetRef="ParallelGateway_5" /> - <bpmn2:sequenceFlow id="if_notifcationURLExists" name="Yes" sourceRef="ParallelGateway_3" targetRef="CallActivity_101qf6x"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CMSO_notification-url-Ok") ==true}]]></bpmn2:conditionExpression> + <bpmn2:sequenceFlow id="SequenceFlow_13qdn1s" sourceRef="CallActivity_101qf6x" targetRef="ParallelGateway_7" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_3" name="Active Request?" default="SequenceFlow_1dptl35"> + <bpmn2:incoming>SequenceFlow_067veaf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_81</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1dptl35</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ParallelGateway_7"> + <bpmn2:incoming>SequenceFlow_1dptl35</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_13qdn1s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1hpvwyt</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_81" name="Yes" sourceRef="ExclusiveGateway_3" targetRef="CallActivity_101qf6x"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CMSO_notification-url-Ok") ==true || execution.getVariable("CMSO_request_id-Ok") ==true}]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1dptl35" sourceRef="ExclusiveGateway_3" targetRef="ParallelGateway_7" /> + <bpmn2:parallelGateway id="ExclusiveGateway_1r258d4"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_067veaf</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0xe5zck</bpmn2:outgoing> + </bpmn2:parallelGateway> + <bpmn2:parallelGateway id="ExclusiveGateway_019d74x"> + <bpmn2:incoming>SequenceFlow_12he9a1</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1hpvwyt</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1g8ig3h</bpmn2:outgoing> + </bpmn2:parallelGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1g8ig3h" sourceRef="ExclusiveGateway_019d74x" targetRef="ScriptTask_0vyk0lo" /> + <bpmn2:sequenceFlow id="SequenceFlow_067veaf" sourceRef="ExclusiveGateway_1r258d4" targetRef="ExclusiveGateway_3" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_08yqzk9" name="Infra Check" default="SequenceFlow_1ffkc0n"> + <bpmn2:incoming>SequenceFlow_0xe5zck</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_127i45q</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1ffkc0n</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0xe5zck" sourceRef="ExclusiveGateway_1r258d4" targetRef="ExclusiveGateway_08yqzk9" /> + <bpmn2:sequenceFlow id="SequenceFlow_127i45q" sourceRef="ExclusiveGateway_08yqzk9" targetRef="ScriptTask_3"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CMSO_request_id-Ok") ==false}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1utv1g8"> + <bpmn2:incoming>SequenceFlow_03z8rch</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1ffkc0n</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12he9a1</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_03z8rch" sourceRef="ExclusiveGateway_7" targetRef="ExclusiveGateway_1utv1g8"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CMSO_updateRequestResponseCode")==200}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1ffkc0n" sourceRef="ExclusiveGateway_08yqzk9" targetRef="ExclusiveGateway_1utv1g8" /> + <bpmn2:sequenceFlow id="SequenceFlow_12he9a1" sourceRef="ExclusiveGateway_1utv1g8" targetRef="ExclusiveGateway_019d74x" /> + <bpmn2:sequenceFlow id="SequenceFlow_1hpvwyt" sourceRef="ParallelGateway_7" targetRef="ExclusiveGateway_019d74x" /> + <bpmn2:scriptTask id="ScriptTask_0vyk0lo" name="Prepare Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1g8ig3h</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1pzb94j</bpmn2:outgoing> + <bpmn2:script><![CDATA[println "INSIDE --> Complete MSO Process Done SUCCESSFULLY" +import org.openecomp.mso.bpmn.common.scripts.* +def postProcessResponseData = new CompleteMsoProcess() +postProcessResponseData.postProcessResponse(execution) +println "CompleteMsoProcess Response -->" + "\n" + execution.getVariable("CompletionHandlerResponse")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1pzb94j" sourceRef="ScriptTask_0vyk0lo" targetRef="EndEvent_1" /> </bpmn2:process> <bpmn2:message id="Message_2" name="CompleteMsoProcessRequest" /> <bpmn2:error id="Error_3" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> @@ -228,325 +169,254 @@ println "CompleteMsoProcess Response -->" + "\n" + execution.getVariable("Comple <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CompleteMsoProcess"> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_41" bpmnElement="StartEvent_1"> - <dc:Bounds x="106" y="297" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="132" y="338" width="50" height="24" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ParallelGateway_4" bpmnElement="ParallelGateway_3" isMarkerVisible="true"> - <dc:Bounds x="471" y="193" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="386" y="170" width="73" height="24" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ParallelGateway_6" bpmnElement="ParallelGateway_5" isMarkerVisible="true"> - <dc:Bounds x="811" y="193" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="836" y="248" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_59" bpmnElement="ExclusiveGateway_5"> - <dc:Bounds x="372" y="289" width="50" height="50" /> + <dc:Bounds x="67" y="297" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="397" y="344" width="0" height="0" /> + <dc:Bounds x="93" y="338" width="50" height="24" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ParallelGateway_7" bpmnElement="ParallelGateway_6"> - <dc:Bounds x="1162" y="290" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1187" y="345" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_32" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_ParallelGateway_6" targetElement="_BPMNShape_ParallelGateway_7"> - <di:waypoint xsi:type="dc:Point" x="861" y="218" /> - <di:waypoint xsi:type="dc:Point" x="1187" y="218" /> - <di:waypoint xsi:type="dc:Point" x="1187" y="290" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1024" y="203" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_34" bpmnElement="preProcessRequest"> - <dc:Bounds x="226" y="275" width="100" height="80" /> + <dc:Bounds x="167" y="275" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_34" targetElement="_BPMNShape_ExclusiveGateway_59"> - <di:waypoint xsi:type="dc:Point" x="326" y="315" /> - <di:waypoint xsi:type="dc:Point" x="372" y="314" /> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_34" targetElement="ParallelGateway_1domt5l_di"> + <di:waypoint xsi:type="dc:Point" x="267" y="316" /> + <di:waypoint xsi:type="dc:Point" x="322" y="316" /> <bpmndi:BPMNLabel> - <dc:Bounds x="338" y="315" width="0" height="0" /> + <dc:Bounds x="295" y="301" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_StartEvent_41" targetElement="_BPMNShape_ScriptTask_34"> - <di:waypoint xsi:type="dc:Point" x="142" y="315" /> - <di:waypoint xsi:type="dc:Point" x="226" y="315" /> + <di:waypoint xsi:type="dc:Point" x="103" y="315" /> + <di:waypoint xsi:type="dc:Point" x="167" y="315" /> <bpmndi:BPMNLabel> - <dc:Bounds x="184" y="300" width="0" height="0" /> + <dc:Bounds x="135" y="300" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_60" bpmnElement="ExclusiveGateway_3" isMarkerVisible="true"> - <dc:Bounds x="475" y="538" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="533" y="553" width="80" height="12" /> - </bpmndi:BPMNLabel> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_51" bpmnElement="updateInfraRequest"> + <dc:Bounds x="657" y="451" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ParallelGateway_9" bpmnElement="ParallelGateway_7" isMarkerVisible="true"> - <dc:Bounds x="955" y="538" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="980" y="593" width="0" height="0" /> - </bpmndi:BPMNLabel> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_13" bpmnElement="subProcessExceptionCompleteMSO" isExpanded="true"> + <dc:Bounds x="171" y="709" width="427" height="169" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_41" bpmnElement="SequenceFlow_39" sourceElement="_BPMNShape_ParallelGateway_9" targetElement="_BPMNShape_ParallelGateway_7"> - <di:waypoint xsi:type="dc:Point" x="1005" y="563" /> - <di:waypoint xsi:type="dc:Point" x="1187" y="563" /> - <di:waypoint xsi:type="dc:Point" x="1187" y="340" /> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_110" bpmnElement="endEventExceptionCompleteMSO"> + <dc:Bounds x="471" y="776" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1096" y="548" width="0" height="0" /> + <dc:Bounds x="489" y="817" width="0" height="0" /> </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_40" sourceElement="_BPMNShape_ParallelGateway_4" targetElement="_BPMNShape_ParallelGateway_6"> - <di:waypoint xsi:type="dc:Point" x="496" y="243" /> - <di:waypoint xsi:type="dc:Point" x="496" y="306" /> - <di:waypoint xsi:type="dc:Point" x="836" y="306" /> - <di:waypoint xsi:type="dc:Point" x="836" y="243" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_51" bpmnElement="startEventExceptionCompleteMSO"> + <dc:Bounds x="219" y="776" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="502" y="248.42647058823525" width="14" height="12" /> + <dc:Bounds x="237" y="817" width="0" height="0" /> </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_51" bpmnElement="updateInfraRequest"> - <dc:Bounds x="714" y="614" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_52" bpmnElement="updateDBStatus"> - <dc:Bounds x="711" y="433" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_47" bpmnElement="SequenceFlow_45" sourceElement="_BPMNShape_ExclusiveGateway_59" targetElement="_BPMNShape_ParallelGateway_4"> - <di:waypoint xsi:type="dc:Point" x="397" y="289" /> - <di:waypoint xsi:type="dc:Point" x="397" y="218" /> - <di:waypoint xsi:type="dc:Point" x="471" y="218" /> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_63" bpmnElement="ExclusiveGateway_7" isMarkerVisible="true"> + <dc:Bounds x="816" y="465" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="412" y="253.5" width="0" height="0" /> + <dc:Bounds x="841" y="520" width="0" height="0" /> </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_64" bpmnElement="prepareUpdateRequest"> - <dc:Bounds x="563" y="433" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_48" bpmnElement="SequenceFlow_46" sourceElement="_BPMNShape_ExclusiveGateway_59" targetElement="_BPMNShape_ExclusiveGateway_60"> - <di:waypoint xsi:type="dc:Point" x="397" y="339" /> - <di:waypoint xsi:type="dc:Point" x="397" y="563" /> - <di:waypoint xsi:type="dc:Point" x="475" y="563" /> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_51" targetElement="_BPMNShape_ExclusiveGateway_63"> + <di:waypoint xsi:type="dc:Point" x="757" y="491" /> + <di:waypoint xsi:type="dc:Point" x="816" y="490" /> <bpmndi:BPMNLabel> - <dc:Bounds x="412" y="451" width="0" height="0" /> + <dc:Bounds x="942" y="534" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_50" bpmnElement="SequenceFlow_49" sourceElement="_BPMNShape_ScriptTask_64" targetElement="_BPMNShape_ScriptTask_52"> - <di:waypoint xsi:type="dc:Point" x="663" y="473" /> - <di:waypoint xsi:type="dc:Point" x="711" y="473" /> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_111" bpmnElement="EndEvent_4"> + <dc:Bounds x="953" y="578" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="681" y="473" width="0" height="0" /> + <dc:Bounds x="971" y="619" width="0" height="0" /> </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_73" bpmnElement="SequenceFlow_72" sourceElement="_BPMNShape_ExclusiveGateway_60" targetElement="_BPMNShape_ScriptTask_88"> - <di:waypoint xsi:type="dc:Point" x="500" y="588" /> - <di:waypoint xsi:type="dc:Point" x="500" y="654" /> - <di:waypoint xsi:type="dc:Point" x="563" y="654" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_76" bpmnElement="BuildErrorMessage"> + <dc:Bounds x="792" y="556" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_ExclusiveGateway_63" targetElement="_BPMNShape_ScriptTask_76"> + <di:waypoint xsi:type="dc:Point" x="841" y="515" /> + <di:waypoint xsi:type="dc:Point" x="842" y="556" /> <bpmndi:BPMNLabel> - <dc:Bounds x="506" y="611" width="14" height="12" /> + <dc:Bounds x="886" y="342" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_82" bpmnElement="SequenceFlow_81" sourceElement="_BPMNShape_ExclusiveGateway_60" targetElement="_BPMNShape_ScriptTask_64"> - <di:waypoint xsi:type="dc:Point" x="500" y="538" /> - <di:waypoint xsi:type="dc:Point" x="500" y="473" /> - <di:waypoint xsi:type="dc:Point" x="563" y="473" /> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_76" targetElement="_BPMNShape_EndEvent_111"> + <di:waypoint xsi:type="dc:Point" x="892" y="596" /> + <di:waypoint xsi:type="dc:Point" x="953" y="596" /> <bpmndi:BPMNLabel> - <dc:Bounds x="505" y="492" width="18" height="12" /> + <dc:Bounds x="923" y="596" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_SubProcess_13" bpmnElement="subProcessExceptionCompleteMSO" isExpanded="true"> - <dc:Bounds x="166" y="858" width="427" height="169" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_110" bpmnElement="endEventExceptionCompleteMSO"> - <dc:Bounds x="466" y="925" width="36" height="36" /> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_128" bpmnElement="EndEvent_1"> + <dc:Bounds x="1270" y="297" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="484" y="966" width="0" height="0" /> + <dc:Bounds x="1288" y="338" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_StartEvent_51" bpmnElement="startEventExceptionCompleteMSO"> - <dc:Bounds x="214" y="925" width="36" height="36" /> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_29" bpmnElement="BoundaryEvent_7"> + <dc:Bounds x="686" y="513" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="232" y="966" width="0" height="0" /> + <dc:Bounds x="979" y="395" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_63" bpmnElement="ExclusiveGateway_7" isMarkerVisible="true"> - <dc:Bounds x="873" y="628" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="898" y="683" width="0" height="0" /> - </bpmndi:BPMNLabel> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_88" bpmnElement="ScriptTask_3"> + <dc:Bounds x="506" y="451" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_51" targetElement="_BPMNShape_ExclusiveGateway_63"> - <di:waypoint xsi:type="dc:Point" x="814" y="654" /> - <di:waypoint xsi:type="dc:Point" x="873" y="653" /> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_88" targetElement="_BPMNShape_ScriptTask_51"> + <di:waypoint xsi:type="dc:Point" x="606" y="491" /> + <di:waypoint xsi:type="dc:Point" x="657" y="491" /> <bpmndi:BPMNLabel> - <dc:Bounds x="999" y="697" width="0" height="0" /> + <dc:Bounds x="626" y="515" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ExclusiveGateway_63" targetElement="_BPMNShape_ParallelGateway_9"> - <di:waypoint xsi:type="dc:Point" x="923" y="653" /> - <di:waypoint xsi:type="dc:Point" x="980" y="653" /> - <di:waypoint xsi:type="dc:Point" x="980" y="588" /> + <bpmndi:BPMNEdge id="SequenceFlow_0mipf25_di" bpmnElement="SequenceFlow_0mipf25"> + <di:waypoint xsi:type="dc:Point" x="704" y="549" /> + <di:waypoint xsi:type="dc:Point" x="704" y="596" /> + <di:waypoint xsi:type="dc:Point" x="792" y="596" /> <bpmndi:BPMNLabel> - <dc:Bounds x="899" y="611" width="0" height="0" /> + <dc:Bounds x="623" y="563" width="68" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_111" bpmnElement="EndEvent_4"> - <dc:Bounds x="1010" y="741" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1028" y="782" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_76" bpmnElement="BuildErrorMessage"> - <dc:Bounds x="849" y="719" width="100" height="80" /> + <bpmndi:BPMNShape id="CallActivity_101qf6x_di" bpmnElement="CallActivity_101qf6x"> + <dc:Bounds x="633" y="186" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_ExclusiveGateway_63" targetElement="_BPMNShape_ScriptTask_76"> - <di:waypoint xsi:type="dc:Point" x="898" y="678" /> - <di:waypoint xsi:type="dc:Point" x="899" y="719" /> + <bpmndi:BPMNEdge id="SequenceFlow_13qdn1s_di" bpmnElement="SequenceFlow_13qdn1s"> + <di:waypoint xsi:type="dc:Point" x="733" y="226" /> + <di:waypoint xsi:type="dc:Point" x="888" y="226" /> <bpmndi:BPMNLabel> - <dc:Bounds x="943" y="505" width="0" height="0" /> + <dc:Bounds x="811" y="211" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_76" targetElement="_BPMNShape_EndEvent_111"> - <di:waypoint xsi:type="dc:Point" x="949" y="759" /> - <di:waypoint xsi:type="dc:Point" x="1010" y="759" /> + <bpmndi:BPMNEdge id="SequenceFlow_1i1h3il_di" bpmnElement="SequenceFlow_1i1h3il"> + <di:waypoint xsi:type="dc:Point" x="255" y="794" /> + <di:waypoint xsi:type="dc:Point" x="471" y="794" /> <bpmndi:BPMNLabel> - <dc:Bounds x="980" y="759" width="0" height="0" /> + <dc:Bounds x="363" y="779" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_77" bpmnElement="Done"> - <dc:Bounds x="1253" y="276" width="100" height="80" /> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_60" bpmnElement="ExclusiveGateway_3" isMarkerVisible="true"> + <dc:Bounds x="394" y="201" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="326" y="196" width="80" height="12" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_66" bpmnElement="ExclusiveGateway_10" isMarkerVisible="true"> - <dc:Bounds x="873" y="447" width="50" height="50" /> + <bpmndi:BPMNShape id="_BPMNShape_ParallelGateway_9" bpmnElement="ParallelGateway_7" isMarkerVisible="true"> + <dc:Bounds x="888" y="201" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="898" y="502" width="0" height="0" /> + <dc:Bounds x="913" y="256" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_ScriptTask_52" targetElement="_BPMNShape_ExclusiveGateway_66"> - <di:waypoint xsi:type="dc:Point" x="811" y="473" /> - <di:waypoint xsi:type="dc:Point" x="873" y="472" /> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_82" bpmnElement="SequenceFlow_81"> + <di:waypoint xsi:type="dc:Point" x="444" y="226" /> + <di:waypoint xsi:type="dc:Point" x="633" y="226" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1005" y="473" width="0" height="0" /> + <dc:Bounds x="552" y="234" width="18" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ExclusiveGateway_66" targetElement="_BPMNShape_ParallelGateway_9"> - <di:waypoint xsi:type="dc:Point" x="923" y="472" /> - <di:waypoint xsi:type="dc:Point" x="980" y="472" /> - <di:waypoint xsi:type="dc:Point" x="980" y="538" /> + <bpmndi:BPMNEdge id="SequenceFlow_1dptl35_di" bpmnElement="SequenceFlow_1dptl35"> + <di:waypoint xsi:type="dc:Point" x="419" y="251" /> + <di:waypoint xsi:type="dc:Point" x="419" y="333" /> + <di:waypoint xsi:type="dc:Point" x="913" y="333" /> + <di:waypoint xsi:type="dc:Point" x="913" y="251" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1092" y="473" width="0" height="0" /> + <dc:Bounds x="448" y="273" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_79" bpmnElement="BuildErrorMessage1"> - <dc:Bounds x="849" y="326" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="SequenceFlow_25" sourceElement="_BPMNShape_ExclusiveGateway_66" targetElement="_BPMNShape_ScriptTask_79"> - <di:waypoint xsi:type="dc:Point" x="898" y="447" /> - <di:waypoint xsi:type="dc:Point" x="899" y="406" /> + <bpmndi:BPMNShape id="ParallelGateway_1domt5l_di" bpmnElement="ExclusiveGateway_1r258d4"> + <dc:Bounds x="322" y="291" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="986" y="427" width="0" height="0" /> + <dc:Bounds x="347" y="341" width="0" height="0" /> </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_113" bpmnElement="EndEvent_5"> - <dc:Bounds x="1010" y="348" width="36" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ParallelGateway_04tefv6_di" bpmnElement="ExclusiveGateway_019d74x"> + <dc:Bounds x="999" y="290" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1028" y="389" width="0" height="0" /> + <dc:Bounds x="1024" y="340" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_34" bpmnElement="SequenceFlow_33" sourceElement="_BPMNShape_ParallelGateway_7" targetElement="_BPMNShape_ScriptTask_77"> - <di:waypoint xsi:type="dc:Point" x="1212" y="315" /> - <di:waypoint xsi:type="dc:Point" x="1253" y="316" /> + <bpmndi:BPMNEdge id="SequenceFlow_1g8ig3h_di" bpmnElement="SequenceFlow_1g8ig3h"> + <di:waypoint xsi:type="dc:Point" x="1049" y="315" /> + <di:waypoint xsi:type="dc:Point" x="1104" y="315" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1202" y="316" width="0" height="0" /> + <dc:Bounds x="1077" y="300" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_79" targetElement="_BPMNShape_EndEvent_113"> - <di:waypoint xsi:type="dc:Point" x="949" y="366" /> - <di:waypoint xsi:type="dc:Point" x="1010" y="366" /> + <bpmndi:BPMNEdge id="SequenceFlow_067veaf_di" bpmnElement="SequenceFlow_067veaf"> + <di:waypoint xsi:type="dc:Point" x="347" y="291" /> + <di:waypoint xsi:type="dc:Point" x="347" y="226" /> + <di:waypoint xsi:type="dc:Point" x="394" y="226" /> <bpmndi:BPMNLabel> - <dc:Bounds x="969" y="366" width="0" height="0" /> + <dc:Bounds x="362" y="258.5" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_128" bpmnElement="EndEvent_1"> - <dc:Bounds x="1397" y="297" width="36" height="36" /> + <bpmndi:BPMNShape id="ExclusiveGateway_08yqzk9_di" bpmnElement="ExclusiveGateway_08yqzk9" isMarkerVisible="true"> + <dc:Bounds x="394" y="466" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1415" y="338" width="0" height="0" /> + <dc:Bounds x="390" y="516" width="57" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_77" targetElement="_BPMNShape_EndEvent_128"> - <di:waypoint xsi:type="dc:Point" x="1353" y="316" /> - <di:waypoint xsi:type="dc:Point" x="1397" y="315" /> + <bpmndi:BPMNEdge id="SequenceFlow_0xe5zck_di" bpmnElement="SequenceFlow_0xe5zck"> + <di:waypoint xsi:type="dc:Point" x="347" y="341" /> + <di:waypoint xsi:type="dc:Point" x="347" y="491" /> + <di:waypoint xsi:type="dc:Point" x="394" y="491" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1375" y="300.5" width="0" height="0" /> + <dc:Bounds x="362" y="416" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_28" bpmnElement="BoundaryEvent_6"> - <dc:Bounds x="742" y="415" width="36" height="36" /> + <bpmndi:BPMNEdge id="SequenceFlow_127i45q_di" bpmnElement="SequenceFlow_127i45q"> + <di:waypoint xsi:type="dc:Point" x="444" y="491" /> + <di:waypoint xsi:type="dc:Point" x="473" y="491" /> + <di:waypoint xsi:type="dc:Point" x="473" y="491" /> + <di:waypoint xsi:type="dc:Point" x="506" y="491" /> <bpmndi:BPMNLabel> - <dc:Bounds x="760" y="456" width="0" height="0" /> + <dc:Bounds x="488" y="491" width="0" height="0" /> </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_29" bpmnElement="BoundaryEvent_7"> - <dc:Bounds x="743" y="676" width="36" height="36" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1utv1g8_di" bpmnElement="ExclusiveGateway_1utv1g8" isMarkerVisible="true"> + <dc:Bounds x="999" y="391" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1036" y="558" width="0" height="0" /> + <dc:Bounds x="1024" y="441" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_88" bpmnElement="ScriptTask_3"> - <dc:Bounds x="563" y="614" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_88" targetElement="_BPMNShape_ScriptTask_51"> - <di:waypoint xsi:type="dc:Point" x="663" y="654" /> - <di:waypoint xsi:type="dc:Point" x="714" y="654" /> + <bpmndi:BPMNEdge id="SequenceFlow_03z8rch_di" bpmnElement="SequenceFlow_03z8rch"> + <di:waypoint xsi:type="dc:Point" x="866" y="490" /> + <di:waypoint xsi:type="dc:Point" x="1024" y="490" /> + <di:waypoint xsi:type="dc:Point" x="1024" y="441" /> <bpmndi:BPMNLabel> - <dc:Bounds x="683" y="678" width="0" height="0" /> + <dc:Bounds x="945" y="475" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1q7eer1_di" bpmnElement="SequenceFlow_1q7eer1"> - <di:waypoint xsi:type="dc:Point" x="760" y="415" /> - <di:waypoint xsi:type="dc:Point" x="760" y="366" /> - <di:waypoint xsi:type="dc:Point" x="849" y="366" /> + <bpmndi:BPMNEdge id="SequenceFlow_1ffkc0n_di" bpmnElement="SequenceFlow_1ffkc0n"> + <di:waypoint xsi:type="dc:Point" x="419" y="466" /> + <di:waypoint xsi:type="dc:Point" x="419" y="416" /> + <di:waypoint xsi:type="dc:Point" x="999" y="416" /> <bpmndi:BPMNLabel> - <dc:Bounds x="680" y="380" width="68" height="12" /> + <dc:Bounds x="434" y="441" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0mipf25_di" bpmnElement="SequenceFlow_0mipf25"> - <di:waypoint xsi:type="dc:Point" x="761" y="712" /> - <di:waypoint xsi:type="dc:Point" x="761" y="759" /> - <di:waypoint xsi:type="dc:Point" x="849" y="759" /> + <bpmndi:BPMNEdge id="SequenceFlow_12he9a1_di" bpmnElement="SequenceFlow_12he9a1"> + <di:waypoint xsi:type="dc:Point" x="1024" y="391" /> + <di:waypoint xsi:type="dc:Point" x="1024" y="367" /> + <di:waypoint xsi:type="dc:Point" x="1024" y="367" /> + <di:waypoint xsi:type="dc:Point" x="1024" y="340" /> <bpmndi:BPMNLabel> - <dc:Bounds x="680" y="726" width="68" height="12" /> + <dc:Bounds x="1039" y="367" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="CallActivity_101qf6x_di" bpmnElement="CallActivity_101qf6x"> - <dc:Bounds x="620" y="119" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_13qdn1s_di" bpmnElement="SequenceFlow_13qdn1s"> - <di:waypoint xsi:type="dc:Point" x="720" y="159" /> - <di:waypoint xsi:type="dc:Point" x="836" y="159" /> - <di:waypoint xsi:type="dc:Point" x="836" y="193" /> + <bpmndi:BPMNEdge id="SequenceFlow_1hpvwyt_di" bpmnElement="SequenceFlow_1hpvwyt"> + <di:waypoint xsi:type="dc:Point" x="938" y="226" /> + <di:waypoint xsi:type="dc:Point" x="1024" y="226" /> + <di:waypoint xsi:type="dc:Point" x="1024" y="290" /> <bpmndi:BPMNLabel> - <dc:Bounds x="778" y="144" width="0" height="0" /> + <dc:Bounds x="981" y="211" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1i1h3il_di" bpmnElement="SequenceFlow_1i1h3il"> - <di:waypoint xsi:type="dc:Point" x="250" y="943" /> - <di:waypoint xsi:type="dc:Point" x="466" y="943" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="358" y="928" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="if_notifcationURLExists"> - <di:waypoint xsi:type="dc:Point" x="496" y="193" /> - <di:waypoint xsi:type="dc:Point" x="496" y="159" /> - <di:waypoint xsi:type="dc:Point" x="620" y="159" /> + <bpmndi:BPMNShape id="ScriptTask_0vyk0lo_di" bpmnElement="ScriptTask_0vyk0lo"> + <dc:Bounds x="1104" y="275" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1pzb94j_di" bpmnElement="SequenceFlow_1pzb94j"> + <di:waypoint xsi:type="dc:Point" x="1204" y="315" /> + <di:waypoint xsi:type="dc:Point" x="1270" y="315" /> <bpmndi:BPMNLabel> - <dc:Bounds x="519" y="165" width="18" height="12" /> + <dc:Bounds x="1237" y="290" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> diff --git a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/FalloutHandler.bpmn b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/FalloutHandler.bpmn index 75e05cb58e..4ac34f9210 100644 --- a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/FalloutHandler.bpmn +++ b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/FalloutHandler.bpmn @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_3SPHsLr9EeWak-hhutJWuQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.6.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_3SPHsLr9EeWak-hhutJWuQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> <bpmn2:process id="FalloutHandler" name="Fallout Handler" isExecutable="true"> <bpmn2:parallelGateway id="ParallelGateway_1"> <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> @@ -133,7 +133,7 @@ falloutHandler.buildDBWorkflowException(execution, "FH_updateRequestInfraRespons <bpmn2:extensionElements> <camunda:connector> <camunda:inputOutput> - <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> <camunda:inputParameter name="method">POST</camunda:inputParameter> <camunda:inputParameter name="headers"> <camunda:map> @@ -207,7 +207,7 @@ execution.setVariable("FH_WorkflowException", wfe)]]></bpmn2:script> <bpmn2:terminateEventDefinition /> </bpmn2:endEvent> <bpmn2:sequenceFlow id="SequenceFlow_0m7gwor" sourceRef="Task_0ixuwt5" targetRef="ParallelGateway_4" /> - <bpmn2:callActivity id="Task_0ixuwt5" name="Call Notification Service" calledElement="${URN_mso_workflow_notification_name}" camunda:calledElementBinding="deployment"> + <bpmn2:callActivity id="Task_0ixuwt5" name="Call Notification Service" calledElement="${URN_mso_workflow_notification_name}"> <bpmn2:extensionElements> <camunda:in source="mso-request-id" target="mso-request-id" /> <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> diff --git a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/SDNCAdapterV1.bpmn b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/SDNCAdapterV1.bpmn index e0fc14e933..6a4223d2ad 100644 --- a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/SDNCAdapterV1.bpmn +++ b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/SDNCAdapterV1.bpmn @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_l2hJ8CccEeW3d--PaFJMbg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.6.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_l2hJ8CccEeW3d--PaFJMbg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> <bpmn2:process id="sdncAdapter" name="SDNC Adapter" isExecutable="true"> <bpmn2:exclusiveGateway id="isResponseOK" name="is Response Ok?" default="badSynchronousResponse"> <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> @@ -129,12 +129,12 @@ sdnc.resetCallbackRequest(execution)]]></bpmn2:script> <bpmn2:outgoing>Done</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_30</bpmn2:outgoing> </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="Done" name="Done" sourceRef="ExclusiveGateway_1" targetRef="toggleSuccessIndicator" /> + <bpmn2:sequenceFlow id="Done" name="Done" sourceRef="ExclusiveGateway_1" targetRef="ResetInterimNotificationFlag" /> <bpmn2:sequenceFlow id="SequenceFlow_30" name="Not Done" sourceRef="ExclusiveGateway_1" targetRef="ParallelGateway_3"> <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("continueListening")==true}]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:scriptTask id="toggleSuccessIndicator" name="Toggle Success Indicator" scriptFormat="groovy"> - <bpmn2:incoming>Done</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1w1za5m</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* def sdnc= new SDNCAdapter() @@ -157,7 +157,7 @@ sdnc.toggleSuccessIndicator(execution)]]></bpmn2:script> <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_26</bpmn2:outgoing> </bpmn2:parallelGateway> - <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ParallelGateway_3" targetRef="toggleSuccess" /> + <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ParallelGateway_3" targetRef="ExclusiveGateway_2" /> <bpmn2:sequenceFlow id="SequenceFlow_26" name="Continue listening for asynchronous message" sourceRef="ParallelGateway_3" targetRef="resetCallbackRequest" /> <bpmn2:subProcess id="errorHandlingSubProcess" name="Error Handling Sub Process" triggeredByEvent="true"> <bpmn2:startEvent id="catchErrors" name="Catch"> @@ -177,20 +177,12 @@ sdnc.assignError(execution)]]></bpmn2:script> <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming> </bpmn2:endEvent> </bpmn2:subProcess> - <bpmn2:scriptTask id="toggleSuccess" name="Toggle Success Indicator" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_31</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* -def sdnc= new SDNCAdapter() -sdnc.toggleSuccessIndicator(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_31" name="" sourceRef="toggleSuccess" targetRef="ExclusiveGateway_2" /> <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="Service Config Activate?" default="SequenceFlow_23"> - <bpmn2:incoming>SequenceFlow_31</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_4" name="Yes" sourceRef="ExclusiveGateway_2" targetRef="CallActivity_11xgv33"> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="Yes" sourceRef="ExclusiveGateway_2" targetRef="SetInterimNotificationFlag"> <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("serviceConfigActivate")==true}]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:sequenceFlow id="SequenceFlow_23" name="No" sourceRef="ExclusiveGateway_2" targetRef="EndEvent_1" /> @@ -210,15 +202,32 @@ sdnc.toggleSuccessIndicator(execution)]]></bpmn2:script> </bpmn2:endEvent> <bpmn2:sequenceFlow id="SequenceFlow_0mzs1ze" sourceRef="BoundaryEvent_1" targetRef="setTimeoutEx" /> <bpmn2:sequenceFlow id="SequenceFlow_11ah5pw" sourceRef="setTimeoutEx" targetRef="returnWorkflowResult" /> - <bpmn2:callActivity id="CallActivity_11xgv33" name="Call Notification Service" calledElement="${URN_mso_workflow_notification_name}" camunda:calledElementBinding="deployment"> + <bpmn2:callActivity id="CallActivity_11xgv33" name="Call Notification Service" calledElement="${URN_mso_workflow_notification_name}"> <bpmn2:extensionElements> <camunda:in source="mso-request-id" target="mso-request-id" /> <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> <camunda:in variables="all" /> <camunda:out variables="all" /> </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_193cb6p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1em7gys</bpmn2:outgoing> </bpmn2:callActivity> + <bpmn2:scriptTask id="SetInterimNotificationFlag" name="Set Interim Notification Flag" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_193cb6p</bpmn2:outgoing> + <bpmn2:script><![CDATA[execution.setVariable("SDNCA_InterimNotify", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_193cb6p" sourceRef="SetInterimNotificationFlag" targetRef="CallActivity_11xgv33" /> + <bpmn2:endEvent id="EndEvent_18rq0b6"> + <bpmn2:incoming>SequenceFlow_1em7gys</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1em7gys" sourceRef="CallActivity_11xgv33" targetRef="EndEvent_18rq0b6" /> + <bpmn2:scriptTask id="ResetInterimNotificationFlag" name="Reset Interim Notification Flag" scriptFormat="groovy"> + <bpmn2:incoming>Done</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1w1za5m</bpmn2:outgoing> + <bpmn2:script><![CDATA[execution.setVariable("SDNCA_InterimNotify", false)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1w1za5m" sourceRef="ResetInterimNotificationFlag" targetRef="toggleSuccessIndicator" /> </bpmn2:process> <bpmn2:message id="Message_1" name="sdncAdapterWorkflowRequest" /> <bpmn2:message id="Message_2" name="sdncAdapterCallbackRequest" /> @@ -243,9 +252,9 @@ sdnc.toggleSuccessIndicator(execution)]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_64" bpmnElement="endEventFlow"> - <dc:Bounds x="1560" y="366" width="36" height="36" /> + <dc:Bounds x="1699" y="366" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1595" y="373" width="96" height="22" /> + <dc:Bounds x="1743" y="373" width="77" height="13" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_65" bpmnElement="badResponseEndFlow"> @@ -376,9 +385,9 @@ sdnc.toggleSuccessIndicator(execution)]]></bpmn2:script> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="Done" sourceElement="_BPMNShape_ExclusiveGateway_54" targetElement="_BPMNShape_ScriptTask_247"> <di:waypoint xsi:type="dc:Point" x="1298" y="384" /> - <di:waypoint xsi:type="dc:Point" x="1383" y="384" /> + <di:waypoint xsi:type="dc:Point" x="1386" y="385" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1316" y="384" width="36" height="22" /> + <dc:Bounds x="1322" y="384.219838851959" width="27" height="13" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_27" bpmnElement="resetCallbackRequest"> @@ -401,16 +410,16 @@ sdnc.toggleSuccessIndicator(execution)]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_55" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true"> - <dc:Bounds x="1248" y="663" width="50" height="50" /> + <dc:Bounds x="1248" y="552" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1105" y="678" width="145" height="22" /> + <dc:Bounds x="1141" y="567" width="74" height="25" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ExclusiveGateway_55" targetElement="CallActivity_11xgv33_di"> - <di:waypoint xsi:type="dc:Point" x="1273" y="713" /> - <di:waypoint xsi:type="dc:Point" x="1273" y="782" /> + <di:waypoint xsi:type="dc:Point" x="1273" y="602" /> + <di:waypoint xsi:type="dc:Point" x="1273" y="664" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1279" y="722.5754830930483" width="18" height="12" /> + <dc:Bounds x="1237" y="635.9906427957554" width="18" height="13" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ParallelGateway_14" bpmnElement="ParallelGateway_3"> @@ -420,23 +429,24 @@ sdnc.toggleSuccessIndicator(execution)]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ParallelGateway_14" targetElement="_BPMNShape_ScriptTask_255"> - <di:waypoint xsi:type="dc:Point" x="1273" y="517" /> - <di:waypoint xsi:type="dc:Point" x="1274" y="552" /> + <di:waypoint xsi:type="dc:Point" x="1272" y="516" /> + <di:waypoint xsi:type="dc:Point" x="1273" y="552" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1270" y="533" width="6" height="6" /> + <dc:Bounds x="1273" y="519" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_96" bpmnElement="EndEvent_1"> - <dc:Bounds x="1444" y="671" width="36" height="36" /> + <dc:Bounds x="1440" y="559" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1462" y="712" width="0" height="0" /> + <dc:Bounds x="1458" y="600" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_30" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_ExclusiveGateway_55" targetElement="_BPMNShape_EndEvent_96"> - <di:waypoint xsi:type="dc:Point" x="1298" y="688" /> - <di:waypoint xsi:type="dc:Point" x="1444" y="689" /> + <di:waypoint xsi:type="dc:Point" x="1298" y="577" /> + <di:waypoint xsi:type="dc:Point" x="1330" y="577" /> + <di:waypoint xsi:type="dc:Point" x="1440" y="577" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1320" y="688" width="22" height="22" /> + <dc:Bounds x="1309" y="590.5" width="14" height="13" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_33" bpmnElement="SequenceFlow_26" sourceElement="_BPMNShape_ParallelGateway_14" targetElement="_BPMNShape_ScriptTask_27"> @@ -448,13 +458,13 @@ sdnc.toggleSuccessIndicator(execution)]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_247" bpmnElement="toggleSuccessIndicator"> - <dc:Bounds x="1383" y="344" width="100" height="80" /> + <dc:Bounds x="1540" y="344" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_247" targetElement="_BPMNShape_EndEvent_64"> - <di:waypoint xsi:type="dc:Point" x="1483" y="384" /> - <di:waypoint xsi:type="dc:Point" x="1560" y="384" /> + <di:waypoint xsi:type="dc:Point" x="1640" y="384" /> + <di:waypoint xsi:type="dc:Point" x="1699" y="384" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1499" y="384" width="6" height="6" /> + <dc:Bounds x="1670" y="369" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_SubProcess_19" bpmnElement="errorHandlingSubProcess" isExpanded="true"> @@ -489,18 +499,6 @@ sdnc.toggleSuccessIndicator(execution)]]></bpmn2:script> <dc:Bounds x="625" y="894" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_255" bpmnElement="toggleSuccess"> - <dc:Bounds x="1224" y="552" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_36" bpmnElement="SequenceFlow_31" sourceElement="_BPMNShape_ScriptTask_255" targetElement="_BPMNShape_ExclusiveGateway_55"> - <di:waypoint xsi:type="dc:Point" x="1274" y="632" /> - <di:waypoint xsi:type="dc:Point" x="1274" y="646" /> - <di:waypoint xsi:type="dc:Point" x="1273" y="646" /> - <di:waypoint xsi:type="dc:Point" x="1273" y="663" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1271" y="646" width="6" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_1eciucn_di" bpmnElement="SequenceFlow_1eciucn"> <di:waypoint xsi:type="dc:Point" x="691" y="275" /> <di:waypoint xsi:type="dc:Point" x="781" y="275" /> @@ -543,8 +541,41 @@ sdnc.toggleSuccessIndicator(execution)]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="CallActivity_11xgv33_di" bpmnElement="CallActivity_11xgv33"> - <dc:Bounds x="1223" y="782" width="100" height="80" /> + <dc:Bounds x="1223" y="795" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1vhiyz5_di" bpmnElement="SetInterimNotificationFlag"> + <dc:Bounds x="1223" y="666" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_193cb6p_di" bpmnElement="SequenceFlow_193cb6p"> + <di:waypoint xsi:type="dc:Point" x="1273" y="746" /> + <di:waypoint xsi:type="dc:Point" x="1273" y="795" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1288" y="770.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_18rq0b6_di" bpmnElement="EndEvent_18rq0b6"> + <dc:Bounds x="1255.3117870722433" y="919.4537389100127" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1274" y="955.4537389100127" width="0" height="0" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1em7gys_di" bpmnElement="SequenceFlow_1em7gys"> + <di:waypoint xsi:type="dc:Point" x="1273" y="875" /> + <di:waypoint xsi:type="dc:Point" x="1273" y="920" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1288" y="897.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1ayq9yl_di" bpmnElement="ResetInterimNotificationFlag"> + <dc:Bounds x="1386" y="345" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1w1za5m_di" bpmnElement="SequenceFlow_1w1za5m"> + <di:waypoint xsi:type="dc:Point" x="1486" y="385" /> + <di:waypoint xsi:type="dc:Point" x="1540" y="384" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1513" y="369.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </bpmn2:definitions> diff --git a/bpmn/MSOCommonBPMN/src/main/resources/xjb/AAI.xjb b/bpmn/MSOCommonBPMN/src/main/resources/xjb/AAI.xjb new file mode 100644 index 0000000000..ca8ac4766d --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/resources/xjb/AAI.xjb @@ -0,0 +1,14 @@ +<?xml version="1.0"?> +<jxb:bindings version="1.0" + xmlns:jxb="http://java.sun.com/xml/ns/jaxb" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" + xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance" + jxb:extensionBindingPrefixes="xjc"> + + <jxb:bindings schemaLocation="../xsd/aai_schema_v10.xsd"> + <jxb:globalBindings> + <xjc:superClass name="org.openecomp.mso.client.aai.entities.AAIEntity" /> + </jxb:globalBindings> +</jxb:bindings> +</jxb:bindings>
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/main/resources/xsd/MSOWorkflowSchemaV1.xsd b/bpmn/MSOCommonBPMN/src/main/resources/xsd/MSOWorkflowSchemaV1.xsd new file mode 100644 index 0000000000..e743dc754e --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/resources/xsd/MSOWorkflowSchemaV1.xsd @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="UTF-8"?> + <!-- + ========================================================================= + AT&T Proprietary (Internal Use Only) Not for use or disclosure outside + the AT&T companies except under written agreement (c) 2015 AT&T + Intellectual Property. All rights reserved. AT&T and the AT&T logo are + trademarks of AT&T Intellectual Property. + ======================================================================= + --> + <!-- + ================================================================ + Description: This is the schema for LPP Configuration Component + + ================================================================ + Change Log: Version Author Comments + =========== ======= ====== ======== + 0.10 ss835w 2011-4-13. First draft + + + ================================================================ + --> + +<schema targetNamespace="http://ecomp.att.com/mso/workflow/schema/v1" +xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:tns="http://ecomp.att.com/mso/workflow/schema/v1" + xmlns:sdncadapterworkflow="http://ecomp.att.com/mso/workflow/schema/v1" + xmlns:msoservtypes="http://ecomp.att.com/mso/request/types/v1" + xmlns:msolayer3="http://ecomp.att.com/mso/request/layer3/schema/v1" + xmlns:sdncadapter="http://domain2.att.com/workflow/sdnc/adapter/schema/v1" + xmlns:aai="http://com.att.aai.inventory" + elementFormDefault="qualified"> + + <import namespace="http://ecomp.att.com/mso/request/types/v1" schemaLocation="MsoServiceRequestTypesV1.xsd"/> + + + <!-- ========================= --> + <!-- Simple Types - enum --> + <!-- ========================= --> + + <simpleType name="PortGroupNameType"> + <restriction base="string"> + <enumeration value="IPAG-VCE" /> + <enumeration value="VCE-VPE" /> + </restriction> + </simpleType> + + <simpleType name="SDNCActionType"> + <restriction base="string"> + <enumeration value="AssignVNFNetworkResources" /> + <enumeration value="ConfigureService" /> + <enumeration value="DeprovisionService" /> + <enumeration value="ReleaseVNFNetworkResources" /> + <enumeration value="UpdateService" /> + <enumeration value="TestService" /> + <enumeration value="ReserveService" /> + <enumeration value="ActivateService" /> + <enumeration value="GetServiceDetails" /> + </restriction> + </simpleType> + + <!-- ========================= --> + <!-- Complex Types --> + <!-- ========================= --> + + + <!-- ========================= --> + <!-- Elements --> + <!-- ========================= --> + + + + <!-- ========================= --> + <!-- Requests/Responses --> + <!-- ========================= --> + + + + + + + <element name="WorkflowException"> + <complexType> + <sequence> + <element name="ErrorMessage" type="string" minOccurs="1" maxOccurs="1" /> + <element name="ErrorCode" type="string" minOccurs="1" maxOccurs="1" /> + <element name="SourceSystemErrorCode" type="string" minOccurs="0" maxOccurs="1" /> + </sequence> + </complexType> + </element> + + + <!-- Error handler --> + <element name="FalloutHandlerRequest"> + <complexType> + <sequence> + <element ref="msoservtypes:request-information" minOccurs="1" maxOccurs="1" /> + <element ref="sdncadapterworkflow:WorkflowException" minOccurs="1" maxOccurs="1" /> + <element name="is-srv-inst-req" type="boolean" minOccurs="0" maxOccurs="1" /> + <element name="resp-content-type" type="string" minOccurs="0" maxOccurs="1" /> + <element name="service-instance-id" type="string" minOccurs="0" maxOccurs="1"/> + <element name="start-time" type="string" minOccurs="0" maxOccurs="1"/> + </sequence> + </complexType> + </element> + + <element name="FalloutHandlerResponse"> + <complexType> + <sequence> + <element name="out" type="string"></element> + </sequence> + </complexType> + </element> + + <!-- Completion handler --> + <element name="MsoCompletionRequest"> + <complexType> + <sequence> + <element ref="msoservtypes:request-information" minOccurs="1" maxOccurs="1" /> + <element name="mso-bpel-name" type="string" minOccurs="1" maxOccurs="1" /> + <element name="is-srv-inst-req" type="boolean" minOccurs="0" maxOccurs="1" /> + <element name="resp-content-type" type="string" minOccurs="0" maxOccurs="1" /> + <element name="service-instance-id" type="string" minOccurs="0" maxOccurs="1"/> + <element name="start-time" type="string" minOccurs="0" maxOccurs="1"/> + </sequence> + </complexType> + </element> + + <element name="MsoCompletionResponse"> + <complexType> + <sequence> + <element name="out" type="string"></element> + </sequence> + </complexType> + </element> + + +</schema> diff --git a/bpmn/MSOCommonBPMN/src/main/resources/xsd/ManualTasks.xsd b/bpmn/MSOCommonBPMN/src/main/resources/xsd/ManualTasks.xsd new file mode 100644 index 0000000000..f1754b6ba7 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/resources/xsd/ManualTasks.xsd @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.example.org/mso" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.example.org/mso">
+ <xs:element name="taskList">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element type="xs:string" name="taskId"/>
+ <xs:element type="xs:string" name="type"/>
+ <xs:element type="xs:string" name="nfRole"/>
+ <xs:element type="xs:string" name="subscriptionServiceType"/>
+ <xs:element type="xs:string" name="originalRequestId"/>
+ <xs:element type="xs:string" name="originalRequestorId"/>
+ <xs:element type="xs:string" name="errorSource"/>
+ <xs:element type="xs:string" name="errorCode"/>
+ <xs:element type="xs:string" name="errorMessage"/>
+ <xs:element type="xs:string" name="buildingBlockName"/>
+ <xs:element type="xs:string" name="buildingBlockStep"/>
+ <xs:element name="validResponses">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="action" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="requestDetails">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="requestInfo">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element type="xs:string" name="source"/>
+ <xs:element type="xs:string" name="responseValue"/>
+ <xs:element type="xs:string" name="requestorId"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name ="taskRequestReference">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element type="xs:string" name="taskId"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/main/resources/xsd/MsoServiceRequestTypesV1.xsd b/bpmn/MSOCommonBPMN/src/main/resources/xsd/MsoServiceRequestTypesV1.xsd new file mode 100644 index 0000000000..ce92a4909b --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/resources/xsd/MsoServiceRequestTypesV1.xsd @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ========================================================================= + AT&T Proprietary (Internal Use Only) Not for use or disclosure outside + the AT&T companies except under written agreement (c) 2015 AT&T + Intellectual Property. All rights reserved. AT&T and the AT&T logo are + trademarks of AT&T Intellectual Property. + ======================================================================= + --> +<!-- + ================================================================ + Description: This is the schema for MSO Request data + + ================================================================ + Change Log: Version Author Comments + =========== ======= ====== ======== + 0.10 ss835w 2014-12-22. First draft + 0.20 dr695h 2014-01-09. Second draft + + ================================ ================================ + --> +<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://ecomp.att.com/mso/request/types/v1" targetNamespace="http://ecomp.att.com/mso/request/types/v1" elementFormDefault="qualified"> + <complexType name="response-type"> + <sequence> + <element name="request-id" type="string" minOccurs="1" maxOccurs="1"/> + <element name="request-action" type="tns:request-action-type" minOccurs="1" maxOccurs="1"/> + <element name="source" type="string" minOccurs="1" maxOccurs="1"/> + <element name="request-id-in-progress" type="string" minOccurs="0" maxOccurs="1"/> + <element name="error-code" type="int" minOccurs="0" maxOccurs="1"/> + <element name="error-message" type="string" minOccurs="0" maxOccurs="1"/> + <element name="ack-final-indicator" type="tns:y-or-n-type" minOccurs="1" maxOccurs="1"/> + </sequence> + </complexType> + <annotation> + <documentation xml:lang="en">order-number is required if service-type equals SDN-ETHERNET-INTERNET. order-version is required if service-type equals + SDN-ETHERNET-INTERNET, source=OMX, and request-action=Layer3ServiceActivateRequest or ChangeLayer3ServiceProvRequest</documentation> + </annotation> + <element name="request-information"> + <complexType> + <sequence> + <element name="request-id" type="string" minOccurs="1" maxOccurs="1"/> + <element name="request-action" type="tns:request-action-type" minOccurs="1" maxOccurs="1"/> + <element name="request-sub-action" type="tns:request-sub-action-type" minOccurs="0" maxOccurs="1"/> + <element name="source" type="string" minOccurs="1" maxOccurs="1"/> + <element name="notification-url" type="string" minOccurs="0" maxOccurs="1"/> + <element name="order-number" type="string" minOccurs="0" maxOccurs="1"/> + <element name="order-version" type="string" minOccurs="0" maxOccurs="1"/> + </sequence> + </complexType> + </element> + <annotation> + <documentation xml:lang="en">subscriber-name required if request-action=Layer3ServiceActivateRequest</documentation> + </annotation> + <element name="service-information"> + <complexType> + <sequence> + <element name="service-type" type="tns:service-type" minOccurs="1" maxOccurs="1"/> + <element name="service-instance-id" type="string" minOccurs="1" maxOccurs="1"/> + <element name="subscriber-name" type="string" minOccurs="0" maxOccurs="1"/> + </sequence> + </complexType> + </element> + <element name="feature-information"> + <complexType> + <sequence> + <element name="feature-type" type="tns:feature-type"/> + <element name="feature-instance-id" type="string"/> + <element name="feature-yang-model" type="string"/> + <element name="feature-yang-model-version" type="string"/> + </sequence> + </complexType> + </element> + <simpleType name="request-action-type"> + <restriction base="string"> + <enumeration value="Layer3ServiceActivateRequest"/> + <enumeration value="Layer3ServiceTestAndTurnupRequest"/> + <enumeration value="ChangeLayer3ServiceActivateRequest"/> + <enumeration value="ChangeLayer3ServiceProvRequest"/> + <enumeration value="DisconnectLayer3ServiceRequest"/> + <enumeration value="GetLayer3ServiceDetailsRequest"/> + <enumeration value="ChangeFeatureActivateRequest"/> + </restriction> + </simpleType> + <simpleType name="request-sub-action-type"> + <restriction base="string"> + <enumeration value="CANCEL"/> + <enumeration value="SUPP"/> + </restriction> + </simpleType> + <simpleType name="service-type"> + <restriction base="string"> + <enumeration value="SDN-ETHERNET-INTERNET"/> + </restriction> + </simpleType> + <simpleType name="y-or-n-type"> + <restriction base="string"> + <enumeration value="Y"/> + <enumeration value="N"/> + </restriction> + </simpleType> + <simpleType name="feature-type"> + <restriction base="string"> + <enumeration value="FIREWALL-LITE"/> + </restriction> + </simpleType> +</schema> diff --git a/bpmn/MSOCommonBPMN/src/main/resources/xsd/aai_schema_v10.xsd b/bpmn/MSOCommonBPMN/src/main/resources/xsd/aai_schema_v10.xsd new file mode 100644 index 0000000000..0972056432 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/resources/xsd/aai_schema_v10.xsd @@ -0,0 +1,6547 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<xs:schema elementFormDefault="qualified" version="1.0" targetNamespace="http://com.att.aai.inventory/v10" xmlns:tns="http://com.att.aai.inventory/v10" xmlns:xs="http://www.w3.org/2001/XMLSchema" +xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" + jaxb:version="2.1" + xmlns:annox="http://annox.dev.java.net" + jaxb:extensionBindingPrefixes="annox"> + + <xs:element name="inventory-item-data"> + <xs:complexType> + <xs:sequence> + <xs:element name="property-name" type="xs:string" minOccurs="0"/> + <xs:element name="property-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="inventory-item"> + <xs:complexType> + <xs:sequence> + <xs:element name="inventory-item-type" type="xs:string" minOccurs="0"/> + <xs:element name="inventory-item-link" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:inventory-item-data" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="tns:tagged-inventory-item-list" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="tagged-inventory-item-list"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:inventory-item" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="edge-tag-query-result"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:tagged-inventory-item-list" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="start-node-filter"> + <xs:complexType> + <xs:sequence> + <xs:element name="property-name" type="xs:string" minOccurs="0"/> + <xs:element name="property-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="include-node-filter"> + <xs:complexType> + <xs:sequence> + <xs:element name="include-node-type" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="secondary-filter"> + <xs:complexType> + <xs:sequence> + <xs:element name="property-name" type="xs:string" minOccurs="0"/> + <xs:element name="filter-type" type="xs:string" minOccurs="0"/> + <xs:element name="property-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="edge-tag-query-request"> + <xs:complexType> + <xs:sequence> + <xs:element name="edge-tag" type="xs:string" minOccurs="0"/> + <xs:element name="result-detail" type="xs:string" minOccurs="0"/> + <xs:element name="start-node-type" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:start-node-filter" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="tns:include-node-filter" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="tns:secondary-filter" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="result-data"> + <xs:complexType> + <xs:sequence> + <xs:element name="resource-type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The specific type of node in the A&AI graph")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-link" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The URL to the specific resource")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="search-results"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:result-data" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="relationship-data"> + <xs:complexType> + <xs:sequence> + <xs:element name="relationship-key" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="A keyword provided by A&AI to indicate an attribute.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="relationship-value" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Value of the attribute.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="related-to-property"> + <xs:complexType> + <xs:sequence> + <xs:element name="property-key" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Key part of a key/value pair")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="property-value" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Value part of a key/value pair")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="relationship"> + <xs:complexType> + <xs:sequence> + <xs:element name="related-to" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="A keyword provided by A&AI to indicate type of node.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="related-link" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="URL to the object in A&AI.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-data" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="tns:related-to-property" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="relationship-list"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:relationship" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="oam-network"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="OAM network, to be deprecated shortly. Do not use for new purposes. ",nameProps="network-name",indexedProps="cvlan-tag,network-uuid,network-name",dependentOn="cloud-region",container="oam-networks")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="network-uuid" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="UUID of the network. Unique across a cloud-region")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="network-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name of the network.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="cvlan-tag" type="xs:unsignedInt"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="cvlan-id")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipv4-oam-gateway-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for VNF firewall rule so customer cannot send customer traffic over this oam network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipv4-oam-gateway-address-prefix-length" type="xs:int" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for VNF firewall rule so customer cannot send customer traffic over this oam network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="oam-networks"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of OAM networks, to be deprecated shortly. Do not use for new purposes. ")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:oam-network" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="dvs-switch"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Digital virtual switch metadata, used by SDN-C to configure VCEs. A&AI needs to receive this data from the PO deployment team and administer it using the provisioningTool.sh into A&AI. ",indexedProps="vcenter-url,switch-name",dependentOn="cloud-region",container="dvs-switches")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="switch-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="DVS switch name")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vcenter-url" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="URL used to reach the vcenter")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="dvs-switches"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of digital virtual switch metadata used for vmWare VCEs and VPEs.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:dvs-switch" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="availability-zone"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Availability zone, a collection of compute hosts/pservers",indexedProps="availability-zone-name",dependentOn="cloud-region",container="availability-zones")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="availability-zone-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Name of the availability zone. Unique across a cloud region")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="hypervisor-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Type of hypervisor. Source of truth should define valid values.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Status that indicates whether the asset is in or out of the service path. Valid values are null, in-service-path, out-of-service-path.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="az-and-dvs-switches"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:dvs-switches" minOccurs="0"/> + <xs:element ref="tns:availability-zone" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="sdn-zone-response"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:oam-networks" minOccurs="0"/> + <xs:element ref="tns:az-and-dvs-switches" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="search"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:edge-tag-query-result" minOccurs="0"/> + <xs:element ref="tns:edge-tag-query-request" minOccurs="0"/> + <xs:element ref="tns:search-results" minOccurs="0"/> + <xs:element ref="tns:sdn-zone-response" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="update-node-key"> + <xs:complexType> + <xs:sequence> + <xs:element name="key-name" type="xs:string" minOccurs="0"/> + <xs:element name="key-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="action-data"> + <xs:complexType> + <xs:sequence> + <xs:element name="property-name" type="xs:string" minOccurs="0"/> + <xs:element name="property-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="action"> + <xs:complexType> + <xs:sequence> + <xs:element name="action-type" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:action-data" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="update"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Serves a PATCH like function. Does not enforce concurrency control. Clear each usage with AAI team.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="update-node-type" type="xs:string"/> + <xs:element ref="tns:update-node-key" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="update-node-uri" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:action" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="key-data"> + <xs:complexType> + <xs:sequence> + <xs:element name="key-name" type="xs:string" minOccurs="0"/> + <xs:element name="key-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="notify"> + <xs:complexType> + <xs:sequence> + <xs:element name="event-id" type="xs:string"/> + <xs:element name="node-type" type="xs:string" minOccurs="0"/> + <xs:element name="event-trigger" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:key-data" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="selflink" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="actions"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="APIs that are more action related than REST (e.g., notify, update).")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:update" minOccurs="0"/> + <xs:element ref="tns:notify" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ctag-pool"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="A collection of C tags (vlan tags) grouped for a specific purpose.",indexedProps="availability-zone-name",dependentOn="complex",container="ctag-pools")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="target-pe" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="The Target provider edge router")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="availability-zone-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Name of the availability zone")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ctag-pool-purpose" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Describes what the intended purpose of this pool is.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ctag-values" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Comma separated list of ctags")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ctag-pools"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:ctag-pool" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="complex"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of physical locations that can house cloud-regions.",indexedProps="identity-url,data-center-code,complex-name,physical-location-id",searchable="physical-location-id,data-center-code,complex-name,street1,street2,postal-code",uniqueProps="physical-location-id",container="complexes",namespace="cloud-infrastructure")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="physical-location-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique identifier for physical location, e.g., CLLI")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="data-center-code" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Data center code which can be an alternate way to identify a complex")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="complex-name" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Gamma complex name for LCP instance.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="identity-url" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="URL of the keystone identity service")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="physical-location-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Type, e.g., central office, data center.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="street1" type="xs:string"/> + <xs:element name="street2" type="xs:string" minOccurs="0"/> + <xs:element name="city" type="xs:string"/> + <xs:element name="state" type="xs:string" minOccurs="0"/> + <xs:element name="postal-code" type="xs:string"/> + <xs:element name="country" type="xs:string"/> + <xs:element name="region" type="xs:string"/> + <xs:element name="latitude" type="xs:string" minOccurs="0"/> + <xs:element name="longitude" type="xs:string" minOccurs="0"/> + <xs:element name="elevation" type="xs:string" minOccurs="0"/> + <xs:element name="lata" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:ctag-pools" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="complexes"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of physical locations that can house cloud-regions.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:complex" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="volume-group"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Persistent block-level storage.",indexedProps="volume-group-name,vnf-type,heat-stack-id,volume-group-id",searchable="volume-group-id,volume-group-name",dependentOn="cloud-region",container="volume-groups")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="volume-group-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique ID of volume-group.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="volume-group-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name of the volume group.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Heat stack id corresponding to this volume-group")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnf-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Orchestration status of this volume-group")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-customization-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="captures the id of all the configuration used to customize the resource for the service.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vf-module-model-customization-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="helps relate the volume group to the vf-module whose components will require the volume group")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="volume-groups"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of persistent block-level storage.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:volume-group" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="volume"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Ephemeral Block storage volume.",indexedProps="volume-id",dependentOn="vserver",container="volumes")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="volume-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique ID of block storage volume relative to the vserver.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="volume-selflink" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="volumes"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of ephemeral Block storage volumes.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:volume" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="l3-interface-ipv4-address-list"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="IPv4 Address Range",indexedProps="l3-interface-ipv4-address,vlan-id-inner,neutron-network-id,neutron-subnet-id",dependentOn="vlan,l-interface")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="l3-interface-ipv4-address" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="IP address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="l3-interface-ipv4-prefix-length" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Prefix length, 32 for single address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vlan-id-inner" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Inner VLAN tag")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vlan-id-outer" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Outer VLAN tag")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="is-floating" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Indicator of fixed or floating address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="neutron-network-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Neutron network id of the interface that address belongs to")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="neutron-subnet-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Neutron id of subnet that address belongs to")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="l3-interface-ipv6-address-list"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="IPv6 Address Range",indexedProps="l3-interface-ipv6-address,vlan-id-inner,neutron-network-id,neutron-subnet-id",dependentOn="vlan,l-interface")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="l3-interface-ipv6-address" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="IP address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="l3-interface-ipv6-prefix-length" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Prefix length, 128 for single address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vlan-id-inner" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Inner VLAN tag")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vlan-id-outer" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Outer VLAN tag")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="is-floating" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Indicator of fixed or floating address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="neutron-network-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Neutron network id of the interface that address belongs to")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="neutron-subnet-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Neutron id of subnet that address belongs to")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vlan"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Definition of vlan",indexedProps="vlan-interface,vlan-id-inner,vpn-id",uniqueProps="vpn-id",dependentOn="l-interface",container="vlans")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="vlan-interface" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="String that identifies the interface")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vlan-id-inner" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Inner VLAN tag")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vlan-id-outer" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Outer VLAN tag")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="speed-value" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Captures the numeric part of the speed")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="speed-units" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Captures the units corresponding to the speed")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vlan-description" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used to describe (the service associated with) the vlan")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="backdoor-connection" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Whether customer is going to use this VLAN for backdoor connection to another customer premise device.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vpn-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="This indicates the customers VPN ID associated with this vlan")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Status of a vnf's vlan interface, on which the customer circuit resides, mastered by SDN-C.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l3-interface-ipv4-address-list" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="tns:l3-interface-ipv6-address-list" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vlans"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:vlan" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="sriov-vf"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="SR-IOV Virtual Function (not to be confused with virtual network function)",indexedProps="pci-id,vf-vlan-filter,vf-mac-filter,vf-vlan-strip,neutron-network-id",dependentOn="l-interface",container="sriov-vfs")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="pci-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="PCI ID used to identify the sriov-vf")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vf-vlan-filter" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vf-mac-filter" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vf-vlan-strip" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vf-vlan-anti-spoof-check" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="This option ensures anti VLAN spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vf-mac-anti-spoof-check" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="This option ensures anti MAC spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vf-mirrors" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="This option defines the set of Mirror objects which essentially mirrors the traffic from source to set of collector VNF Ports.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vf-broadcast-allow" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="This option, if set to true, sets the VF in promiscuous mode and allows all broadcast traffic to reach the VM")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vf-unknown-multicast-allow" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="This option, if set to true, sets the VF in promiscuous mode and allows unknown multicast traffic to reach the VM")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vf-unknown-unicast-allow" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="This option, if set to true, sets the VF in promiscuous mode and allows unknown unicast traffic to reach the VM")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vf-insert-stag" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="This option, if set to true, instructs to insert outer tag after traffic comes out of VM.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vf-link-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="This option is used to set the link status. Valid values as of 1607 are on, off, and auto.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="neutron-network-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Neutron network id of the interface")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="sriov-vfs"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of SR-IOV Virtual Functions.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:sriov-vf" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="l-interface"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Logical interfaces, e.g., a vnic.",indexedProps="macaddr,interface-id,interface-name,network-name",dependentOn="generic-vnf,newvce,vpe,p-interface,vserver,lag-interface",container="l-interfaces")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="interface-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Name given to the interface")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="interface-role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="E.g., CUSTOMER, UPLINK, etc.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="v6-wan-link-ip" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Questionably placed - v6 ip addr of this interface (is in vr-lan-interface from Mary B.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="selflink" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="interface-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="ID of interface")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="macaddr" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="MAC address for the interface")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="network-name" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name of the network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="management-option" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Whether A&AI should be managing this interface of not. Could have value like CUSTOMER")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="interface-description" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Human friendly text regarding this interface.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="is-port-mirrored" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether or not this port is mirrored.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:l-interfaces" minOccurs="0"/> + <xs:element ref="tns:vlans" minOccurs="0"/> + <xs:element ref="tns:sriov-vfs" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l3-interface-ipv4-address-list" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="tns:l3-interface-ipv6-address-list" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="l-interfaces"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of logical interfaces.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:l-interface" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vserver"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Virtual Servers, aka virtual machine or VM.",nameProps="vserver-name",indexedProps="is-closed-loop-disabled,prov-status,vserver-name,vserver-id,in-maint,vserver-name2",searchable="vserver-id,vserver-name,vserver-name2",dependentOn="tenant",container="vservers")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="vserver-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique identifier for this vserver relative to its tenant")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vserver-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name of vserver")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vserver-name2" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Alternative name of vserver")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Trigger for operational monitoring of this resource by Service Assurance systems.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vserver-selflink" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="is-closed-loop-disabled" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="Used to indicate whether closed loop function is enabled on this node")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:volumes" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l-interfaces" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vservers"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of virtual Servers, aka virtual machines or VMs.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:vserver" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="tenant"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Openstack tenant",nameProps="tenant-name",indexedProps="tenant-name,tenant-id",searchable="tenant-id,tenant-name",dependentOn="cloud-region",container="tenants")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="tenant-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique id relative to the cloud-region.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="tenant-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Readable name of tenant")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:vservers" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="tenants"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of openstack tenants.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:tenant" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="flavor"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Openstack flavor.",nameProps="flavor-name",indexedProps="flavor-name,flavor-id",dependentOn="cloud-region",container="flavors")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="flavor-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Flavor id, expected to be unique across cloud-region.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="flavor-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Flavor name")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="flavor-vcpus" type="xs:int" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Number of CPUs")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="flavor-ram" type="xs:int" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Amount of memory")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="flavor-disk" type="xs:int" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Disk space")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="flavor-ephemeral" type="xs:int" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Amount of ephemeral disk space")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="flavor-swap" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="amount of swap space allocation")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="flavor-is-public" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="whether flavor is available to all users or private to the tenant it was created in.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="flavor-selflink" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="flavor-disabled" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Boolean as to whether this flavor is no longer enabled")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="flavors"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of openstack flavors.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:flavor" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="group-assignment"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Openstack group-assignment used to store exclusivity groups (EG).",nameProps="group-name",indexedProps="group-id,group-type,group-name",dependentOn="cloud-region",container="group-assignments")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="group-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Group id, expected to be unique across cloud-region.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="group-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Group type - the type of group this instance refers to")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="group-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Group name - name assigned to the group")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="group-description" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Group description - description of the group")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="group-assignments"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of openstack group assignments")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:group-assignment" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="snapshot"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Openstack snapshot",nameProps="snapshot-name",uniqueProps="snapshot-id",indexedProps="application,snapshot-name,application-vendor,snapshot-id,application-version,prev-snapshot-id",dependentOn="cloud-region",container="snapshots")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="snapshot-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Snapshot id, this is the key UUID assoc associated in glance with the snapshots.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="snapshot-name" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Snapshot name")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="snapshot-architecture" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Operating system architecture")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="snapshot-os-distro" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The common name of the operating system distribution in lowercase")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="snapshot-os-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The operating system version as specified by the distributor.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="application" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The application that the image instantiates.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="application-vendor" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The vendor of the application.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="application-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The version of the application.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="snapshot-selflink" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="prev-snapshot-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="This field contains the UUID of the previous snapshot (if any).")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="snapshots"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of openstack snapshots")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:snapshot" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="metadatum"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Key/value pairs",indexedProps="metaname",dependentOn="tenant,image,service-instance,connector,model",container="metadata")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="metaname" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true)</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="metaval" type="xs:string"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="metadata"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of metadatum (key/value pairs)")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:metadatum" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="image"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Openstack image.",nameProps="image-name",indexedProps="application,image-name,application-vendor,image-id,application-version",dependentOn="cloud-region",container="images")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="image-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Image id, expected to be unique across cloud region")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="image-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Image name")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="image-architecture" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Operating system architecture.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="image-os-distro" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The common name of the operating system distribution in lowercase")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="image-os-version" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The operating system version as specified by the distributor.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="application" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The application that the image instantiates.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="application-vendor" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The vendor of the application.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="application-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The version of the application.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="image-selflink" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:metadata" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="images"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collectio of Openstack images.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:image" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="availability-zones"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of availability zones")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:availability-zone" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="cloud-region"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="cloud-region designates an installation of a cloud cluster or region or instantiation. In AT&Ts AIC cloud, this could be an LCP or DCP. Cloud regions are uniquely identified by a composite key, cloud-owner + cloud-region-id. The format of the cloud-owner is vendor-cloudname and we will use att-aic for AT&T's AIC. It's important to note that the cloud-region data is not updated once created, so there is a potential for the data to become stale.",indexedProps="cloud-owner,cloud-region-id,cloud-type,owner-defined-type",nameProps="owner-defined-type",container="cloud-regions",namespace="cloud-infrastructure")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="cloud-owner" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Identifies the vendor and cloud name, e.g., att-aic. First part of composite key should be formatted as vendor-cloudname")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="cloud-region-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Identifier used by the vendor for the region. Second part of composite key")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="cloud-type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Type of the cloud (e.g., openstack)")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="owner-defined-type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Cloud-owner defined type indicator (e.g., dcp, lcp)")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="cloud-region-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Software version employed at the site. NOTE - THIS FIELD IS NOT KEPT UP TO DATE.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="identity-url" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="URL of the keystone identity service")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="cloud-zone" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Zone where the cloud is homed. NOTE - THIS FIELD IS NOT CORRECTLY POPULATED.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="complex-name" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="complex name for cloud-region instance. NOTE - THIS FIELD IS NOT CORRECTLY POPULATED.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:volume-groups" minOccurs="0"/> + <xs:element ref="tns:tenants" minOccurs="0"/> + <xs:element ref="tns:flavors" minOccurs="0"/> + <xs:element ref="tns:group-assignments" minOccurs="0"/> + <xs:element ref="tns:snapshots" minOccurs="0"/> + <xs:element ref="tns:images" minOccurs="0"/> + <xs:element ref="tns:dvs-switches" minOccurs="0"/> + <xs:element ref="tns:oam-networks" minOccurs="0"/> + <xs:element ref="tns:availability-zones" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="cloud-regions"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(maximumDepth="0")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:cloud-region" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="network-profile"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Network profile populated by SDN-GP for SNMP",indexedProps="nm-profile-name",container="network-profiles",namespace="cloud-infrastructure")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="nm-profile-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique name of network profile.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="community-string" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Encrypted SNMP community string")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="network-profiles"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of network profiles")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:network-profile" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="p-interface"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Physical interface (e.g., nic)",indexedProps="interface-name,prov-status",nameProps="prov-status",dependentOn="vpls-pe,pserver,pnf",container="p-interfaces")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="interface-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Name that identifies the physical interface")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="speed-value" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Captures the numeric part of the speed")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="speed-units" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Captures the units corresponding to the speed")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="port-description" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Nature of the services and connectivity on this port.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="equipment-identifier" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="CLEI or other specification for p-interface hardware.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="interface-role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Role specification for p-interface hardware.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="interface-type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Indicates the physical properties of the interface.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Trigger for operational monitoring of this resource by Service Assurance systems.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l-interfaces" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="p-interfaces"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of physical interfaces.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:p-interface" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="lag-interface"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Link aggregate interface",indexedProps="interface-name,interface-id,interface-role",dependentOn="generic-vnf,pserver,vpe,vpls-pe,pnf",container="lag-interfaces")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="interface-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Name that identifies the link aggregate interface")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="interface-description" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Human friendly text regarding this interface.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="speed-value" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Captures the numeric part of the speed")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="speed-units" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Captures the units corresponding to the speed")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="interface-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="ID of interface")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="interface-role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Role assigned to this Interface, should use values as defined in ECOMP Yang models.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Trigger for operational monitoring of this resource by Service Assurance systems.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l-interfaces" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="lag-interfaces"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of link aggregate interfaces.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:lag-interface" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="pserver"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Compute host whose hostname must be unique and must exactly match what is sent as a relationship to a vserver.",nameProps="pserver-name2",indexedProps="hostname,in-maint,pserver-id,pserver-name2,inv-status",searchable="hostname,pserver-name2,pserver-id,ipv4-oam-address",container="pservers",namespace="cloud-infrastructure")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="hostname" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Value from executing hostname on the compute node.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ptnii-equip-name" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="PTNII name")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="number-of-cpus" type="xs:int" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Number of cpus")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="disk-in-gigabytes" type="xs:int" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Disk size, in GBs")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ram-in-megabytes" type="xs:int" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="RAM size, in MBs")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="equip-type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Equipment type. Source of truth should define valid values.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="equip-vendor" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Equipment vendor. Source of truth should define valid values.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="equip-model" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Equipment model. Source of truth should define valid values.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="fqdn" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Fully-qualified domain name")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="pserver-selflink" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipv4-oam-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used to configure device, also used for troubleshooting and is IP used for traps generated by device.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="serial-number" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Serial number, may be queried")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipaddress-v4-loopback-0" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="IPV4 Loopback 0 address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipaddress-v6-loopback-0" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="IPV6 Loopback 0 address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipaddress-v4-aim" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="IPV4 AIM address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipaddress-v6-aim" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="IPV6 AIM address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipaddress-v6-oam" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="IPV6 OAM address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="inv-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="CANOPI's inventory status. Only set with values exactly as defined by CANOPI.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="pserver-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="ID of Pserver")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="internet-topology" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="internet topology of Pserver")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="pserver-name2" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="alternative pserver name")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="purpose" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="purpose of pserver")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:p-interfaces" minOccurs="0"/> + <xs:element ref="tns:lag-interfaces" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="pservers"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of compute hosts.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:pserver" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="virtual-data-center"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Virtual organization of cloud infrastructure elements in a data center context",nameProps="vdc-name",indexedProps="vdc-name,vdc-id",container="virtual-data-centers",namespace="cloud-infrastructure")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="vdc-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique ID of the vdc")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vdc-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name of the virtual data center")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="virtual-data-centers"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Virtual organization of cloud infrastructure elements in a data center context")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:virtual-data-center" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="cloud-infrastructure"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Namespace for cloud infrastructure.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:complexes" minOccurs="0"/> + <xs:element ref="tns:cloud-regions" minOccurs="0"/> + <xs:element ref="tns:network-profiles" minOccurs="0"/> + <xs:element ref="tns:pservers" minOccurs="0"/> + <xs:element ref="tns:virtual-data-centers" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="connector"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of resource instances used to connect a variety of disparate inventory widgets",indexedProps="resource-instance-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version",container="connectors",namespace="business")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="resource-instance-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique id of resource instance.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC model version uuid for this resource or service model.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="widget-model-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC data dictionary widget model. This maps directly to the A&AI widget.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="widget-model-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:metadata" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="connectors"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of resource instances used to connect a variety of disparate inventory widgets")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:connector" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="tunnel-xconnect"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Represents the specifics of a tunnel cross connect piece of a resource that gets separately allotted",uniqueProps="id",indexedProps="id",dependentOn="allotted-resource",container="tunnel-xconnects")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Allotted Resource id UUID assigned to this instance.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="bandwidth-up-wan1" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The WAN uplink bandwidth for WAN1")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="bandwidth-down-wan1" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The WAN downlink bandwidth for WAN1")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="bandwidth-up-wan2" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The WAN uplink bandwidth for WAN2")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="bandwidth-down-wan2" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The WAN downlink bandwidth for WAN2")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Concurrency value")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="tunnel-xconnects"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="This object is used to store the specific tunnel cross connect aspects of an allotted resource")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:tunnel-xconnect" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="allotted-resource"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Represents a slice or partial piece of a resource that gets separately allotted",nameProps="description",uniqueProps="id",indexedProps="id,model-invariant-id,model-version-id,type,role",dependentOn="service-instance",container="allotted-resources")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Allotted Resource id UUID assigned to this instance.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="description" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The descriptive information assigned to this allotted resource instance")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="selflink" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Link back to more information in the controller")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC model version uuid for this resource or service model.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-customization-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="captures the id of all the configuration used to customize the resource for the service.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Orchestration status of this resource, mastered by MSO")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Status that indicates whether the asset is in or out of the service path. Valid values are null, in-service-path, out-of-service-path.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Concurrency value")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Generic description of the type of the resource")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Role that this asset will be playing in its context.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:tunnel-xconnects" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="allotted-resources"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="This object is used to store slices of services being offered")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:allotted-resource" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service-instance"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Instance of a service",indexedProps="service-instance-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,service-instance-name,service-instance-location-id,orchestration-status",nameProps="service-instance-name",searchable="service-instance-id,service-instance-name",uniqueProps="service-instance-id",dependentOn="service-subscription",container="service-instances")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="service-instance-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Uniquely identifies this instance of a service")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="service-instance-name" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="This field will store a name assigned to the service-instance.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC model version uuid for this resource or service model.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="widget-model-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC data dictionary widget model. This maps directly to the A&AI widget.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="widget-model-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="bandwidth-total" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Indicates the total bandwidth to be used for this service.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="bandwidth-up-wan1" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="indicates the upstream bandwidth this service will use on the WAN1 port of the physical device.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="bandwidth-down-wan1" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="indicates the downstream bandwidth this service will use on the WAN1 port of the physical device.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="bandwidth-up-wan2" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="indicates the upstream bandwidth this service will use on the WAN2 port of the physical device.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="bandwidth-down-wan2" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="indicates the downstream bandwidth this service will use on the WAN2 port of the physical device.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vhn-portal-url" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="URL customers will use to access the vHN Portal.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="service-instance-location-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="An identifier that customers assign to the location where this service is being used.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="selflink" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Path to the controller object.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Orchestration status of this service.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:metadata" minOccurs="0"/> + <xs:element ref="tns:allotted-resources" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service-instances"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of service instances")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:service-instance" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service-subscription"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Object that group service instances.",indexedProps="service-type",dependentOn="customer",container="service-subscriptions",crossEntityReference="service-instance,service-type")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="service-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Value defined by orchestration to identify this service across ECOMP.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="temp-ub-sub-account-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="This property will be deleted from A&AI in the near future. Only stop gap solution.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:service-instances" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service-subscriptions"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of objects that group service instances.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:service-subscription" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="customer"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="customer identifiers to provide linkage back to BSS information.",nameProps="subscriber-name",indexedProps="subscriber-name,global-customer-id,subscriber-type",searchable="global-customer-id,subscriber-name",uniqueProps="global-customer-id",container="customers",namespace="business")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="global-customer-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Global customer id used across ECOMP to uniquely identify customer.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="subscriber-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Subscriber name, an alternate way to retrieve a customer.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="subscriber-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Subscriber type, a way to provide VID with only the INFRA customers.",defaultValue="CUST")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:service-subscriptions" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="customers"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of customer identifiers to provide linkage back to BSS information.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:customer" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="business"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Namespace for business related constructs")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:connectors" minOccurs="0"/> + <xs:element ref="tns:customers" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vnf-image"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Image object that pertain to a VNF that doesn't have associated vservers. This is a kludge.",indexedProps="application,att-uuid,application-vendor,application-version",uniqueProps="att-uuid",container="vnf-images",namespace="service-design-and-creation")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="att-uuid" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique ID of this asset")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="application" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The application that the image instantiates.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="application-vendor" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The vendor of the application.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="application-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The version of the application.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="selflink" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vnf-images"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of image objects that pertain to a VNF that doesn't have associated vservers. This is a kludge.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:vnf-image" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Stand-in for service model definitions. Likely to be deprecated in favor of models from ASDC. Does not strictly map to ASDC services.",indexedProps="service-description,service-id",container="services",namespace="service-design-and-creation")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="service-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="This gets defined by others to provide a unique ID for the service, we accept what is sent.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="service-description" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Description of the service")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="service-selflink" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="service-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="service version")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="services"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of service model definitions. Likely to be deprecated in favor of models from ASDC.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:service" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service-capability"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Early definition of server/resource pairings, likely to be replaced by models. No new use should be made of this.",indexedProps="service-type,vnf-type",container="service-capabilities",namespace="service-design-and-creation")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="service-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="This gets defined by others to provide a unique ID for the service, we accept what is sent.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnf-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service-capabilities"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of service capabilities.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:service-capability" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="element-choice-set"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="This is how we would capture constraints defining allowed sets of elements.",uniqueProps="element-choice-set-uuid",indexedProps="element-choice-set-uuid",allowDirectRead="true",allowDirectWrite="false",container="element-choice-sets")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="element-choice-set-uuid" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,autoGenerateUuid="true")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="element-choice-set-name" type="xs:string"/> + <xs:element name="cardinality" type="xs:string" minOccurs="0"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:model-elements" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="element-choice-sets"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:element-choice-set" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="constrained-element-set"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="This is how we would capture constraints defining allowed sets of elements.",uniqueProps="constrained-element-set-uuid",indexedProps="constrained-element-set-uuid",allowDirectRead="true",allowDirectWrite="false",container="constrained-element-sets")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="constrained-element-set-uuid" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,autoGenerateUuid="true")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="constraint-type" type="xs:string"/> + <xs:element name="check-type" type="xs:string"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:element-choice-sets" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="constrained-element-sets"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:constrained-element-set" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model-constraint"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="This is how we would capture constraints defining allowed sets of elements.",uniqueProps="model-constraint-uuid",indexedProps="model-constraint-uuid",allowDirectRead="true",allowDirectWrite="false",container="model-constraints")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="model-constraint-uuid" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,autoGenerateUuid="true")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="constrained-element-set-uuid-to-replace" type="xs:string"/> + <xs:element ref="tns:constrained-element-sets" minOccurs="0"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model-constraints"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:model-constraint" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model-element"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Defines how other models combine to make up a higher-level model.",uniqueProps="model-element-uuid",indexedProps="model-element-uuid",allowDirectRead="true",allowDirectWrite="false",container="model-elements")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="model-element-uuid" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,autoGenerateUuid="true")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="new-data-del-flag" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Indicates whether this element was created as part of instantiation from this model")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="cardinality" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="How many of this type of element are required/allowed")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="linkage-points" minOccurs="0"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Defines how other models combine to make up a higher-level model.",uniqueProps="model-element-uuid",indexedProps="model-element-uuid",allowDirectRead="true",allowDirectWrite="false",container="model-elements")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="linkage-point" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:model-elements" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Defines how other models combine to make up a higher-level model")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:model-constraints" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Describes new constraints on this model element that are not part of that model's definition")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model-elements"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:model-element" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model-ver"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Subgraph definition provided by ASDC to describe a specific version of an inventory asset and its connections related to ASDC models",nameProps="model-name",indexedProps="model-version-id,model-name,model-version",uniqueProps="model-version-id",container="model-vers")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="model-version-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique identifier corresponding to one version of a model in ASDC")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name of the model, which can change from version to version.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-version" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Version")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-description" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Description")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:model-elements" minOccurs="0"/> + <xs:element ref="tns:metadata" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model-vers"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:model-ver" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Subgraph definition provided by ASDC to describe an inventory asset and its connections related to ASDC models, independent of version",nameProps="model-type",indexedProps="model-invariant-id,model-type",uniqueProps="model-invariant-id",container="models",namespace="service-design-and-creation")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="model-invariant-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique identifier corresponding to the main definition of a model in ASDC")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Type of the model, e.g., service, resource, widget, etc.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:model-vers" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="models"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of subgraph definitions provided by ASDC to describe the inventory assets and their connections related to ASDC models")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:model" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="related-lookup"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="TBD",uniqueProps="related-lookup-uuid",indexedProps="related-lookup-uuid",allowDirectRead="true",allowDirectWrite="false",container="related-lookups")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="related-lookup-uuid" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,autoGenerateUuid="true")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="source-node-type" type="xs:string"/> + <xs:element name="source-node-property" type="xs:string"/> + <xs:element name="target-node-type" type="xs:string"/> + <xs:element name="target-node-property" type="xs:string"/> + <xs:element name="property-collect-list" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="related-lookups"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:related-lookup" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="property-constraint"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="TBD",uniqueProps="property-constraint-uuid",indexedProps="property-constraint-uuid",allowDirectRead="true",allowDirectWrite="false",container="property-constraints")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="property-constraint-uuid" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,autoGenerateUuid="true")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="constraint-type" type="xs:string"/> + <xs:element name="property-name" type="xs:string"/> + <xs:element name="property-value" type="xs:string"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="property-constraints"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:property-constraint" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="named-query-element"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="TBD",uniqueProps="named-query-element-uuid",indexedProps="named-query-element-uuid",allowDirectRead="true",allowDirectWrite="false",container="named-query-elements")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="named-query-element-uuid" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,autoGenerateUuid="true")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="property-collect-list" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"/> + <xs:element name="property-limit-desc" type="xs:string" minOccurs="0"/> + <xs:element name="do-not-output" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:named-query-elements" minOccurs="0"/> + <xs:element ref="tns:related-lookups" minOccurs="0"/> + <xs:element ref="tns:property-constraints" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="named-query-elements"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:named-query-element" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="named-query"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="TBD",nameProps="named-query-name",uniqueProps="named-query-uuid",indexedProps="named-query-uuid,named-query-name",container="named-queries",namespace="service-design-and-creation")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="named-query-uuid" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true)</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="named-query-name" type="xs:string"/> + <xs:element name="named-query-version" type="xs:string"/> + <xs:element name="required-input-params" minOccurs="0"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="TBD",nameProps="named-query-name",uniqueProps="named-query-uuid",indexedProps="named-query-uuid,named-query-name",container="named-queries",namespace="service-design-and-creation")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="required-input-param" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="description" type="xs:string" minOccurs="0"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:named-query-elements" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="named-queries"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:named-query" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service-design-and-creation"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Namespace for objects managed by ASDC")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:vnf-images" minOccurs="0"/> + <xs:element ref="tns:services" minOccurs="0"/> + <xs:element ref="tns:service-capabilities" minOccurs="0"/> + <xs:element ref="tns:models" minOccurs="0"/> + <xs:element ref="tns:named-queries" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="logical-link"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Logical links generally connect l-interfaces but are used to express logical connectivity between two points",indexedProps="link-name,model-invariant-id,model-version-id,widget-model-id,widget-model-version,link-id,prov-status,circuit-id,purpose",uniqueProps="link-id",container="logical-links",namespace="network",searchable="link-name")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="link-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="link-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Type of logical link, e.g., evc")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="speed-value" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Captures the numeric part of the speed")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="speed-units" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Captures the units corresponding to the speed")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ip-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="v4, v6, or ds for dual stack (should be att-ip-version)")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="routing-protocol" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="For example, static or BGP")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC model version uuid for this resource or service model.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="widget-model-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC data dictionary widget model. This maps directly to the A&AI widget.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="widget-model-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Status that indicates whether the asset is in or out of the service path. Valid values are null, in-service-path, out-of-service-path.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Trigger for operational monitoring of this VNF by BAU Service Assurance systems.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="link-role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Indication of the network use of the logical link.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="link-name2" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Alias or alternate name (CLCI or D1 name).")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="link-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="UUID of the logical-link, SDNC generates this.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="circuit-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Circuit id")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="purpose" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Reason for this entity, role it is playing")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="logical-links"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of logical connections")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:logical-link" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="class-of-service"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(indexedProps="cos",dependentOn="site-pair",container="classes-of-service")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="cos" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="unique identifier of probe")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="probe-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="identifier of probe")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="probe-type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="type of probe")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="classes-of-service"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="class-of-service of probe")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:class-of-service" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="site-pair"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(indexedProps="site-pair-id",uniqueProps="site-pair-id",dependentOn="routing-instance",container="site-pairs")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="site-pair-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="unique identifier of probe")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="source-ip" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Prefix address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="destination-ip" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Prefix address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ip-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="ip version, v4, v6")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="destination-hostname" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Hostname of the destination equipment to which SLAs are measured against.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="destination-equip-type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The type of destinatination equipment. Could be Router, UCPE, etc.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:classes-of-service" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="site-pairs"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="probe within a set")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:site-pair" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="routing-instance"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(indexedProps="routing-instance-id",uniqueProps="routing-instance-id",dependentOn="site-pair-set",container="routing-instances")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="routing-instance-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique id of routing instance")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="rpm-owner" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="rpm owner")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:site-pairs" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="routing-instances"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="set of probes related to generic-vnf routing instance")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:routing-instance" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="site-pair-set"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Set of instances for probes used to measure service level agreements",indexedProps="site-pair-set-id",uniqueProps="site-pair-set-id",container="site-pair-sets",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="site-pair-set-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique id of site pair set.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:routing-instances" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="site-pair-sets"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of sets of instances for probes related to generic-vnf")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:site-pair-set" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="route-target"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="stores the global route targets associated with a VPN",indexedProps="global-route-target,route-target-role",searchable="global-route-target",container="route-targets",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="global-route-target" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Number used to identify an RT, globally unique in the network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="route-target-role" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Role assigned to this route target, valid values EXPORT/IMPORT/BOTH")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Relationship to other objects")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="route-targets"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:route-target" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vpn-binding"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="VPN binding",nameProps="vpn-name,vpn-type",indexedProps="vpn-name,vpn-id,global-route-target,vpn-type",searchable="vpn-id,vpn-name",uniqueProps="vpn-id",container="vpn-bindings",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="vpn-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="VPN ID, globally unique within A&AI")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vpn-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="VPN Name")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="global-route-target" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Number used to identify a VPN, globally unique in the network. NOTE - WILL BE RETIRED IN 1802, see child object")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vpn-platform" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the platform associated with the VPN example AVPN, Mobility")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vpn-type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Type of the vpn, should be taken from enumerated/valid values")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="route-distinguisher" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used to distinguish the distinct VPN routes of separate customers who connect to the provider in an MPLS network.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="route-target-role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Role assigned to this route target. NOTE - WILL BE RETIRED IN 1802, see child object")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:route-targets" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="l3-networks relate to vpn-bindings")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vpn-bindings"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:vpn-binding" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vpls-pe"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="VPLS Provider Edge routers.",indexedProps="prov-status,equipment-name",container="vpls-pes",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="equipment-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true)</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Trigger for operational monitoring of this VNF by BAU Service Assurance systems.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipv4-oam-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address).")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="equipment-role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Client should send valid enumerated value, e.g., VPLS-PE.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vlan-id-outer" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Temporary location for stag to get to VCE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:p-interfaces" minOccurs="0"/> + <xs:element ref="tns:lag-interfaces" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vpls-pes"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of VPLS Provider Edge routers")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:vpls-pe" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="multicast-configuration"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(indexedProps="multicast-configuration-id",uniqueProps="multicast-configuration-id",container="multicast-configurations",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="multicast-configuration-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique id of multicast configuration.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="multicast-protocol" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="protocol of multicast configuration")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="rp-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="rp type of multicast configuration")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="multicast-configurations"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="multicast configuration of generic-vnf ip-address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:multicast-configuration" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="cvlan-tag-entry"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(dependentOn="port-group",indexedProps="cvlan-tag",container="cvlan-tags")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="cvlan-tag" type="xs:unsignedInt"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="See mis-na-virtualization-platform.yang")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="cvlan-tags"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:cvlan-tag-entry" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="port-group"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Used to capture the network interfaces of this VCE",nameProps="port-group-name",indexedProps="port-group-id,heat-stack-id,interface-id,interface-name,switch-name",dependentOn="vce",container="port-groups")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="interface-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique ID of the interface")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="neutron-network-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Neutron network id of this Interface")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="neutron-network-name" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Neutron network name of this Interface")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="interface-role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Role assigned to this Interface, should use values as defined in ECOMP Yang models.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="port-group-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Unique ID for port group in vmware")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="port-group-name" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Likely to duplicate value of neutron network name")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="switch-name" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="DVS or standard switch name (should be non-null for port groups associated with DVS)")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="orchestration-status" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Orchestration status of this VNF, mastered by MSO")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Heat stack id corresponding to this instance, managed by MSO")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="mso-catalog-key" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Corresponds to the SDN-C catalog id used to configure this VCE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:cvlan-tags" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="port-groups"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:port-group" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="license"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Metadata for license group.",indexedProps="group-uuid,resource-uuid",dependentOn="generic-vnf,vce,vpe",container="licenses")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="group-uuid" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique ID for the license group the resource belongs to, should be uuid.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-uuid" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique ID of a license resource. ")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Concurrency value")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="licenses"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Licenses to be allocated across resources, keyed by group-uuid and resource-uuid, related to license management")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:license" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="entitlement"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Metadata for entitlement group.",indexedProps="group-uuid,resource-uuid",dependentOn="generic-vnf,vce,vpe",container="entitlements")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="group-uuid" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique ID for the entitlement group the resource comes from, should be uuid.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-uuid" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique ID of an entitlement resource. ")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Concurrency value")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="entitlements"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Entitlements, keyed by group-uuid and resource-uuid, related to license management")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:entitlement" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vce"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Virtual Customer Edge Router, used specifically for Gamma. This object is deprecated.",nameProps="vnf-name",indexedProps="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,interface-name,regional-resource-zone,vpe-id,prov-status,service-id",searchable="vnf-id,vnf-name,vnf-name2",uniqueProps="vnf-id",container="vces",namespace="network",extendsFrom="vnf")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="vnf-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique id of VNF. This is unique across the graph.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnf-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name of VNF.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnf-name2" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Alternate name of VNF.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnf-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="service-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="regional-resource-zone" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Regional way of organizing pservers, source of truth should define values")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Trigger for operational monitoring of this resource by Service Assurance systems.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Status that indicates whether the asset is in or out of the service path. Valid values are null, in-service-path, out-of-service-path.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="equipment-role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Network role being played by this VNF")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Orchestration status of this VNF, mastered by MSO")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Heat stack id corresponding to this instance, managed by MSO")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="mso-catalog-key" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Corresponds to the SDN-C catalog id used to configure this VCE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vpe-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Unique ID of VPE connected to this VCE.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="v6-vce-wan-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Valid v6 IP address for the WAN Link on this router. Implied length of /64.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipv4-oam-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Address tail-f uses to configure vce, also used for troubleshooting and is IP used for traps generated by VCE.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipv4-loopback0-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Loopback0 address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:port-groups" minOccurs="0"/> + <xs:element ref="tns:licenses" minOccurs="0"/> + <xs:element ref="tns:entitlements" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vces"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of Virtual Customer Edge Routers, used specifically for Gamma. This object is deprecated.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:vce" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vpe"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Relationship-list must include related to info for complex.",nameProps="vnf-name",indexedProps="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,regional-resource-zone,prov-status,service-id",searchable="vnf-id,vnf-name,vnf-name2",uniqueProps="vnf-id",container="vpes",namespace="network",extendsFrom="vnf")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="vnf-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique id of VNF. This is unique across the graph.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnf-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name of VNF.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnf-name2" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Alternate name of VNF.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnf-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="service-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Unique identifier of service. Does not map strictly to ASDC services. SOON TO BE DEPRECATED")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="regional-resource-zone" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Regional way of organizing pservers, source of truth should define values")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Trigger for operational monitoring of this resource by Service Assurance systems.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Status that indicates whether the asset is in or out of the service path. Valid values are null, in-service-path, out-of-service-path.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="equipment-role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Client should send valid enumerated value")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Orchestration status of this VNF, mastered by MSO")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Heat stack id corresponding to this instance, managed by MSO")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="mso-catalog-key" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Corresponds to the SDN-C catalog id used to configure this VCE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipv4-oam-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address).")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipv4-oam-gateway-address-prefix-length" type="xs:int" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Prefix length for oam-address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipv4-oam-gateway-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Gateway address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="v4-loopback0-ip-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Loopback0 address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vlan-id-outer" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Temporary location for stag to get to VCE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="as-number" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="as-number of the VPE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="summary-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="details regarding the vpe operation, PLEASE DISCONTINUE USE OF THIS FIELD.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="encrypted-access-flag" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="indicates whether vpe access uses SSH")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l-interfaces" minOccurs="0"/> + <xs:element ref="tns:lag-interfaces" minOccurs="0"/> + <xs:element ref="tns:licenses" minOccurs="0"/> + <xs:element ref="tns:entitlements" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vpes"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Virtual provider edge router. In 1504, A&AI will populate this object through an M&P and tool provided to operations.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:vpe" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vnfc"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(indexedProps="vnfc-name,prov-status,vnfc-type,vnfc-function-code,ipaddress-v4-oam-vip,in-maint,is-closed-loop-disabled,group-notation",searchable="vnfc-name",container="vnfcs",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="vnfc-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique ID of vnfc.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnfc-function-code" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="function code")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnfc-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="type")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="prov status of this vnfc")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Orchestration status of this VNF, mastered by APP-C")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipaddress-v4-oam-vip" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Oam V4 vip address of this vnfc")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="is-closed-loop-disabled" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether closed loop function is enabled on this node")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="group-notation" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Group notation of VNFC")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vnfcs"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="virtual network components associated with a vserver from application controller.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:vnfc" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="subnet"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(indexedProps="subnet-id,subnet-name",nameProps="subnet-name",uniqueProps="subnet-id",dependentOn="l3-network",container="subnets")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="subnet-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Subnet ID, should be UUID.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="subnet-name" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name associated with the subnet.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="neutron-subnet-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Neutron id of this subnet")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="gateway-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="gateway ip address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="network-start-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="network start address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="cidr-mask" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="cidr mask")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ip-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="ip version")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Orchestration status of this VNF, mastered by MSO")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="dhcp-enabled" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="dhcp enabled")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="dhcp-start" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the start address reserved for use by dhcp")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="dhcp-end" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the last address reserved for use by dhcp")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="subnets"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:subnet" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ctag-assignment"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(indexedProps="vlan-id-inner",dependentOn="l3-network",container="ctag-assignments")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="vlan-id-inner" type="xs:unsignedInt"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="id.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ctag-assignments"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:ctag-assignment" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="segmentation-assignment"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Openstack segmentation assignment.",indexedProps="segmentation-id",dependentOn="l3-network",container="segmentation-assignments")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="segmentation-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Route Table Reference id, UUID assigned to this instance.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Concurrency value")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="segmentation-assignments"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of openstack segmentation assignments")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:segmentation-assignment" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="l3-network"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Generic network definition",nameProps="network-name",indexedProps="heat-stack-id,network-uuid,service-id,network-id,network-name,model-invariant-id,model-version-id,widget-model-id,widget-model-version,contrail-network-fqdn,network-role",searchable="network-id,network-name",uniqueProps="network-id",container="l3-networks",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="network-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Network ID, should be uuid. Unique across A&AI.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="network-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name of the network, governed by some naming convention..")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="network-type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Type of the network - who defines these values?")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="network-role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Role the network plans - who defines these values?")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="network-technology" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Network technology - who defines these values?")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="neutron-network-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Neutron network id of this Interface")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="is-bound-to-vpn" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="Set to true if bound to VPN")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="service-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Unique identifier of service from ASDC. Does not strictly map to ASDC services. SOON TO BE DEPRECATED")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="network-role-instance" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="network role instance")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Orchestration status of this VNF, mastered by MSO")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Heat stack id corresponding to this instance, managed by MSO")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="mso-catalog-key" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Corresponds to the SDN-C catalog id used to configure this VCE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="contrail-network-fqdn" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Contrail FQDN for the network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC model version uuid for this resource or service model.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-customization-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="captures the id of all the configuration used to customize the resource for the service.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="widget-model-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC data dictionary widget model. This maps directly to the A&AI widget.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="widget-model-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="physical-network-name" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name associated with the physical network.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="is-provider-network" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="boolean indicatating whether or not network is a provider network.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="is-shared-network" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="boolean indicatating whether or not network is a shared network.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="is-external-network" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="boolean indicatating whether or not network is an external network.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Status that indicates whether the asset is in or out of the service path. Valid values are null, in-service-path, out-of-service-path.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="selflink" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Path to the controller object.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:subnets" minOccurs="0"/> + <xs:element ref="tns:ctag-assignments" minOccurs="0"/> + <xs:element ref="tns:segmentation-assignments" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Relates to tenant (or is it a child of tenant), complex, service, vpn-binding")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="l3-networks"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:l3-network" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="network-policy"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(nameProps="network-policy-fqdn",indexedProps="network-policy-id,network-policy-fqdn",searchable="network-policy-id,network-policy-fqdn",uniqueProps="network-policy-id",container="network-policies",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="network-policy-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="UUID representing unique key to this instance")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="network-policy-fqdn" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Contrail FQDN for the policy")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="ID for the openStack Heat instance")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="network-policies"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:network-policy" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vf-module"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="a deployment unit of VNFCs",indexedProps="vf-module-id,vf-module-name,heat-stack-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,contrail-service-instance-fqdn",searchable="vf-module-id,vf-module-name",dependentOn="generic-vnf",container="vf-modules")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="vf-module-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique ID of vf-module.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vf-module-name" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name of vf-module")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Heat stack id corresponding to this instance.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="orchestration status of this vf-module, mastered by MSO")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="is-base-vf-module" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether or not this object is base vf module")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC model version uuid for this resource or service model.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-customization-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="captures the id of all the configuration used to customize the resource for the service.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="widget-model-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC data dictionary widget model. This maps directly to the A&AI widget.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="widget-model-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="contrail-service-instance-fqdn" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the Contrail unique ID for a service-instance")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="module-index" type="xs:int" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the index will track the number of modules of a given type that have been deployed in a VNF, starting with 0, and always choosing the lowest available digit")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="selflink" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Path to the controller object.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vf-modules"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of vf-modules, a deployment unit of VNFCs")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:vf-module" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="generic-vnf"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="General purpose VNF",nameProps="vnf-name",indexedProps="is-closed-loop-disabled,vnf-name2,vnf-type,heat-stack-id,in-maint,vnf-name,vnf-id,regional-resource-zone,prov-status,service-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,nf-type,nf-role,nf-function,nf-naming-code",searchable="vnf-id,vnf-name,vnf-name2",uniqueProps="vnf-id",container="generic-vnfs",namespace="network",extendsFrom="vnf")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="vnf-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique id of VNF. This is unique across the graph.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnf-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name of VNF.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnf-name2" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Alternate name of VNF.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnf-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="service-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Unique identifier of service, does not necessarily map to ASDC service models. SOON TO BE DEPRECATED")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="regional-resource-zone" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Regional way of organizing pservers, source of truth should define values")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Trigger for operational monitoring of this resource by Service Assurance systems.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Status that indicates whether the asset is in or out of the service path. Valid values are null, in-service-path, out-of-service-path.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="equipment-role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Client should send valid enumerated value")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Orchestration status of this VNF, used by MSO.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Heat stack id corresponding to this instance, managed by MSO")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="mso-catalog-key" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Corresponds to the SDN-C catalog id used to configure this VCE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="management-option" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="identifier of managed by ATT or customer")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipv4-oam-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by generic-vnf.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipv4-loopback0-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="v4 Loopback0 address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="nm-lan-v6-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="v6 Loopback address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="management-v6-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="v6 management address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vcpu" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="number of vcpus ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only by uCPE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vcpu-units" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="units associated with vcpu, used for VNFs with no vservers/flavors, to be used only by uCPE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vmemory" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="number of GB of memory ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only by uCPE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vmemory-units" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="units associated with vmemory, used for VNFs with no vservers/flavors, to be used only by uCPE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vdisk" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="number of vdisks ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only uCPE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vdisk-units" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="units associated with vdisk, used for VNFs with no vservers/flavors, to be used only by uCPE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="is-closed-loop-disabled" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether closed loop function is enabled on this node")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="summary-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="details regarding the generic-vnf operation, PLEASE DISCONTINUE USE OF THIS FIELD.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="encrypted-access-flag" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="indicates whether generic-vnf access uses SSH")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC model version uuid for this resource or service model.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-customization-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="captures the id of all the configuration used to customize the resource for the service.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="widget-model-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC data dictionary widget model. This maps directly to the A&AI widget.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="widget-model-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="as-number" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="as-number of the VNF")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="regional-resource-subzone" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="represents sub zone of the rr plane")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="nf-type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Generic description of the type of the resource")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="nf-role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Role that this asset will be playing in its context.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="nf-function" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="English description of function that the specific resource deployment is providing. Assigned as part of the customization of a resource in a service")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="nf-naming-code" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Short code that is used in naming instances of the item being modelled")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="selflink" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Path to the controller object.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l-interfaces" minOccurs="0"/> + <xs:element ref="tns:lag-interfaces" minOccurs="0"/> + <xs:element ref="tns:vf-modules" minOccurs="0"/> + <xs:element ref="tns:licenses" minOccurs="0"/> + <xs:element ref="tns:entitlements" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="generic-vnfs"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of VNFs")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:generic-vnf" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="lag-link"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="LAG links can connect lag-interfaces",indexedProps="link-name",container="lag-links",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="link-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Alphabetical concatenation of lag-interface names")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="lag-links"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of link aggregation connections")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:lag-link" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="newvce"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="This object fills in the gaps from vce that were incorporated into generic-vnf. This object will be retired with vce.",nameProps="vnf-name",indexedProps="vnf-name,vnf-name2,vnf-type,heat-stack-id,prov-status,vnf-id2",searchable="vnf-id2,vnf-name,vnf-name2",uniqueProps="vnf-id2",container="newvces",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="vnf-id2" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique id of VNF, can't use same attribute name right now until we promote this new object")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnf-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name of VNF.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnf-name2" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Alternate name of VNF.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="vnf-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Trigger for operational monitoring of this VNF by BAU Service Assurance systems.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Status that indicates whether the asset is in or out of the service path. Valid values are null, in-service-path, out-of-service-path.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipv4-oam-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address).")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="equipment-role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Client should send valid enumerated value, e.g., VPE.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipv4-loopback0-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="v4 Loopback0 address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Orchestration status of this VNF, mastered by MSO.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Heat stack id corresponding to this instance, managed by MSO")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="mso-catalog-key" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Corresponds to the SDN-C catalog id used to configure this VCE")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l-interfaces" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="newvces"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="This object fills in the gaps from vce that were incorporated into generic-vnf. This object will be retired with vce.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:newvce" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="pnf"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="PNF represents a physical network function. typically equipment used in the D1 world. in 1607, this will be populated by SDN-C to represent a premises router that a uCPE connects to. But this can be used to represent any physical device that is not an AIC node or uCPE.",indexedProps="pnf-name,orchestration-status,inv-status",searchable="pnf-name",uniqueProps="pnf-name",container="pnfs",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="pnf-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="unique name of Physical Network Function.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="pnf-name2" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="name of Physical Network Function.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="pnf-name2-source" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="source of name2")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="pnf-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="id of pnf")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="equip-type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Equipment type. Source of truth should define valid values.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="equip-vendor" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Equipment vendor. Source of truth should define valid values.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="equip-model" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Equipment model. Source of truth should define valid values.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="management-option" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="identifier of managed by ATT or customer")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipaddress-v4-oam" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="ipv4-oam-address with new naming convention for IP addresses")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="sw-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="sw-version is the version of SW for the hosted application on the PNF.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(defaultValue="false",description="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="frame-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="ID of the physical frame (relay rack) where pnf is installed.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="serial-number" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Serial number of the device")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipaddress-v4-loopback-0" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="IPV4 Loopback 0 address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipaddress-v6-loopback-0" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="IPV6 Loopback 0 address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipaddress-v4-aim" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="IPV4 AIM address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipaddress-v6-aim" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="IPV6 AIM address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipaddress-v6-oam" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="IPV6 OAM address")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="inv-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="CANOPI's inventory status. Only set with values exactly as defined by CANOPI.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="nf-role" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Nf Role is the role performed by this instance in the network.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:p-interfaces" minOccurs="0"/> + <xs:element ref="tns:lag-interfaces" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="pnfs"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of Physical Network Functions.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:pnf" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="physical-link"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of physical connections, typically between p-interfaces",indexedProps="circuit-id,link-name",alternateKeys1="circuit-id",container="physical-links",namespace="network",searchable="link-name,circuit-id")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="link-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="speed-value" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Captures the numeric part of the speed")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="speed-units" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Captures the units corresponding to the speed")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="circuit-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Circuit it")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="dual-mode" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Dual access mode (e.g., primary, secondary")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="management-option" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="To provide information on who manages this circuit. A&AI or 3rd party transport provider")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="service-provider-name" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name of the service Provider on this link.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="physical-links"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of physical connections, typically between p-interfaces")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:physical-link" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vig-server"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="vig-server contains information about a vig server used for IPSec-configuration. Populated by SDN-C from 1607",indexedProps="vig-address-type",dependentOn="ipsec-configuration",container="vig-servers")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="vig-address-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="indicates whether the VIG is for AVPN or INTERNET")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipaddress-v4-vig" type="xs:string" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="v4 IP of the vig server")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipaddress-v6-vig" type="xs:string" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="v6 IP of the vig server")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vig-servers"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:vig-server" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ipsec-configuration"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="IPSec configuration node will contain various configuration data for the NMTE VNF. This node will have an edge to the generic-vnf (vnf type = TE). Starting 1607, this data will be populated by SDN-C",indexedProps="ipsec-configuration-id",uniqueProps="ipsec-configuration-id",container="ipsec-configurations",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="ipsec-configuration-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="UUID of this configuration")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="requested-vig-address-type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Indicate the type of VIG server like AVPN, INTERNET, BOTH")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="requested-encryption-strength" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Encryption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="requested-dmz-type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="ATT can offer a shared DMZ or a DMZ specific to a customer")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="shared-dmz-network-address" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Network address of shared DMZ")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="requested-customer-name" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="If the DMZ is a custom DMZ, this field will indicate the customer information")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ike-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="can be 1 or 2")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ikev1-authentication" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Contains values like md5, sha1, sha256, sha384")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ikev1-encryption" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Encyption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ikev1-dh-group" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Diffie-Hellman group like DH-GROUP2, DH-GROUP5, DH-GROUP14")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ikev1-am-group-id" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Group name defined in VIG for clients using aggressive mode")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ikev1-am-password" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="pre-shared key for the above group name ")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ikev1-sa-lifetime" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Lifetime for IKEv1 SA")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipsec-authentication" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="md5, sha1, sha256, sha384")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipsec-encryption" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipsec-sa-lifetime" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Life time for IPSec SA")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ipsec-pfs" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="enable PFS or not")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="xauth-userid" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="user ID for xAuth, sm-user,ucpeHostName,nmteHostName")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="xauth-user-password" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Encrypted using the Juniper $9$ algorithm")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="dpd-interval" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="The time between DPD probe")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="dpd-frequency" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Maximum number of DPD before claiming the tunnel is down")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:vig-servers" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ipsec-configurations"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:ipsec-configuration" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="route-table-reference"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Openstack route table reference.",nameProps="route-table-reference-fqdn",uniqueProps="route-table-reference-id",indexedProps="route-table-reference-id,route-table-reference-fqdn",container="route-table-references",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="route-table-reference-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Route Table Reference id, UUID assigned to this instance.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="route-table-reference-fqdn" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="FQDN entry in the route table.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Concurrency value")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="route-table-references"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of openstack route table references")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:route-table-reference" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="instance-group"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="General mechanism for grouping instances",nameProps="description",uniqueProps="id",indexedProps="id,description,type,sub-type",container="instance-groups",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Instance Group ID, UUID assigned to this instance.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="description" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Descriptive text to help identify the usage of this instance-group")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Only valid value today is lower case ha for high availability")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="sub-type" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Valid values for ha type are [geo-activeactive, geo-activestandby, local-activeactive, local-activestandby]")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Concurrency value")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="instance-groups"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of openstack route table references")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:instance-group" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="zone"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="A zone is a grouping of assets in a location homing to the same connections into the CBB",nameProps="zone-name",indexedProps="zone-id,design-type,zone-context",uniqueProps="zone-id",container="zones",namespace="network")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="zone-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Code assigned by AIC to the zone")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="zone-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="English name associated with the zone")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="design-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Design of zone [Medium/Large…]")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="zone-context" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Context of zone [production/test]")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Status of a zone.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Concurrency value")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="zones"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Collection of zones")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:zone" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="network"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Namespace for network inventory resources.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:logical-links" minOccurs="0"/> + <xs:element ref="tns:site-pair-sets" minOccurs="0"/> + <xs:element ref="tns:vpn-bindings" minOccurs="0"/> + <xs:element ref="tns:vpls-pes" minOccurs="0"/> + <xs:element ref="tns:multicast-configurations" minOccurs="0"/> + <xs:element ref="tns:vces" minOccurs="0"/> + <xs:element ref="tns:vpes" minOccurs="0"/> + <xs:element ref="tns:vnfcs" minOccurs="0"/> + <xs:element ref="tns:l3-networks" minOccurs="0"/> + <xs:element ref="tns:network-policies" minOccurs="0"/> + <xs:element ref="tns:generic-vnfs" minOccurs="0"/> + <xs:element ref="tns:lag-links" minOccurs="0"/> + <xs:element ref="tns:newvces" minOccurs="0"/> + <xs:element ref="tns:pnfs" minOccurs="0"/> + <xs:element ref="tns:physical-links" minOccurs="0"/> + <xs:element ref="tns:ipsec-configurations" minOccurs="0"/> + <xs:element ref="tns:route-table-references" minOccurs="0"/> + <xs:element ref="tns:instance-groups" minOccurs="0"/> + <xs:element ref="tns:zones" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="reserved-prop-names"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Internal map to define some reserved properties of a vertex",uniqueProps="aai-unique-key",indexedProps="aai-unique-key,source-of-truth,aai-node-type,aai-uri")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="last-mod-source-of-truth" type="xs:string" minOccurs="0"/> + <xs:element name="aai-node-type" type="xs:string" minOccurs="0"/> + <xs:element name="aai-created-ts" type="xs:unsignedInt" minOccurs="0"/> + <xs:element name="aai-unique-key" type="xs:string" minOccurs="0"/> + <xs:element name="aai-last-mod-ts" type="xs:unsignedInt" minOccurs="0"/> + <xs:element name="source-of-truth" type="xs:string" minOccurs="0"/> + <xs:element name="aai-uri" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="edge-prop-names"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Internal map to define the properties of an edge and interpret the map EdgeRules",edgeInfo="edgeLabel,direction,multiplicityRule,isParent,usesResource,hasDelTarget,SVC-INFRA,SVC-INFRA-REV")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="edgeLabel" type="xs:string" minOccurs="0"/> + <xs:element name="direction" type="xs:string" minOccurs="0"/> + <xs:element name="multiplicityRule" type="xs:string" minOccurs="0"/> + <xs:element name="isParent" type="xs:boolean" minOccurs="0"/> + <xs:element name="usesResource" type="xs:boolean" minOccurs="0"/> + <xs:element name="hasDelTarget" type="xs:boolean" minOccurs="0"/> + <xs:element name="SVC-INFRA" type="xs:string" minOccurs="0"/> + <xs:element name="SVC-INFRA-REV" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="aai-internal"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:reserved-prop-names" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="tns:edge-prop-names" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="inventory"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:search" minOccurs="0"/> + <xs:element ref="tns:actions" minOccurs="0"/> + <xs:element ref="tns:cloud-infrastructure" minOccurs="0"/> + <xs:element ref="tns:business" minOccurs="0"/> + <xs:element ref="tns:service-design-and-creation" minOccurs="0"/> + <xs:element ref="tns:network" minOccurs="0"/> + <xs:element ref="tns:aai-internal" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="notification-event-header"> + <xs:complexType> + <xs:sequence> + <xs:element name="id" type="xs:string" minOccurs="0"/> + <xs:element name="timestamp" type="xs:string" minOccurs="0"/> + <xs:element name="source-name" type="xs:string" minOccurs="0"/> + <xs:element name="domain" type="xs:string" minOccurs="0"/> + <xs:element name="sequence-number" type="xs:string" minOccurs="0"/> + <xs:element name="severity" type="xs:string" minOccurs="0"/> + <xs:element name="event-type" type="xs:string" minOccurs="0"/> + <xs:element name="version" type="xs:string" minOccurs="0"/> + <xs:element name="action" type="xs:string" minOccurs="0"/> + <xs:element name="entity-type" type="xs:string" minOccurs="0"/> + <xs:element name="top-entity-type" type="xs:string" minOccurs="0"/> + <xs:element name="entity-link" type="xs:string" minOccurs="0"/> + <xs:element name="status" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="notification-event"> + <xs:complexType> + <xs:sequence> + <xs:element name="cambria.partition" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:notification-event-header" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="overloaded-model"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Allows for legacy POST of old-style and new-style models")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="model-invariant-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique identifier corresponding to the main definition of a model in ASDC")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-name-version-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique identifier corresponding to one version of a model in ASDC")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-type" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Type of the model, e.g., service, resource, widget, etc.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-name" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Name of the model, which can change from version to version.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Invariant unique ID which does not change from version to version")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-version" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Version")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="model-description" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Description")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element ref="tns:model-vers" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="query-parameters"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="QueryParameters for performing a named-query or model query")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:named-query" minOccurs="0"/> + <xs:element ref="tns:overloaded-model" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="instance-filter"> + <xs:complexType> + <xs:sequence/> + </xs:complexType> + </xs:element> + <xs:element name="instance-filters"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="InstanceFilters for performing a named-query or model query")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:instance-filter" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="secondary-filt"> + <xs:complexType> + <xs:sequence/> + </xs:complexType> + </xs:element> + <xs:element name="secondary-filts"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="SecondaryFilts for performing a named-query or model query")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:secondary-filt" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model-and-named-query-search"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="ModelAndNamedQuerySearch holds query-parameters and instance-properties for performing a named-query or model query")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:query-parameters" minOccurs="0"/> + <xs:element ref="tns:instance-filters" minOccurs="0"/> + <xs:element ref="tns:secondary-filts" minOccurs="0"/> + <xs:element name="top-node-type" type="xs:string" minOccurs="0"/> + <xs:element name="secondary-filter-cut-point" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="properties"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Property holder for query properties or instance properties")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="property-name" type="xs:string" minOccurs="0"/> + <xs:element name="property-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="extra-properties"> + <xs:complexType> + <xs:sequence/> + </xs:complexType> + </xs:element> + <xs:element name="inventory-response-item"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Inventory item for response list",container="inventory-response-items")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="model-name" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:extra-properties" minOccurs="0"/> + <xs:element ref="tns:inventory-response-items" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="inventory-response-items"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Container for inventory items in response list",container="response-list")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:inventory-response-item" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="response-list"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Response container for the results of a named-query or model query")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element ref="tns:inventory-response-items" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="extra-property"> + <xs:complexType> + <xs:sequence> + <xs:element name="property-name" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vnf"> + <xs:complexType> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="class">@com.att.aai.annotations.Metadata(description="Abstract vnf class",indexedProps="vnf-id",uniqueProps="vnf-id",inheritors="vce,vpe,generic-vnf",isAbstract="true")</annox:annotate> + </xs:appinfo> + </xs:annotation> + <xs:sequence> + <xs:element name="vnf-id" type="xs:string"> + <xs:annotation> + <xs:appinfo> + <annox:annotate target="field">@com.att.aai.annotations.Metadata(isKey=true,description="Unique id of VNF. This is unique across the graph.")</annox:annotate> + </xs:appinfo> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> +</xs:schema> diff --git a/bpmn/MSOCommonBPMN/src/main/resources/xsd/aai_schema_v11.xsd b/bpmn/MSOCommonBPMN/src/main/resources/xsd/aai_schema_v11.xsd new file mode 100644 index 0000000000..47385168cc --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/resources/xsd/aai_schema_v11.xsd @@ -0,0 +1,6934 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<xs:schema elementFormDefault="qualified" version="1.0" targetNamespace="http://org.onap.aai.inventory/v11" xmlns:tns="http://org.onap.aai.inventory/v11" xmlns:xs="http://www.w3.org/2001/XMLSchema" +xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
+ jaxb:version="2.1"
+ xmlns:annox="http://annox.dev.java.net"
+ jaxb:extensionBindingPrefixes="annox"> + + <xs:element name="inventory-item-data"> + <xs:complexType> + <xs:sequence> + <xs:element name="property-name" type="xs:string" minOccurs="0"/> + <xs:element name="property-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="inventory-item"> + <xs:complexType> + <xs:sequence> + <xs:element name="inventory-item-type" type="xs:string" minOccurs="0"/> + <xs:element name="inventory-item-link" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:inventory-item-data" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="tns:tagged-inventory-item-list" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="tagged-inventory-item-list"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:inventory-item" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="edge-tag-query-result"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:tagged-inventory-item-list" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="start-node-filter"> + <xs:complexType> + <xs:sequence> + <xs:element name="property-name" type="xs:string" minOccurs="0"/> + <xs:element name="property-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="include-node-filter"> + <xs:complexType> + <xs:sequence> + <xs:element name="include-node-type" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="secondary-filter"> + <xs:complexType> + <xs:sequence> + <xs:element name="property-name" type="xs:string" minOccurs="0"/> + <xs:element name="filter-type" type="xs:string" minOccurs="0"/> + <xs:element name="property-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="edge-tag-query-request"> + <xs:complexType> + <xs:sequence> + <xs:element name="edge-tag" type="xs:string" minOccurs="0"/> + <xs:element name="result-detail" type="xs:string" minOccurs="0"/> + <xs:element name="start-node-type" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:start-node-filter" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="tns:include-node-filter" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="tns:secondary-filter" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="result-data"> + <xs:complexType> + <xs:sequence> + <xs:element name="resource-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The specific type of node in the A&AI graph")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-link" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The URL to the specific resource")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="search-results"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:result-data" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="relationship-data"> + <xs:complexType> + <xs:sequence> + <xs:element name="relationship-key" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="A keyword provided by A&AI to indicate an attribute.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="relationship-value" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Value of the attribute.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="related-to-property"> + <xs:complexType> + <xs:sequence> + <xs:element name="property-key" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Key part of a key/value pair")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="property-value" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Value part of a key/value pair")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="relationship"> + <xs:complexType> + <xs:sequence> + <xs:element name="related-to" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="A keyword provided by A&AI to indicate type of node.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="related-link" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="URL to the object in A&AI.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-data" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="tns:related-to-property" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="relationship-list"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:relationship" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="oam-network"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="OAM network, to be deprecated shortly. Do not use for new purposes. ",nameProps="network-name",indexedProps="cvlan-tag,network-uuid,network-name",dependentOn="cloud-region",container="oam-networks")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="network-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="UUID of the network. Unique across a cloud-region")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="network-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name of the network.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="cvlan-tag" type="xs:unsignedInt"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="cvlan-id")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-oam-gateway-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for VNF firewall rule so customer cannot send customer traffic over this oam network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-oam-gateway-address-prefix-length" type="xs:int" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for VNF firewall rule so customer cannot send customer traffic over this oam network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="oam-networks"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of OAM networks, to be deprecated shortly. Do not use for new purposes. ")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:oam-network" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="dvs-switch"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Digital virtual switch metadata, used by SDN-C to configure VCEs. A&AI needs to receive this data from the PO deployment team and administer it using the provisioningTool.sh into A&AI. ",indexedProps="vcenter-url,switch-name",dependentOn="cloud-region",container="dvs-switches")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="switch-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="DVS switch name")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vcenter-url" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="URL used to reach the vcenter")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="dvs-switches"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of digital virtual switch metadata used for vmWare VCEs and VPEs.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:dvs-switch" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="availability-zone"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Availability zone, a collection of compute hosts/pservers",indexedProps="availability-zone-name",dependentOn="cloud-region",container="availability-zones")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="availability-zone-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Name of the availability zone. Unique across a cloud region")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="hypervisor-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Type of hypervisor. Source of truth should define valid values.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="State that indicates whether the availability zone should be used, etc. Source of truth should define valid values.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="az-and-dvs-switches"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:dvs-switches" minOccurs="0"/> + <xs:element ref="tns:availability-zone" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="sdn-zone-response"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:oam-networks" minOccurs="0"/> + <xs:element ref="tns:az-and-dvs-switches" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="search"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:edge-tag-query-result" minOccurs="0"/> + <xs:element ref="tns:edge-tag-query-request" minOccurs="0"/> + <xs:element ref="tns:search-results" minOccurs="0"/> + <xs:element ref="tns:sdn-zone-response" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="update-node-key"> + <xs:complexType> + <xs:sequence> + <xs:element name="key-name" type="xs:string" minOccurs="0"/> + <xs:element name="key-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="action-data"> + <xs:complexType> + <xs:sequence> + <xs:element name="property-name" type="xs:string" minOccurs="0"/> + <xs:element name="property-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="action"> + <xs:complexType> + <xs:sequence> + <xs:element name="action-type" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:action-data" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="update"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Serves a PATCH like function. Does not enforce concurrency control. Clear each usage with AAI team.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="update-node-type" type="xs:string"/> + <xs:element ref="tns:update-node-key" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="update-node-uri" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:action" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="key-data"> + <xs:complexType> + <xs:sequence> + <xs:element name="key-name" type="xs:string" minOccurs="0"/> + <xs:element name="key-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="notify"> + <xs:complexType> + <xs:sequence> + <xs:element name="event-id" type="xs:string"/> + <xs:element name="node-type" type="xs:string" minOccurs="0"/> + <xs:element name="event-trigger" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:key-data" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="selflink" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="actions"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="APIs that are more action related than REST (e.g., notify, update).")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:update" minOccurs="0"/> + <xs:element ref="tns:notify" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ctag-pool"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="A collection of C tags (vlan tags) grouped for a specific purpose.",indexedProps="availability-zone-name",dependentOn="complex",container="ctag-pools")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="target-pe" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="The Target provider edge router")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="availability-zone-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Name of the availability zone")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ctag-pool-purpose" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Describes what the intended purpose of this pool is.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ctag-values" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Comma separated list of ctags")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ctag-pools"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:ctag-pool" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="complex"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of physical locations that can house cloud-regions.",indexedProps="identity-url,data-center-code,complex-name,physical-location-id",searchable="physical-location-id,data-center-code,complex-name,street1,street2,postal-code",uniqueProps="physical-location-id",container="complexes",namespace="cloud-infrastructure")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="physical-location-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique identifier for physical location, e.g., CLLI")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="data-center-code" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Data center code which can be an alternate way to identify a complex")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="complex-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Gamma complex name for LCP instance.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="identity-url" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="URL of the keystone identity service")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="physical-location-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Type, e.g., central office, data center.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="street1" type="xs:string"/> + <xs:element name="street2" type="xs:string" minOccurs="0"/> + <xs:element name="city" type="xs:string"/> + <xs:element name="state" type="xs:string" minOccurs="0"/> + <xs:element name="postal-code" type="xs:string"/> + <xs:element name="country" type="xs:string"/> + <xs:element name="region" type="xs:string"/> + <xs:element name="latitude" type="xs:string" minOccurs="0"/> + <xs:element name="longitude" type="xs:string" minOccurs="0"/> + <xs:element name="elevation" type="xs:string" minOccurs="0"/> + <xs:element name="lata" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:ctag-pools" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="complexes"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of physical locations that can house cloud-regions.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:complex" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="volume-group"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Persistent block-level storage.",indexedProps="volume-group-name,vnf-type,heat-stack-id,volume-group-id",searchable="volume-group-id,volume-group-name",dependentOn="cloud-region",container="volume-groups")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="volume-group-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique ID of volume-group.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="volume-group-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name of the volume group.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Heat stack id corresponding to this volume-group")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vnf-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Orchestration status of this volume-group")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-customization-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="captures the id of all the configuration used to customize the resource for the service.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vf-module-model-customization-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="helps relate the volume group to the vf-module whose components will require the volume group")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="volume-groups"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of persistent block-level storage.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:volume-group" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="volume"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Ephemeral Block storage volume.",indexedProps="volume-id",dependentOn="vserver",container="volumes")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="volume-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique ID of block storage volume relative to the vserver.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="volume-selflink" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="volumes"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of ephemeral Block storage volumes.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:volume" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="l3-interface-ipv4-address-list"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="IPv4 Address Range",indexedProps="l3-interface-ipv4-address,vlan-id-inner,neutron-network-id,neutron-subnet-id",dependentOn="vlan,l-interface")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="l3-interface-ipv4-address" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="IP address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="l3-interface-ipv4-prefix-length" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Prefix length, 32 for single address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vlan-id-inner" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Inner VLAN tag")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vlan-id-outer" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Outer VLAN tag")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="is-floating" type="xs:boolean" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indicator of fixed or floating address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="neutron-network-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Neutron network id of the interface that address belongs to")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="neutron-subnet-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Neutron id of subnet that address belongs to")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="l3-interface-ipv6-address-list"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="IPv6 Address Range",indexedProps="l3-interface-ipv6-address,vlan-id-inner,neutron-network-id,neutron-subnet-id",dependentOn="vlan,l-interface")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="l3-interface-ipv6-address" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="IP address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="l3-interface-ipv6-prefix-length" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Prefix length, 128 for single address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vlan-id-inner" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Inner VLAN tag")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vlan-id-outer" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Outer VLAN tag")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="is-floating" type="xs:boolean" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indicator of fixed or floating address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="neutron-network-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Neutron network id of the interface that address belongs to")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="neutron-subnet-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Neutron id of subnet that address belongs to")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vlan"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Definition of vlan",indexedProps="vlan-interface,vlan-id-inner,vpn-key",dependentOn="l-interface",container="vlans")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="vlan-interface" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="String that identifies the interface")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vlan-id-inner" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Inner VLAN tag")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vlan-id-outer" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Outer VLAN tag")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="speed-value" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Captures the numeric part of the speed")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="speed-units" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Captures the units corresponding to the speed")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vlan-description" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used to describe (the service associated with) the vlan")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="backdoor-connection" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Whether customer is going to use this VLAN for backdoor connection to another customer premise device.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vpn-key" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This indicates the customers VPN ID associated with this vlan")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Status of a vnf's vlan interface, on which the customer circuit resides, mastered by SDN-C.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Prov Status of the VLAN configuration related to a logical interface. Valid values [PREPROV/NVTPROV/PROV].")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="is-ip-unnumbered" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="Flag indicating the interface uses the IP Unnumbered configuration.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l3-interface-ipv4-address-list" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="tns:l3-interface-ipv6-address-list" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vlans"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:vlan" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="sriov-vf"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="SR-IOV Virtual Function (not to be confused with virtual network function)",indexedProps="pci-id,vf-vlan-filter,vf-mac-filter,vf-vlan-strip,neutron-network-id",dependentOn="l-interface",container="sriov-vfs")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="pci-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="PCI ID used to identify the sriov-vf")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vf-vlan-filter" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vf-mac-filter" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vf-vlan-strip" type="xs:boolean" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vf-vlan-anti-spoof-check" type="xs:boolean" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This option ensures anti VLAN spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vf-mac-anti-spoof-check" type="xs:boolean" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This option ensures anti MAC spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vf-mirrors" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This option defines the set of Mirror objects which essentially mirrors the traffic from source to set of collector VNF Ports.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vf-broadcast-allow" type="xs:boolean" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This option, if set to true, sets the VF in promiscuous mode and allows all broadcast traffic to reach the VM")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vf-unknown-multicast-allow" type="xs:boolean" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This option, if set to true, sets the VF in promiscuous mode and allows unknown multicast traffic to reach the VM")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vf-unknown-unicast-allow" type="xs:boolean" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This option, if set to true, sets the VF in promiscuous mode and allows unknown unicast traffic to reach the VM")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vf-insert-stag" type="xs:boolean" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This option, if set to true, instructs to insert outer tag after traffic comes out of VM.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vf-link-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This option is used to set the link status. Valid values as of 1607 are on, off, and auto.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="neutron-network-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Neutron network id of the interface")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="sriov-vfs"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of SR-IOV Virtual Functions.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:sriov-vf" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="l-interface"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Logical interfaces, e.g., a vnic.",indexedProps="macaddr,interface-id,interface-name,network-name",dependentOn="generic-vnf,newvce,vpe,p-interface,vserver,lag-interface",container="l-interfaces")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="interface-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Name given to the interface")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="interface-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="E.g., CUSTOMER, UPLINK, etc.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="v6-wan-link-ip" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Questionably placed - v6 ip addr of this interface (is in vr-lan-interface from Mary B.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="selflink" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="interface-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="ID of interface")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="macaddr" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="MAC address for the interface")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="network-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name of the network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="management-option" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Whether A&AI should be managing this interface of not. Could have value like CUSTOMER")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="interface-description" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Human friendly text regarding this interface.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="is-port-mirrored" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="boolean indicatating whether or not port is a mirrored.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Prov Status of the logical interface. Valid values [PREPROV/NVTPROV/PROV].")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="is-ip-unnumbered" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="Flag indicating the interface uses the IP Unnumbered configuration.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:vlans" minOccurs="0"/> + <xs:element ref="tns:sriov-vfs" minOccurs="0"/> + <xs:element ref="tns:l-interfaces" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l3-interface-ipv4-address-list" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="tns:l3-interface-ipv6-address-list" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="l-interfaces"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of logical interfaces.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:l-interface" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vserver"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Virtual Servers, aka virtual machine or VM.",nameProps="vserver-name",indexedProps="is-closed-loop-disabled,prov-status,vserver-name,vserver-id,in-maint,vserver-name2",searchable="vserver-id,vserver-name,vserver-name2",dependentOn="tenant",container="vservers")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="vserver-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique identifier for this vserver relative to its tenant")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vserver-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name of vserver")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vserver-name2" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Alternative name of vserver")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Trigger for operational monitoring of this resource by Service Assurance systems.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vserver-selflink" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="is-closed-loop-disabled" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="Used to indicate whether closed loop function is enabled on this node")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:volumes" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l-interfaces" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vservers"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of virtual Servers, aka virtual machines or VMs.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:vserver" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="tenant"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Openstack tenant",nameProps="tenant-name",indexedProps="tenant-name,tenant-id,tenant-context",searchable="tenant-id,tenant-name",dependentOn="cloud-region",container="tenants")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="tenant-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique id relative to the cloud-region.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="tenant-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Readable name of tenant")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="tenant-context" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This field will store the tenant context.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:vservers" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="tenants"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of openstack tenants.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:tenant" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="flavor"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Openstack flavor.",nameProps="flavor-name",indexedProps="flavor-name,flavor-id",dependentOn="cloud-region",container="flavors")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="flavor-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Flavor id, expected to be unique across cloud-region.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="flavor-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Flavor name")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="flavor-vcpus" type="xs:int" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Number of CPUs")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="flavor-ram" type="xs:int" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Amount of memory")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="flavor-disk" type="xs:int" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Disk space")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="flavor-ephemeral" type="xs:int" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Amount of ephemeral disk space")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="flavor-swap" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="amount of swap space allocation")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="flavor-is-public" type="xs:boolean" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="whether flavor is available to all users or private to the tenant it was created in.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="flavor-selflink" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="flavor-disabled" type="xs:boolean" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Boolean as to whether this flavor is no longer enabled")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="flavors"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of openstack flavors.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:flavor" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="group-assignment"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Openstack group-assignment used to store exclusivity groups (EG).",nameProps="group-name",indexedProps="group-id,group-type,group-name",searchable="group-id,group-name",dependentOn="cloud-region",container="group-assignments")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="group-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Group id, expected to be unique across cloud-region.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="group-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Group type - the type of group this instance refers to")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="group-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Group name - name assigned to the group")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="group-description" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Group description - description of the group")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="group-assignments"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of openstack group assignments")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:group-assignment" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="snapshot"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Openstack snapshot",nameProps="snapshot-name",uniqueProps="snapshot-id",indexedProps="application,snapshot-name,application-vendor,snapshot-id,application-version,prev-snapshot-id",dependentOn="cloud-region",container="snapshots")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="snapshot-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Snapshot id, this is the key UUID assoc associated in glance with the snapshots.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="snapshot-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Snapshot name")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="snapshot-architecture" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Operating system architecture")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="snapshot-os-distro" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The common name of the operating system distribution in lowercase")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="snapshot-os-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The operating system version as specified by the distributor.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="application" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The application that the image instantiates.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="application-vendor" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The vendor of the application.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="application-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The version of the application.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="snapshot-selflink" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prev-snapshot-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This field contains the UUID of the previous snapshot (if any).")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="snapshots"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of openstack snapshots")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:snapshot" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="metadatum"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Key/value pairs",indexedProps="metaname",dependentOn="tenant,image,service-instance,connector,model",container="metadata")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="metaname" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true)</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="metaval" type="xs:string"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="metadata"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of metadatum (key/value pairs)")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:metadatum" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="image"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Openstack image.",nameProps="image-name",indexedProps="application,image-name,application-vendor,image-id,application-version",dependentOn="cloud-region",container="images")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="image-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Image id, expected to be unique across cloud region")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="image-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Image name")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="image-architecture" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Operating system architecture.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="image-os-distro" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The common name of the operating system distribution in lowercase")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="image-os-version" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The operating system version as specified by the distributor.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="application" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The application that the image instantiates.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="application-vendor" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The vendor of the application.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="application-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The version of the application.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="image-selflink" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:metadata" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="images"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collectio of Openstack images.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:image" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="availability-zones"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of availability zones")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:availability-zone" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="cloud-region"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="cloud-region designates an installation of a cloud cluster or region or instantiation. In AT&Ts AIC cloud, this could be an LCP or DCP. Cloud regions are uniquely identified by a composite key, cloud-owner + cloud-region-id. The format of the cloud-owner is vendor-cloudname and we will use att-aic for AT&T's AIC.",indexedProps="cloud-owner,cloud-region-id,cloud-type,owner-defined-type",nameProps="owner-defined-type",container="cloud-regions",namespace="cloud-infrastructure")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="cloud-owner" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Identifies the vendor and cloud name, e.g., att-aic. First part of composite key should be formatted as vendor-cloudname")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="cloud-region-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Identifier used by the vendor for the region. Second part of composite key")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="cloud-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Type of the cloud (e.g., openstack)")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="owner-defined-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Cloud-owner defined type indicator (e.g., dcp, lcp)")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="cloud-region-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Software version employed at the site. NOTE - THIS FIELD IS NOT KEPT UP TO DATE.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="identity-url" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="URL of the keystone identity service")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="cloud-zone" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Zone where the cloud is homed. NOTE - THIS FIELD IS NOT CORRECTLY POPULATED.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="complex-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="complex name for cloud-region instance. NOTE - THIS FIELD IS NOT CORRECTLY POPULATED.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="sriov-automation" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="Whether the cloud region supports (true) or does not support (false) SR-IOV automation.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:volume-groups" minOccurs="0"/> + <xs:element ref="tns:tenants" minOccurs="0"/> + <xs:element ref="tns:flavors" minOccurs="0"/> + <xs:element ref="tns:group-assignments" minOccurs="0"/> + <xs:element ref="tns:snapshots" minOccurs="0"/> + <xs:element ref="tns:images" minOccurs="0"/> + <xs:element ref="tns:dvs-switches" minOccurs="0"/> + <xs:element ref="tns:oam-networks" minOccurs="0"/> + <xs:element ref="tns:availability-zones" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="cloud-regions"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(maximumDepth="0")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:cloud-region" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="network-profile"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Network profile populated by SDN-GP for SNMP",indexedProps="nm-profile-name",container="network-profiles",namespace="cloud-infrastructure")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="nm-profile-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique name of network profile.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="community-string" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Encrypted SNMP community string")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="network-profiles"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of network profiles")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:network-profile" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="sriov-pf"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="SR-IOV Physical Function",indexedProps="pf-pci-id",dependentOn="p-interface",container="sriov-pfs")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="pf-pci-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Identifier for the sriov-pf")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="sriov-pfs"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of SR-IOV Physical Functions.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:sriov-pf" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="p-interface"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Physical interface (e.g., nic)",indexedProps="interface-name,prov-status",nameProps="prov-status",dependentOn="vpls-pe,pserver,pnf",container="p-interfaces")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="interface-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Name that identifies the physical interface")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="speed-value" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Captures the numeric part of the speed")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="speed-units" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Captures the units corresponding to the speed")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="port-description" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Nature of the services and connectivity on this port.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="equipment-identifier" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="CLEI or other specification for p-interface hardware.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="interface-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Role specification for p-interface hardware.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="interface-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indicates the physical properties of the interface.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Trigger for operational monitoring of this resource by Service Assurance systems.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="inv-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="inventory status")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:sriov-pfs" minOccurs="0"/> + <xs:element ref="tns:l-interfaces" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="p-interfaces"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of physical interfaces.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:p-interface" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="lag-interface"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Link aggregate interface",indexedProps="interface-name,interface-id,interface-role",dependentOn="generic-vnf,pserver,vpe,vpls-pe,pnf",container="lag-interfaces")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="interface-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Name that identifies the link aggregate interface")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="interface-description" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Human friendly text regarding this interface.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="speed-value" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Captures the numeric part of the speed")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="speed-units" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Captures the units corresponding to the speed")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="interface-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="ID of interface")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="interface-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Role assigned to this Interface, should use values as defined in ECOMP Yang models.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Trigger for operational monitoring of this resource by Service Assurance systems.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l-interfaces" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="lag-interfaces"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of link aggregate interfaces.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:lag-interface" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="pserver"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Compute host whose hostname must be unique and must exactly match what is sent as a relationship to a vserver.",nameProps="pserver-name2",indexedProps="hostname,in-maint,pserver-id,pserver-name2,inv-status",searchable="hostname,pserver-name2,pserver-id,ipv4-oam-address",container="pservers",namespace="cloud-infrastructure")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="hostname" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Value from executing hostname on the compute node.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ptnii-equip-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="PTNII name")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="number-of-cpus" type="xs:int" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Number of cpus")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="disk-in-gigabytes" type="xs:int" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Disk size, in GBs")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ram-in-megabytes" type="xs:int" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="RAM size, in MBs")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="equip-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Equipment type. Source of truth should define valid values.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="equip-vendor" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Equipment vendor. Source of truth should define valid values.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="equip-model" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Equipment model. Source of truth should define valid values.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="fqdn" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Fully-qualified domain name")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="pserver-selflink" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-oam-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used to configure device, also used for troubleshooting and is IP used for traps generated by device.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="serial-number" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Serial number, may be queried")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipaddress-v4-loopback-0" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="IPV4 Loopback 0 address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipaddress-v6-loopback-0" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="IPV6 Loopback 0 address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipaddress-v4-aim" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="IPV4 AIM address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipaddress-v6-aim" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="IPV6 AIM address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipaddress-v6-oam" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="IPV6 OAM address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="inv-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="CANOPI's inventory status. Only set with values exactly as defined by CANOPI.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="pserver-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="ID of Pserver")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="internet-topology" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="internet topology of Pserver")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="pserver-name2" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="alternative pserver name")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="purpose" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="purpose of pserver")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="management-option" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indicates who owns and or manages the device.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="host-profile" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The host profile that defines the configuration of the pserver.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:p-interfaces" minOccurs="0"/> + <xs:element ref="tns:lag-interfaces" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="pservers"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of compute hosts.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:pserver" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="virtual-data-center"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Virtual organization of cloud infrastructure elements in a data center context",nameProps="vdc-name",indexedProps="vdc-name,vdc-id",container="virtual-data-centers",namespace="cloud-infrastructure")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="vdc-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique ID of the vdc")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vdc-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name of the virtual data center")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="virtual-data-centers"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Virtual organization of cloud infrastructure elements in a data center context")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:virtual-data-center" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="cloud-infrastructure"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Namespace for cloud infrastructure.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:complexes" minOccurs="0"/> + <xs:element ref="tns:cloud-regions" minOccurs="0"/> + <xs:element ref="tns:network-profiles" minOccurs="0"/> + <xs:element ref="tns:pservers" minOccurs="0"/> + <xs:element ref="tns:virtual-data-centers" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="license-key-resource"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="OBSOLETE OBJECT: do not use",nameProps="name",indexedProps="assignment-group-uuid,att-uuid,name",uniqueProps="att-uuid",container="license-key-resources",namespace="license-management")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="att-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true)</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="assignment-type" type="xs:string" minOccurs="0"/> + <xs:element name="assignment-status" type="xs:string" minOccurs="0"/> + <xs:element name="assignment-group-uuid" type="xs:string"/> + <xs:element name="assignment-date" type="xs:string" minOccurs="0"/> + <xs:element name="name" type="xs:string" minOccurs="0"/> + <xs:element name="model-uuid" type="xs:string" minOccurs="0"/> + <xs:element name="model-version" type="xs:string" minOccurs="0"/> + <xs:element name="license-key" type="xs:string" minOccurs="0"/> + <xs:element name="license-key-file-url" type="xs:string" minOccurs="0"/> + <xs:element name="supplier-release-list" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="license-key-resources"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:license-key-resource" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="license-management"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:license-key-resources" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="connector"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of resource instances used to connect a variety of disparate inventory widgets",indexedProps="resource-instance-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version",container="connectors",namespace="business")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="resource-instance-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique id of resource instance.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.",visibility="deployment",requires="model-version-id",dbAlias="model-invariant-id-local")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="deployment",requires="model-invariant-id",dbAlias="model-version-id-local")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="persona-model-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="internal",dataCopy="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="widget-model-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC data dictionary widget model. This maps directly to the A&AI widget.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="widget-model-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:metadata" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="connectors"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of resource instances used to connect a variety of disparate inventory widgets")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:connector" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="tunnel-xconnect"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Represents the specifics of a tunnel cross connect piece of a resource that gets separately allotted",uniqueProps="id",indexedProps="id",dependentOn="allotted-resource",container="tunnel-xconnects")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Allotted Resource id UUID assigned to this instance.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="bandwidth-up-wan1" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The WAN uplink bandwidth for WAN1")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="bandwidth-down-wan1" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The WAN downlink bandwidth for WAN1")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="bandwidth-up-wan2" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The WAN uplink bandwidth for WAN2")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="bandwidth-down-wan2" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The WAN downlink bandwidth for WAN2")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Concurrency value")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="tunnel-xconnects"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="This object is used to store the specific tunnel cross connect aspects of an allotted resource")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:tunnel-xconnect" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="allotted-resource"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Represents a slice or partial piece of a resource that gets separately allotted",nameProps="description",uniqueProps="id",indexedProps="id,model-invariant-id,model-version-id,type,role",dependentOn="service-instance",container="allotted-resources")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Allotted Resource id UUID assigned to this instance.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="description" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The descriptive information assigned to this allotted resource instance")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="selflink" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Link back to more information in the controller")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.",visibility="deployment",requires="model-version-id",dbAlias="model-invariant-id-local")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="deployment",requires="model-invariant-id",dbAlias="model-version-id-local")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="persona-model-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="internal",dataCopy="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Concurrency value")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Orchestration status")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indicator for whether the resource is considered operational")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Generic description of the type of allotted resource.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="role in the network that this resource will be providing.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:tunnel-xconnects" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="allotted-resources"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="This object is used to store slices of services being offered")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:allotted-resource" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service-instance"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Instance of a service",indexedProps="service-instance-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,service-instance-name,service-instance-location-id,orchestration-status,environment-context,workload-context",nameProps="service-instance-name",searchable="service-instance-id,service-instance-name",uniqueProps="service-instance-id",dependentOn="service-subscription",container="service-instances")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="service-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="String capturing type of service.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="service-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="String capturing the service role.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="service-instance-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Uniquely identifies this instance of a service")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="service-instance-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This field will store a name assigned to the service-instance.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="environment-context" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This field will store the environment context assigned to the service-instance.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="workload-context" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This field will store the workload context assigned to the service-instance.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.",visibility="deployment",requires="model-version-id",dbAlias="model-invariant-id-local")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="deployment",requires="model-invariant-id",dbAlias="model-version-id-local")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="persona-model-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="internal",dataCopy="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="widget-model-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC data dictionary widget model. This maps directly to the A&AI widget.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="widget-model-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="bandwidth-total" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indicates the total bandwidth to be used for this service.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="bandwidth-up-wan1" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="indicates the upstream bandwidth this service will use on the WAN1 port of the physical device.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="bandwidth-down-wan1" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="indicates the downstream bandwidth this service will use on the WAN1 port of the physical device.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="bandwidth-up-wan2" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="indicates the upstream bandwidth this service will use on the WAN2 port of the physical device.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="bandwidth-down-wan2" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="indicates the downstream bandwidth this service will use on the WAN2 port of the physical device.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vhn-portal-url" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="URL customers will use to access the vHN Portal.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="service-instance-location-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="An identifier that customers assign to the location where this service is being used.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="selflink" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Path to the controller object.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Orchestration status of this service.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:metadata" minOccurs="0"/> + <xs:element ref="tns:allotted-resources" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service-instances"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of service instances")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:service-instance" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service-subscription"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Object that group service instances.",indexedProps="service-type",dependentOn="customer",container="service-subscriptions",crossEntityReference="service-instance,service-type")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="service-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Value defined by orchestration to identify this service across ECOMP.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="temp-ub-sub-account-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="This property will be deleted from A&AI in the near future. Only stop gap solution.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:service-instances" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service-subscriptions"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of objects that group service instances.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:service-subscription" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="customer"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="customer identifiers to provide linkage back to BSS information.",nameProps="subscriber-name",indexedProps="subscriber-name,global-customer-id,subscriber-type",searchable="global-customer-id,subscriber-name",uniqueProps="global-customer-id",container="customers",namespace="business")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="global-customer-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Global customer id used across ECOMP to uniquely identify customer.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="subscriber-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Subscriber name, an alternate way to retrieve a customer.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="subscriber-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Subscriber type, a way to provide VID with only the INFRA customers.",defaultValue="CUST")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:service-subscriptions" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="customers"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of customer identifiers to provide linkage back to BSS information.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:customer" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="business"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Namespace for business related constructs")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:connectors" minOccurs="0"/> + <xs:element ref="tns:customers" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vnf-image"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Image object that pertain to a VNF that doesn't have associated vservers. This is a kludge.",indexedProps="application,att-uuid,application-vendor,application-version",uniqueProps="att-uuid",container="vnf-images",namespace="service-design-and-creation")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="att-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique ID of this asset")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="application" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The application that the image instantiates.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="application-vendor" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The vendor of the application.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="application-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The version of the application.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="selflink" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vnf-images"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of image objects that pertain to a VNF that doesn't have associated vservers. This is a kludge.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:vnf-image" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Stand-in for service model definitions. Likely to be deprecated in favor of models from ASDC. Does not strictly map to ASDC services.",indexedProps="service-description,service-id",container="services",namespace="service-design-and-creation")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="service-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="This gets defined by others to provide a unique ID for the service, we accept what is sent.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="service-description" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Description of the service")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="service-selflink" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="URL to endpoint where AAI can get more details")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="service-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="service version")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="services"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of service model definitions. Likely to be deprecated in favor of models from ASDC.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:service" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service-capability"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Early definition of server/resource pairings, likely to be replaced by models. No new use should be made of this.",indexedProps="service-type,vnf-type",container="service-capabilities",namespace="service-design-and-creation")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="service-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="This gets defined by others to provide a unique ID for the service, we accept what is sent.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vnf-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service-capabilities"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of service capabilities.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:service-capability" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="element-choice-set"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="This is how we would capture constraints defining allowed sets of elements.",uniqueProps="element-choice-set-uuid",indexedProps="element-choice-set-uuid",allowDirectRead="true",allowDirectWrite="false",container="element-choice-sets")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="element-choice-set-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,autoGenerateUuid="true")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="element-choice-set-name" type="xs:string"/> + <xs:element name="cardinality" type="xs:string" minOccurs="0"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:model-elements" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="element-choice-sets"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:element-choice-set" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="constrained-element-set"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="This is how we would capture constraints defining allowed sets of elements.",uniqueProps="constrained-element-set-uuid",indexedProps="constrained-element-set-uuid",allowDirectRead="true",allowDirectWrite="false",container="constrained-element-sets")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="constrained-element-set-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,autoGenerateUuid="true")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="constraint-type" type="xs:string"/> + <xs:element name="check-type" type="xs:string"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:element-choice-sets" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="constrained-element-sets"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:constrained-element-set" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model-constraint"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="This is how we would capture constraints defining allowed sets of elements.",uniqueProps="model-constraint-uuid",indexedProps="model-constraint-uuid",allowDirectRead="true",allowDirectWrite="false",container="model-constraints")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="model-constraint-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,autoGenerateUuid="true")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="constrained-element-set-uuid-to-replace" type="xs:string"/> + <xs:element ref="tns:constrained-element-sets" minOccurs="0"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model-constraints"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:model-constraint" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model-element"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Defines how other models combine to make up a higher-level model.",uniqueProps="model-element-uuid",indexedProps="model-element-uuid",allowDirectRead="true",allowDirectWrite="false",container="model-elements")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="model-element-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,autoGenerateUuid="true")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="new-data-del-flag" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indicates whether this element was created as part of instantiation from this model")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="cardinality" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="How many of this type of element are required/allowed")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="linkage-points" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:model-elements" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Defines how other models combine to make up a higher-level model")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:model-constraints" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Describes new constraints on this model element that are not part of that model's definition")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model-elements"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:model-element" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model-ver"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Subgraph definition provided by ASDC to describe a specific version of an inventory asset and its connections related to ASDC models",nameProps="model-name",indexedProps="model-version-id,model-name,model-version",uniqueProps="model-version-id",container="model-vers")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="model-version-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique identifier corresponding to one version of a model in ASDC")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name of the model, which can change from version to version.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-version" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Version")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-description" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Description")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:model-elements" minOccurs="0"/> + <xs:element ref="tns:metadata" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model-vers"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:model-ver" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Subgraph definition provided by ASDC to describe an inventory asset and its connections related to ASDC models, independent of version",nameProps="model-type",indexedProps="model-invariant-id,model-type",uniqueProps="model-invariant-id",container="models",namespace="service-design-and-creation")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="model-invariant-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique identifier corresponding to the main definition of a model in ASDC")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Type of the model, e.g., service, resource, widget, etc.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:model-vers" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="models"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of subgraph definitions provided by ASDC to describe the inventory assets and their connections related to ASDC models")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:model" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="related-lookup"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="TBD",uniqueProps="related-lookup-uuid",indexedProps="related-lookup-uuid",allowDirectRead="true",allowDirectWrite="false",container="related-lookups")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="related-lookup-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,autoGenerateUuid="true")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="source-node-type" type="xs:string"/> + <xs:element name="source-node-property" type="xs:string"/> + <xs:element name="target-node-type" type="xs:string"/> + <xs:element name="target-node-property" type="xs:string"/> + <xs:element name="property-collect-list" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="related-lookups"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:related-lookup" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="property-constraint"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="TBD",uniqueProps="property-constraint-uuid",indexedProps="property-constraint-uuid",allowDirectRead="true",allowDirectWrite="false",container="property-constraints")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="property-constraint-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,autoGenerateUuid="true")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="constraint-type" type="xs:string"/> + <xs:element name="property-name" type="xs:string"/> + <xs:element name="property-value" type="xs:string"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="property-constraints"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:property-constraint" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="named-query-element"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="TBD",uniqueProps="named-query-element-uuid",indexedProps="named-query-element-uuid",allowDirectRead="true",allowDirectWrite="false",container="named-query-elements")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="named-query-element-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,autoGenerateUuid="true")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="property-collect-list" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"/> + <xs:element name="property-limit-desc" type="xs:string" minOccurs="0"/> + <xs:element name="do-not-output" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:named-query-elements" minOccurs="0"/> + <xs:element ref="tns:related-lookups" minOccurs="0"/> + <xs:element ref="tns:property-constraints" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="named-query-elements"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:named-query-element" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="named-query"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="TBD",nameProps="named-query-name",uniqueProps="named-query-uuid",indexedProps="named-query-uuid,named-query-name",container="named-queries",namespace="service-design-and-creation")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="named-query-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true)</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="named-query-name" type="xs:string"/> + <xs:element name="named-query-version" type="xs:string"/> + <xs:element name="required-input-params" minOccurs="0"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="TBD",nameProps="named-query-name",uniqueProps="named-query-uuid",indexedProps="named-query-uuid,named-query-name",container="named-queries",namespace="service-design-and-creation")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="required-input-param" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="description" type="xs:string" minOccurs="0"/> + <xs:element name="resource-version" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:named-query-elements" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="named-queries"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:named-query" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service-design-and-creation"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Namespace for objects managed by ASDC")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:vnf-images" minOccurs="0"/> + <xs:element ref="tns:services" minOccurs="0"/> + <xs:element ref="tns:service-capabilities" minOccurs="0"/> + <xs:element ref="tns:models" minOccurs="0"/> + <xs:element ref="tns:named-queries" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="logical-link"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Logical links generally connect l-interfaces but are used to express logical connectivity between two points",indexedProps="link-name,model-invariant-id,model-version-id,widget-model-id,widget-model-version,link-id,prov-status,circuit-id,purpose",uniqueProps="link-id",container="logical-links",namespace="network",searchable="link-name")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="link-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="link-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Type of logical link, e.g., evc")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="speed-value" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Captures the numeric part of the speed")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="speed-units" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Captures the units corresponding to the speed")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ip-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="v4, v6, or ds for dual stack (should be att-ip-version)")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="routing-protocol" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="For example, static or BGP")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.",visibility="deployment",requires="model-version-id",dbAlias="model-invariant-id-local")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="deployment",requires="model-invariant-id",dbAlias="model-version-id-local")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="persona-model-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="internal",dataCopy="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="widget-model-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC data dictionary widget model. This maps directly to the A&AI widget.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="widget-model-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indication of operational status of the logical link.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Trigger for operational monitoring of this VNF by BAU Service Assurance systems.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="link-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indication of the network use of the logical link.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="link-name2" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Alias or alternate name (CLCI or D1 name).")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="link-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="UUID of the logical-link, SDNC generates this.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="circuit-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Circuit id")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="purpose" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Reason for this entity, role it is playing")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="logical-links"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of logical connections")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:logical-link" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="class-of-service"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(indexedProps="cos",dependentOn="site-pair",container="classes-of-service")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="cos" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="unique identifier of probe")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="probe-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="identifier of probe")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="probe-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="type of probe")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="classes-of-service"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="class-of-service of probe")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:class-of-service" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="site-pair"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(indexedProps="site-pair-id",uniqueProps="site-pair-id",dependentOn="routing-instance",container="site-pairs")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="site-pair-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="unique identifier of probe")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="source-ip" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Prefix address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="destination-ip" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Prefix address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ip-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="ip version, v4, v6")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="destination-hostname" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Hostname of the destination equipment to which SLAs are measured against.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="destination-equip-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The type of destinatination equipment. Could be Router, UCPE, etc.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:classes-of-service" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="site-pairs"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="probe within a set")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:site-pair" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="routing-instance"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(indexedProps="routing-instance-id",uniqueProps="routing-instance-id",dependentOn="site-pair-set",container="routing-instances")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="routing-instance-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique id of routing instance")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="rpm-owner" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="rpm owner")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:site-pairs" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="routing-instances"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="set of probes related to generic-vnf routing instance")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:routing-instance" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="site-pair-set"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Set of instances for probes used to measure service level agreements",indexedProps="site-pair-set-id",uniqueProps="site-pair-set-id",container="site-pair-sets",namespace="network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="site-pair-set-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique id of site pair set.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:routing-instances" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="site-pair-sets"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of sets of instances for probes related to generic-vnf")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:site-pair-set" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="route-target"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Route target information",container="route-targets",dependentOn="vpn-binding",canBeLinked="true")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="global-route-target" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Number used to identify an RT, globally unique in the network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="route-target-role" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Role assigned to this route target")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="route-targets"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of route target information")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:route-target" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vpn-binding"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="VPN binding",nameProps="vpn-name,vpn-type",indexedProps="vpn-name,vpn-id,vpn-type",searchable="vpn-id,vpn-name",uniqueProps="vpn-id",container="vpn-bindings",namespace="network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="vpn-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="VPN ID, globally unique within A&AI")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vpn-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="VPN Name")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vpn-platform" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the platform associated with the VPN example AVPN, Mobility")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vpn-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Type of the vpn, should be taken from enumerated/valid values")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vpn-region" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="region of customer vpn")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="customer-vpn-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="id for this customer vpn")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="route-distinguisher" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used to distinguish the distinct VPN routes of separate customers who connect to the provider in an MPLS network.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:route-targets" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="l3-networks relate to vpn-bindings")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vpn-bindings"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:vpn-binding" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vpls-pe"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="VPLS Provider Edge routers.",indexedProps="prov-status,equipment-name",container="vpls-pes",namespace="network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="equipment-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true)</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Trigger for operational monitoring of this VNF by BAU Service Assurance systems.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-oam-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address).")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="equipment-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Client should send valid enumerated value, e.g., VPLS-PE.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vlan-id-outer" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Temporary location for stag to get to VCE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:p-interfaces" minOccurs="0"/> + <xs:element ref="tns:lag-interfaces" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vpls-pes"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of VPLS Provider Edge routers")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:vpls-pe" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="multicast-configuration"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(indexedProps="multicast-configuration-id",uniqueProps="multicast-configuration-id",container="multicast-configurations",namespace="network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="multicast-configuration-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique id of multicast configuration.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="multicast-protocol" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="protocol of multicast configuration")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="rp-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="rp type of multicast configuration")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="multicast-configurations"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="multicast configuration of generic-vnf ip-address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:multicast-configuration" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="cvlan-tag-entry"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(dependentOn="port-group",indexedProps="cvlan-tag",container="cvlan-tags")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="cvlan-tag" type="xs:unsignedInt"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="See mis-na-virtualization-platform.yang")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="cvlan-tags"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:cvlan-tag-entry" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="port-group"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Used to capture the network interfaces of this VCE",nameProps="port-group-name",indexedProps="port-group-id,heat-stack-id,interface-id,interface-name,switch-name",dependentOn="vce",container="port-groups")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="interface-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique ID of the interface")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="neutron-network-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Neutron network id of this Interface")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="neutron-network-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Neutron network name of this Interface")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="interface-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Role assigned to this Interface, should use values as defined in ECOMP Yang models.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="port-group-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Unique ID for port group in vmware")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="port-group-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Likely to duplicate value of neutron network name")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="switch-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="DVS or standard switch name (should be non-null for port groups associated with DVS)")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="orchestration-status" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Orchestration status of this VNF, mastered by MSO")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Heat stack id corresponding to this instance, managed by MSO")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="mso-catalog-key" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Corresponds to the SDN-C catalog id used to configure this VCE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:cvlan-tags" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="port-groups"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:port-group" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="license"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Metadata for license group.",indexedProps="group-uuid,resource-uuid",dependentOn="generic-vnf,vce,vpe",container="licenses")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="group-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique ID for the license group the resource belongs to, should be uuid.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique ID of a license resource. ")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Concurrency value")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="licenses"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Licenses to be allocated across resources, keyed by group-uuid and resource-uuid, related to license management")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:license" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="entitlement"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Metadata for entitlement group.",indexedProps="group-uuid,resource-uuid",dependentOn="generic-vnf,vce,vpe",container="entitlements")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="group-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique ID for the entitlement group the resource comes from, should be uuid.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-uuid" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique ID of an entitlement resource. ")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Concurrency value")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="entitlements"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Entitlements, keyed by group-uuid and resource-uuid, related to license management")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:entitlement" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vce"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Virtual Customer Edge Router, used specifically for Gamma. This object is deprecated.",nameProps="vnf-name",indexedProps="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,interface-name,regional-resource-zone,vpe-id,prov-status,service-id",searchable="vnf-id,vnf-name,vnf-name2",uniqueProps="vnf-id",container="vces",namespace="network",extendsFrom="vnf")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="vnf-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique id of VNF. This is unique across the graph.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vnf-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name of VNF.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vnf-name2" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Alternate name of VNF.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vnf-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="service-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="regional-resource-zone" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Regional way of organizing pservers, source of truth should define values")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Trigger for operational monitoring of this resource by Service Assurance systems.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indicator for whether the resource is considered operational")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="license-key" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="OBSOLETE - do not use")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="equipment-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Network role being played by this VNF")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Orchestration status of this VNF, mastered by MSO")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Heat stack id corresponding to this instance, managed by MSO")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="mso-catalog-key" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Corresponds to the SDN-C catalog id used to configure this VCE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vpe-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Unique ID of VPE connected to this VCE.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="v6-vce-wan-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Valid v6 IP address for the WAN Link on this router. Implied length of /64.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-oam-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Address tail-f uses to configure vce, also used for troubleshooting and is IP used for traps generated by VCE.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-loopback0-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Loopback0 address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="entitlement-resource-uuid" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="OBSOLETE - see child relationships")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:port-groups" minOccurs="0"/> + <xs:element ref="tns:licenses" minOccurs="0"/> + <xs:element ref="tns:entitlements" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vces"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of Virtual Customer Edge Routers, used specifically for Gamma. This object is deprecated.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:vce" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vpe"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Relationship-list must include related to info for complex.",nameProps="vnf-name",indexedProps="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,regional-resource-zone,prov-status,service-id",searchable="vnf-id,vnf-name,vnf-name2",uniqueProps="vnf-id",container="vpes",namespace="network",extendsFrom="vnf")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="vnf-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique id of VNF. This is unique across the graph.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vnf-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name of VNF.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vnf-name2" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Alternate name of VNF.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vnf-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="service-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Unique identifier of service. Does not map strictly to ASDC services. SOON TO BE DEPRECATED")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="regional-resource-zone" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Regional way of organizing pservers, source of truth should define values")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Trigger for operational monitoring of this resource by Service Assurance systems.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indicator for whether the resource is considered operational")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="license-key" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="OBSOLETE - do not use. See child relationships.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="equipment-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Client should send valid enumerated value")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Orchestration status of this VNF, mastered by MSO")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Heat stack id corresponding to this instance, managed by MSO")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="mso-catalog-key" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Corresponds to the SDN-C catalog id used to configure this VCE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-oam-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address).")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-oam-gateway-address-prefix-length" type="xs:int" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Prefix length for oam-address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-oam-gateway-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Gateway address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="v4-loopback0-ip-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Loopback0 address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vlan-id-outer" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Temporary location for stag to get to VCE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="as-number" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="as-number of the VPE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="summary-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="details regarding the vpe operation, PLEASE DISCONTINUE USE OF THIS FIELD.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="encrypted-access-flag" type="xs:boolean" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="indicates whether vpe access uses SSH")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l-interfaces" minOccurs="0"/> + <xs:element ref="tns:lag-interfaces" minOccurs="0"/> + <xs:element ref="tns:licenses" minOccurs="0"/> + <xs:element ref="tns:entitlements" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vpes"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Virtual provider edge router. In 1504, A&AI will populate this object through an M&P and tool provided to operations.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:vpe" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vnfc"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(indexedProps="vnfc-name,prov-status,nfc-function,nfc-naming-code,ipaddress-v4-oam-vip,in-maint,is-closed-loop-disabled,group-notation,model-invariant-id,model-version-id",searchable="vnfc-name",container="vnfcs",namespace="network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="vnfc-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique ID of vnfc.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="nfc-naming-code" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Short code that is used in naming instances of the item being modeled")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="nfc-function" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="English description of function that the specific resource deployment is providing. Assigned as part of the customization of a resource in a service")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="prov status of this vnfc")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Orchestration status of this VNF, mastered by APP-C")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipaddress-v4-oam-vip" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Oam V4 vip address of this vnfc")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="is-closed-loop-disabled" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether closed loop function is enabled on this node")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="group-notation" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Group notation of VNFC")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.",visibility="deployment",requires="model-version-id")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="deployment",requires="model-invariant-id")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vnfcs"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="virtual network components associated with a vserver from application controller.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:vnfc" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="subnet"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(indexedProps="subnet-id,subnet-name",nameProps="subnet-name",uniqueProps="subnet-id",dependentOn="l3-network",container="subnets")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="subnet-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Subnet ID, should be UUID.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="subnet-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name associated with the subnet.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="neutron-subnet-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Neutron id of this subnet")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="gateway-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="gateway ip address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="network-start-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="network start address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="cidr-mask" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="cidr mask")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ip-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="ip version")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Orchestration status of this VNF, mastered by MSO")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="dhcp-enabled" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="dhcp enabled")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="dhcp-start" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the start address reserved for use by dhcp")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="dhcp-end" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the last address reserved for use by dhcp")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="subnet-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="role of the subnet, referenced when assigning IPs")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="subnets"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:subnet" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ctag-assignment"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(indexedProps="vlan-id-inner",dependentOn="l3-network",container="ctag-assignments")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="vlan-id-inner" type="xs:unsignedInt"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="id.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ctag-assignments"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:ctag-assignment" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="segmentation-assignment"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Openstack segmentation assignment.",indexedProps="segmentation-id",dependentOn="l3-network",container="segmentation-assignments")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="segmentation-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Route Table Reference id, UUID assigned to this instance.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Concurrency value")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="segmentation-assignments"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of openstack segmentation assignments")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:segmentation-assignment" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="l3-network"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Generic network definition",nameProps="network-name",indexedProps="heat-stack-id,network-uuid,service-id,network-id,network-name,model-invariant-id,model-version-id,widget-model-id,widget-model-version,contrail-network-fqdn,network-role",searchable="network-id,network-name",uniqueProps="network-id",container="l3-networks",namespace="network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="network-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Network ID, should be uuid. Unique across A&AI.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="network-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name of the network, governed by some naming convention..")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="network-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Type of the network - who defines these values?")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="network-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Role the network plans - who defines these values?")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="network-technology" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Network technology - who defines these values?")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="neutron-network-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Neutron network id of this Interface")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="is-bound-to-vpn" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="Set to true if bound to VPN")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="service-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Unique identifier of service from ASDC. Does not strictly map to ASDC services. SOON TO BE DEPRECATED")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="network-role-instance" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="network role instance")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Orchestration status of this VNF, mastered by MSO")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Heat stack id corresponding to this instance, managed by MSO")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="mso-catalog-key" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Corresponds to the SDN-C catalog id used to configure this VCE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="contrail-network-fqdn" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Contrail FQDN for the network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.",visibility="deployment",requires="model-version-id",dbAlias="model-invariant-id-local")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="deployment",requires="model-invariant-id",dbAlias="model-version-id-local")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="persona-model-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="internal",dataCopy="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-customization-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="captures the id of all the configuration used to customize the resource for the service.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="widget-model-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC data dictionary widget model. This maps directly to the A&AI widget.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="widget-model-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="physical-network-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name associated with the physical network.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="is-provider-network" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="boolean indicatating whether or not network is a provider network.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="is-shared-network" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="boolean indicatating whether or not network is a shared network.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="is-external-network" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="boolean indicatating whether or not network is an external network.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="selflink" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Path to the controller object.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indicator for whether the resource is considered operational.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:subnets" minOccurs="0"/> + <xs:element ref="tns:ctag-assignments" minOccurs="0"/> + <xs:element ref="tns:segmentation-assignments" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Relates to tenant (or is it a child of tenant), complex, service, vpn-binding")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="l3-networks"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:l3-network" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="network-policy"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(nameProps="network-policy-fqdn",indexedProps="network-policy-id,network-policy-fqdn",searchable="network-policy-id,network-policy-fqdn",uniqueProps="network-policy-id",container="network-policies",namespace="network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="network-policy-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="UUID representing unique key to this instance")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="network-policy-fqdn" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Contrail FQDN for the policy")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="ID for the openStack Heat instance")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="network-policies"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:network-policy" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vf-module"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="a deployment unit of VNFCs",indexedProps="vf-module-id,vf-module-name,heat-stack-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,contrail-service-instance-fqdn",searchable="vf-module-id,vf-module-name",dependentOn="generic-vnf",container="vf-modules")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="vf-module-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique ID of vf-module.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vf-module-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name of vf-module")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Heat stack id corresponding to this instance.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="orchestration status of this vf-module, mastered by MSO")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="is-base-vf-module" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether or not this object is base vf module")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.",visibility="deployment",requires="model-version-id",dbAlias="model-invariant-id-local")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="deployment",requires="model-invariant-id",dbAlias="model-version-id-local")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="persona-model-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="internal",dataCopy="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-customization-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="captures the id of all the configuration used to customize the resource for the service.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="widget-model-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC data dictionary widget model. This maps directly to the A&AI widget.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="widget-model-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="contrail-service-instance-fqdn" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the Contrail unique ID for a service-instance")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="module-index" type="xs:int" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the index will track the number of modules of a given type that have been deployed in a VNF, starting with 0, and always choosing the lowest available digit")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="selflink" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Path to the controller object.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vf-modules"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of vf-modules, a deployment unit of VNFCs")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:vf-module" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="generic-vnf"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="General purpose VNF",nameProps="vnf-name",indexedProps="is-closed-loop-disabled,vnf-name2,vnf-type,heat-stack-id,in-maint,vnf-name,vnf-id,regional-resource-zone,prov-status,service-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,nf-type,nf-function,nf-naming-code,nf-role",searchable="vnf-id,vnf-name,vnf-name2",uniqueProps="vnf-id",container="generic-vnfs",namespace="network",extendsFrom="vnf",containsSuggestibleProps="true",suggestionAliases="VNFs")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="vnf-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique id of VNF. This is unique across the graph.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vnf-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name of VNF.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vnf-name2" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Alternate name of VNF.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vnf-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="service-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Unique identifier of service, does not necessarily map to ASDC service models. SOON TO BE DEPRECATED")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="regional-resource-zone" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Regional way of organizing pservers, source of truth should define values")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Trigger for operational monitoring of this resource by Service Assurance systems.",suggestibleOnSearch="true")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indicator for whether the resource is considered operational. Valid values are in-service-path and out-of-service-path.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="license-key" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="OBSOLETE - do not use")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="equipment-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Client should send valid enumerated value")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Orchestration status of this VNF, used by MSO.",suggestibleOnSearch="true")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Heat stack id corresponding to this instance, managed by MSO")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="mso-catalog-key" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Corresponds to the SDN-C catalog id used to configure this VCE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="management-option" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="identifier of managed by ATT or customer")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-oam-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by generic-vnf.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-loopback0-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="v4 Loopback0 address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="nm-lan-v6-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="v6 Loopback address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="management-v6-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="v6 management address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vcpu" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="number of vcpus ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only by uCPE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vcpu-units" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="units associated with vcpu, used for VNFs with no vservers/flavors, to be used only by uCPE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vmemory" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="number of GB of memory ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only by uCPE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vmemory-units" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="units associated with vmemory, used for VNFs with no vservers/flavors, to be used only by uCPE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vdisk" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="number of vdisks ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only uCPE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vdisk-units" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="units associated with vdisk, used for VNFs with no vservers/flavors, to be used only by uCPE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="is-closed-loop-disabled" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="used to indicate whether closed loop function is enabled on this node")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="summary-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="details regarding the generic-vnf operation, PLEASE DISCONTINUE USE OF THIS FIELD.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="encrypted-access-flag" type="xs:boolean" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="indicates whether generic-vnf access uses SSH")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="entitlement-assignment-group-uuid" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="UUID of the Entitlement group used for licensing VNFs, OBSOLETE - See child relationships.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="entitlement-resource-uuid" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="UUID of the specific entitlement resource. OBSOLETE - See child relationships.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="license-assignment-group-uuid" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="UUID of the license assignment group. OBSOLETE - See child relationships.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="license-key-uuid" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="UUID of the actual license resource. OBSOLETE - See child relationships.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model id for this resource or service model.",visibility="deployment",requires="model-version-id",dbAlias="model-invariant-id-local")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="deployment",requires="model-invariant-id",dbAlias="model-version-id-local")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="persona-model-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC model version for this resource or service model.",visibility="internal",dataCopy="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-customization-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="captures the id of all the configuration used to customize the resource for the service.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="widget-model-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC data dictionary widget model. This maps directly to the A&AI widget.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="widget-model-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="as-number" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="as-number of the VNF")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="regional-resource-subzone" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="represents sub zone of the rr plane")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="nf-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Generic description of the type of NF",suggestibleOnSearch="true")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="nf-function" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="English description of Network function that the specific VNF deployment is providing")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="nf-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="role in the network that this model will be providing")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="nf-naming-code" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="string assigned to this model used for naming purposes")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="selflink" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Path to the controller object.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-oam-gateway-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Gateway address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-oam-gateway-address-prefix-length" type="xs:int" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Prefix length for oam-address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vlan-id-outer" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Temporary location for S-TAG to get to VCE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="nm-profile-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Network Management profile of this VNF")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l-interfaces" minOccurs="0"/> + <xs:element ref="tns:lag-interfaces" minOccurs="0"/> + <xs:element ref="tns:vf-modules" minOccurs="0"/> + <xs:element ref="tns:licenses" minOccurs="0"/> + <xs:element ref="tns:entitlements" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="generic-vnfs"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of VNFs")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:generic-vnf" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="lag-link"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="LAG links can connect lag-interfaces",indexedProps="link-name",container="lag-links",namespace="network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="link-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Alphabetical concatenation of lag-interface names")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="lag-links"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of link aggregation connections")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:lag-link" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="newvce"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="This object fills in the gaps from vce that were incorporated into generic-vnf. This object will be retired with vce.",nameProps="vnf-name",indexedProps="vnf-name,vnf-name2,vnf-type,heat-stack-id,prov-status,vnf-id2",searchable="vnf-id2,vnf-name,vnf-name2",uniqueProps="vnf-id2",container="newvces",namespace="network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="vnf-id2" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique id of VNF, can't use same attribute name right now until we promote this new object")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vnf-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name of VNF.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vnf-name2" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Alternate name of VNF.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="vnf-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Trigger for operational monitoring of this VNF by BAU Service Assurance systems.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="operational-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indicator for whether the resource is considered operational")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="license-key" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="OBSOLETE - do not use")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-oam-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address).")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="equipment-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Client should send valid enumerated value, e.g., VPE.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipv4-loopback0-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="v4 Loopback0 address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="orchestration-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Orchestration status of this VNF, mastered by MSO.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="heat-stack-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Heat stack id corresponding to this instance, managed by MSO")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="mso-catalog-key" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Corresponds to the SDN-C catalog id used to configure this VCE")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:l-interfaces" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="newvces"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="This object fills in the gaps from vce that were incorporated into generic-vnf. This object will be retired with vce.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:newvce" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="pnf"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="PNF represents a physical network function. typically equipment used in the D1 world. in 1607, this will be populated by SDN-C to represent a premises router that a uCPE connects to. But this can be used to represent any physical device that is not an AIC node or uCPE.",indexedProps="pnf-name,orchestration-status,inv-status",searchable="pnf-name",uniqueProps="pnf-name",container="pnfs",namespace="network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="pnf-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="unique name of Physical Network Function.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="pnf-name2" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="name of Physical Network Function.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="pnf-name2-source" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="source of name2")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="pnf-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="id of pnf")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="equip-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Equipment type. Source of truth should define valid values.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="equip-vendor" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Equipment vendor. Source of truth should define valid values.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="equip-model" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Equipment model. Source of truth should define valid values.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="management-option" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="identifier of managed by ATT or customer")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipaddress-v4-oam" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="ipv4-oam-address with new naming convention for IP addresses")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="sw-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="sw-version is the version of SW for the hosted application on the PNF.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="in-maint" type="xs:boolean"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(defaultValue="false",description="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="frame-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="ID of the physical frame (relay rack) where pnf is installed.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="serial-number" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Serial number of the device")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipaddress-v4-loopback-0" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="IPV4 Loopback 0 address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipaddress-v6-loopback-0" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="IPV6 Loopback 0 address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipaddress-v4-aim" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="IPV4 AIM address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipaddress-v6-aim" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="IPV6 AIM address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipaddress-v6-oam" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="IPV6 OAM address")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="inv-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="CANOPI's inventory status. Only set with values exactly as defined by CANOPI.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="prov-status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="nf-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Nf Role is the role performed by this instance in the network.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:p-interfaces" minOccurs="0"/> + <xs:element ref="tns:lag-interfaces" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="pnfs"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of Physical Network Functions.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:pnf" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="physical-link"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of physical connections, typically between p-interfaces",indexedProps="circuit-id,link-name",alternateKeys1="circuit-id",container="physical-links",namespace="network",searchable="link-name,circuit-id")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="link-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="speed-value" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Captures the numeric part of the speed")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="speed-units" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Captures the units corresponding to the speed")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="circuit-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Circuit it")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="dual-mode" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Dual access mode (e.g., primary, secondary")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="management-option" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="To provide information on who manages this circuit. A&AI or 3rd party transport provider")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="service-provider-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name of the service Provider on this link.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="physical-links"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of physical connections, typically between p-interfaces")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:physical-link" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vig-server"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="vig-server contains information about a vig server used for IPSec-configuration. Populated by SDN-C from 1607",indexedProps="vig-address-type",dependentOn="ipsec-configuration",container="vig-servers")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="vig-address-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="indicates whether the VIG is for AVPN or INTERNET")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipaddress-v4-vig" type="xs:string" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="v4 IP of the vig server")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipaddress-v6-vig" type="xs:string" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="v6 IP of the vig server")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vig-servers"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:vig-server" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ipsec-configuration"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="IPSec configuration node will contain various configuration data for the NMTE VNF. This node will have an edge to the generic-vnf (vnf type = TE). Starting 1607, this data will be populated by SDN-C",indexedProps="ipsec-configuration-id",uniqueProps="ipsec-configuration-id",container="ipsec-configurations",namespace="network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="ipsec-configuration-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="UUID of this configuration")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="requested-vig-address-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Indicate the type of VIG server like AVPN, INTERNET, BOTH")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="requested-encryption-strength" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Encryption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="requested-dmz-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="ATT can offer a shared DMZ or a DMZ specific to a customer")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="shared-dmz-network-address" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Network address of shared DMZ")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="requested-customer-name" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="If the DMZ is a custom DMZ, this field will indicate the customer information")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ike-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="can be 1 or 2")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ikev1-authentication" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Contains values like md5, sha1, sha256, sha384")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ikev1-encryption" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Encyption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ikev1-dh-group" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Diffie-Hellman group like DH-GROUP2, DH-GROUP5, DH-GROUP14")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ikev1-am-group-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Group name defined in VIG for clients using aggressive mode")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ikev1-am-password" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="pre-shared key for the above group name ")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ikev1-sa-lifetime" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Lifetime for IKEv1 SA")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipsec-authentication" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="md5, sha1, sha256, sha384")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipsec-encryption" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipsec-sa-lifetime" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Life time for IPSec SA")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="ipsec-pfs" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="enable PFS or not")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="xauth-userid" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="user ID for xAuth, sm-user,ucpeHostName,nmteHostName")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="xauth-user-password" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Encrypted using the Juniper $9$ algorithm")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="dpd-interval" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="The time between DPD probe")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="dpd-frequency" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Maximum number of DPD before claiming the tunnel is down")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + <xs:element ref="tns:vig-servers" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ipsec-configurations"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:ipsec-configuration" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="route-table-reference"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Openstack route table reference.",nameProps="route-table-reference-fqdn",uniqueProps="route-table-reference-id",indexedProps="route-table-reference-id,route-table-reference-fqdn",container="route-table-references",namespace="network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="route-table-reference-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Route Table Reference id, UUID assigned to this instance.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="route-table-reference-fqdn" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="FQDN entry in the route table.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Concurrency value")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="route-table-references"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of openstack route table references")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:route-table-reference" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="instance-group"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="General mechanism for grouping instances",nameProps="description",uniqueProps="id",searchable="id,description",indexedProps="id,description,type,sub-type",container="instance-groups",namespace="network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="instance-group-role" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="role of the instance group.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-invariant-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="ASDC model id for this resource or service model.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-version-id" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="ASDC model version uid for this resource model.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Instance Group ID, UUID assigned to this instance.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="description" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Descriptive text to help identify the usage of this instance-group")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Only valid value today is lower case ha for high availability")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="sub-type" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Valid values for ha type are [geo-activeactive, geo-activestandby, local-activeactive, local-activestandby]")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Concurrency value")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="instance-groups"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of openstack route table references")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:instance-group" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="zone"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="A zone is a grouping of assets in a location homing to the same connections into the CBB",nameProps="zone-name",indexedProps="zone-id,design-type,zone-context",uniqueProps="zone-id",container="zones",namespace="network")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="zone-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Code assigned by AIC to the zone")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="zone-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="English name associated with the zone")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="design-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Design of zone [Medium/Large…]")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="zone-context" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Context of zone [production/test]")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="status" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Status of a zone.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Concurrency value")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="zones"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Collection of zones")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:zone" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="network"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Namespace for network inventory resources.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:logical-links" minOccurs="0"/> + <xs:element ref="tns:site-pair-sets" minOccurs="0"/> + <xs:element ref="tns:vpn-bindings" minOccurs="0"/> + <xs:element ref="tns:vpls-pes" minOccurs="0"/> + <xs:element ref="tns:multicast-configurations" minOccurs="0"/> + <xs:element ref="tns:vces" minOccurs="0"/> + <xs:element ref="tns:vpes" minOccurs="0"/> + <xs:element ref="tns:vnfcs" minOccurs="0"/> + <xs:element ref="tns:l3-networks" minOccurs="0"/> + <xs:element ref="tns:network-policies" minOccurs="0"/> + <xs:element ref="tns:generic-vnfs" minOccurs="0"/> + <xs:element ref="tns:lag-links" minOccurs="0"/> + <xs:element ref="tns:newvces" minOccurs="0"/> + <xs:element ref="tns:pnfs" minOccurs="0"/> + <xs:element ref="tns:physical-links" minOccurs="0"/> + <xs:element ref="tns:ipsec-configurations" minOccurs="0"/> + <xs:element ref="tns:route-table-references" minOccurs="0"/> + <xs:element ref="tns:instance-groups" minOccurs="0"/> + <xs:element ref="tns:zones" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="reserved-prop-names"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Internal map to define some reserved properties of a vertex",uniqueProps="aai-unique-key",indexedProps="aai-unique-key,source-of-truth,aai-node-type,aai-uri")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="last-mod-source-of-truth" type="xs:string" minOccurs="0"/> + <xs:element name="aai-node-type" type="xs:string" minOccurs="0"/> + <xs:element name="aai-created-ts" type="xs:unsignedInt" minOccurs="0"/> + <xs:element name="aai-unique-key" type="xs:string" minOccurs="0"/> + <xs:element name="aai-last-mod-ts" type="xs:unsignedInt" minOccurs="0"/> + <xs:element name="source-of-truth" type="xs:string" minOccurs="0"/> + <xs:element name="aai-uri" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="edge-prop-names"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Internal map to define the properties of an edge and interpret the map EdgeRules",edgeInfo="edgeLabel,direction,multiplicityRule,isParent,usesResource,hasDelTarget,SVC-INFRA,SVC-INFRA-REV")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="edgeLabel" type="xs:string" minOccurs="0"/> + <xs:element name="direction" type="xs:string" minOccurs="0"/> + <xs:element name="multiplicityRule" type="xs:string" minOccurs="0"/> + <xs:element name="isParent" type="xs:boolean" minOccurs="0"/> + <xs:element name="usesResource" type="xs:boolean" minOccurs="0"/> + <xs:element name="hasDelTarget" type="xs:boolean" minOccurs="0"/> + <xs:element name="SVC-INFRA" type="xs:boolean" minOccurs="0"/> + <xs:element name="SVC-INFRA-REV" type="xs:boolean" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="aai-internal"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:reserved-prop-names" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="tns:edge-prop-names" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="inventory"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:search" minOccurs="0"/> + <xs:element ref="tns:actions" minOccurs="0"/> + <xs:element ref="tns:cloud-infrastructure" minOccurs="0"/> + <xs:element ref="tns:license-management" minOccurs="0"/> + <xs:element ref="tns:business" minOccurs="0"/> + <xs:element ref="tns:service-design-and-creation" minOccurs="0"/> + <xs:element ref="tns:network" minOccurs="0"/> + <xs:element ref="tns:aai-internal" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="notification-event-header"> + <xs:complexType> + <xs:sequence> + <xs:element name="id" type="xs:string" minOccurs="0"/> + <xs:element name="timestamp" type="xs:string" minOccurs="0"/> + <xs:element name="source-name" type="xs:string" minOccurs="0"/> + <xs:element name="domain" type="xs:string" minOccurs="0"/> + <xs:element name="sequence-number" type="xs:string" minOccurs="0"/> + <xs:element name="severity" type="xs:string" minOccurs="0"/> + <xs:element name="event-type" type="xs:string" minOccurs="0"/> + <xs:element name="version" type="xs:string" minOccurs="0"/> + <xs:element name="action" type="xs:string" minOccurs="0"/> + <xs:element name="entity-type" type="xs:string" minOccurs="0"/> + <xs:element name="top-entity-type" type="xs:string" minOccurs="0"/> + <xs:element name="entity-link" type="xs:string" minOccurs="0"/> + <xs:element name="status" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="notification-event"> + <xs:complexType> + <xs:sequence> + <xs:element name="cambria.partition" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:notification-event-header" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="overloaded-model"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Allows for legacy POST of old-style and new-style models")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="model-invariant-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique identifier corresponding to the main definition of a model in ASDC")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-name-version-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique identifier corresponding to one version of a model in ASDC")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-type" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Type of the model, e.g., service, resource, widget, etc.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-name" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Name of the model, which can change from version to version.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Invariant unique ID which does not change from version to version")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-version" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Version")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="model-description" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Description")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element name="resource-version" type="xs:string" minOccurs="0"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(description="Used for optimistic concurrency. Must be empty on create, valid on update and delete.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + <xs:element ref="tns:model-vers" minOccurs="0"/> + <xs:element ref="tns:relationship-list" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="query-parameters"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="QueryParameters for performing a named-query or model query")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:named-query" minOccurs="0"/> + <xs:element ref="tns:overloaded-model" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="instance-filter"> + <xs:complexType> + <xs:sequence/> + </xs:complexType> + </xs:element> + <xs:element name="instance-filters"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="InstanceFilters for performing a named-query or model query")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:instance-filter" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="secondary-filt"> + <xs:complexType> + <xs:sequence/> + </xs:complexType> + </xs:element> + <xs:element name="secondary-filts"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="SecondaryFilts for performing a named-query or model query")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:secondary-filt" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="model-and-named-query-search"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="ModelAndNamedQuerySearch holds query-parameters and instance-properties for performing a named-query or model query")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:query-parameters" minOccurs="0"/> + <xs:element ref="tns:instance-filters" minOccurs="0"/> + <xs:element ref="tns:secondary-filts" minOccurs="0"/> + <xs:element name="top-node-type" type="xs:string" minOccurs="0"/> + <xs:element name="secondary-filter-cut-point" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="properties"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Property holder for query properties or instance properties")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="property-name" type="xs:string" minOccurs="0"/> + <xs:element name="property-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="extra-property"> + <xs:complexType> + <xs:sequence> + <xs:element name="property-name" type="xs:string" minOccurs="0"/> + <xs:element name="property-value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="extra-properties"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Extra properties for inventory item for response list")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:extra-property" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="inventory-response-item"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Inventory item for response list",container="inventory-response-items")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="model-name" type="xs:string" minOccurs="0"/> + <xs:element ref="tns:extra-properties" minOccurs="0"/> + <xs:element ref="tns:inventory-response-items" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="inventory-response-items"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Container for inventory items in response list",container="response-list")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:inventory-response-item" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="response-list"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Response container for the results of a named-query or model query")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element ref="tns:inventory-response-items" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="vnf"> + <xs:complexType> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="class">@org.openecomp.aai.annotations.Metadata(description="Abstract vnf class",indexedProps="vnf-id",uniqueProps="vnf-id",inheritors="vce,vpe,generic-vnf",isAbstract="true")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:sequence> + <xs:element name="vnf-id" type="xs:string"> + <xs:annotation>
+ <xs:appinfo>
+ <annox:annotate target="field">@org.openecomp.aai.annotations.Metadata(isKey=true,description="Unique id of VNF. This is unique across the graph.")</annox:annotate>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> +</xs:schema> diff --git a/bpmn/MSOCommonBPMN/src/main/webapp/WEB-INF/applicationContext.xml b/bpmn/MSOCommonBPMN/src/main/webapp/WEB-INF/applicationContext.xml new file mode 100644 index 0000000000..0492cebbe9 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/webapp/WEB-INF/applicationContext.xml @@ -0,0 +1,14 @@ +<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <!-- Spring bean to be invoked through the ApplicationContextElResolver -->
+ <bean id="urnMappingTaskBean" class="org.openecomp.mso.bpmn.core.URNMappingsTask" />
+ <bean id="logTaskBean" class="org.openecomp.mso.bpmn.core.LogTask" />
+ <bean id="readConfigBean" class="org.openecomp.mso.bpmn.core.ReadConfigTask" />
+ <bean id="readFileBean" class="org.openecomp.mso.bpmn.core.ReadFileTask" />
+ <bean id="xqueryScriptBean" class="org.openecomp.mso.bpmn.core.XQueryScriptTask"/>
+
+
+</beans>
diff --git a/bpmn/MSOCommonBPMN/src/main/webapp/WEB-INF/jboss-deployment-structure.xml b/bpmn/MSOCommonBPMN/src/main/webapp/WEB-INF/jboss-deployment-structure.xml index 3dbfcce36f..b68ebd943c 100644 --- a/bpmn/MSOCommonBPMN/src/main/webapp/WEB-INF/jboss-deployment-structure.xml +++ b/bpmn/MSOCommonBPMN/src/main/webapp/WEB-INF/jboss-deployment-structure.xml @@ -25,7 +25,14 @@ <module name="org.apache.log4j" />
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
+ <module name="org.jboss.resteasy.resteasy-jackson-provider" />
+ <module name="org.jboss.resteasy.resteasy-jettison-provider" />
</exclusions>
+ <dependencies>
+ <module name="org.jboss.resteasy.resteasy-jackson2-provider" services="import" />
+ <!-- This module contain the ProviderBase class: -->
+ <module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" export="true"/>
+ </dependencies>
</deployment>
</jboss-deployment-structure>
diff --git a/bpmn/MSOCommonBPMN/src/main/webapp/WEB-INF/web.xml b/bpmn/MSOCommonBPMN/src/main/webapp/WEB-INF/web.xml index 6c822a9be5..3a42877715 100644 --- a/bpmn/MSOCommonBPMN/src/main/webapp/WEB-INF/web.xml +++ b/bpmn/MSOCommonBPMN/src/main/webapp/WEB-INF/web.xml @@ -33,6 +33,10 @@ <url-pattern>/*</url-pattern>
</servlet-mapping>
<context-param>
+ <param-name>contextConfigLocation</param-name>
+ <param-value>/WEB-INF/applicationContext.xml</param-value>
+ </context-param>
+ <context-param>
<param-name>mso.configuration</param-name>
<param-value>MSO_PROP_TOPOLOGY=topology.properties</param-value>
</context-param>
@@ -44,6 +48,9 @@ <param-name>resteasy.resources</param-name>
<param-value>org.openecomp.mso.logger.MsoLoggingServlet,org.openecomp.mso.bpmn.core.HealthCheckHandler</param-value>
</context-param>
+ <listener>
+ <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+ </listener>
<filter>
<filter-name>LogFilter</filter-name>
<filter-class>org.openecomp.mso.logger.LogFilter</filter-class>
diff --git a/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/CompleteMsoProcessTest.groovy b/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/CompleteMsoProcessTest.groovy index cd70fa9949..f425dc8040 100644 --- a/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/CompleteMsoProcessTest.groovy +++ b/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/CompleteMsoProcessTest.groovy @@ -56,17 +56,13 @@ class CompleteMsoProcessTest { </sdncadapterworkflow:MsoCompletionRequest> """ - - private String completeMsoProcessResponse = """<sdncadapterworkflow:MsoCompletionResponse xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"> - <sdncadapterworkflow:out>BPEL UCPELayer3ServiceActivateV1 completed</sdncadapterworkflow:out> -</sdncadapterworkflow:MsoCompletionResponse>""" - - @Test public void testPreProcessRequest() { ExecutionEntity mockExecution = mock(ExecutionEntity.class) when(mockExecution.getVariable("CompleteMsoProcessRequest")).thenReturn(completeMsoProcessRequest) + when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC"); + when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7"); CompleteMsoProcess completeMsoProcess = new CompleteMsoProcess() completeMsoProcess.preProcessRequest(mockExecution) @@ -109,48 +105,6 @@ class CompleteMsoProcessTest { } - @Test - public void testpostProcessResponse(){ - - ExecutionEntity mockExecution = mock(ExecutionEntity.class) - - when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true") - when(mockExecution.getVariable("CMSO_mso-bpel-name")).thenReturn("UCPELayer3ServiceActivateV1") - - CompleteMsoProcess completeMsoProcess = new CompleteMsoProcess() - completeMsoProcess.postProcessResponse(mockExecution) - - verify(mockExecution).setVariable("CompleteMsoProcessResponse", completeMsoProcessResponse) - verify(mockExecution).setVariable("CMSO_ResponseCode","200") - } - - private String updateDBStatusToSuccessPayload = """ - <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://org.openecomp.mso/requestsdb"> - <soapenv:Header/> - <soapenv:Body> - <req:updateStatus> - <requestId>testReqId</requestId> - <lastModifiedBy>BPEL</lastModifiedBy> - <status>COMPLETED</status> - </req:updateStatus> - </soapenv:Body> - </soapenv:Envelope> - """ - - @Test - public void testupdateDBStatusToSuccessPayload(){ - - ExecutionEntity mockExecution = mock(ExecutionEntity.class) - when(mockExecution.getVariable("CMSO_request_id")).thenReturn("testReqId") - when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC"); - when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7"); - - CompleteMsoProcess completeMsoProcess = new CompleteMsoProcess() - completeMsoProcess.updateDBStatusToSuccessPayload(mockExecution) - - verify(mockExecution).setVariable("CMSO_updateDBStatusToSuccessPayload",updateDBStatusToSuccessPayload) - } - private String setUpdateDBstatustoSuccessPayload = """ <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://org.openecomp.mso/requestsdb"> <soapenv:Header/> diff --git a/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/FalloutHandlerTest.groovy b/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/FalloutHandlerTest.groovy index fcc55d0933..32a4c54e8e 100644 --- a/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/FalloutHandlerTest.groovy +++ b/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/FalloutHandlerTest.groovy @@ -259,6 +259,7 @@ class FalloutHandlerTest { when(mockExecution.getVariable("FH_request_id")).thenReturn("testReqId")
when(mockExecution.getVariable("FH_ErrorMessage")).thenReturn("ErrorMessage")
when(mockExecution.getVariable("FH_ErrorCode")).thenReturn("ErrorCode")
+ when(mockExecution.getVariable("URN_mso_default_adapter_namespace")).thenReturn("http://org.openecomp.mso");
FalloutHandler falloutHandler = new FalloutHandler()
falloutHandler.updateRequestGammaPayload(mockExecution)
diff --git a/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/GenericPutServiceTest.groovy b/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/GenericPutServiceTest.groovy new file mode 100644 index 0000000000..1e7342de68 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/GenericPutServiceTest.groovy @@ -0,0 +1,214 @@ +package org.openecomp.mso.bpmn.common.scripts
+
+import static org.mockito.Mockito.*
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutServiceInstance;
+
+import org.camunda.bpm.engine.ProcessEngineServices
+import org.camunda.bpm.engine.RepositoryService
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.camunda.bpm.engine.repository.ProcessDefinition
+import org.junit.Before
+import org.junit.Ignore
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.MockitoAnnotations
+import org.mockito.internal.debugging.MockitoDebuggerImpl
+import org.mockito.runners.MockitoJUnitRunner
+
+import com.github.tomakehurst.wiremock.client.WireMock
+import com.github.tomakehurst.wiremock.junit.WireMockRule
+import org.apache.commons.lang3.*
+
+@RunWith(MockitoJUnitRunner.class)
+class GenericPutServiceTest {
+
+ @Rule
+ public WireMockRule wireMockRule = new WireMockRule(8090);
+
+ @Before
+ public void init()
+ {
+ MockitoAnnotations.initMocks(this)
+
+ }
+
+ @Test
+ public void preProcessRequest() {
+
+
+ println "************ preProcessRequest ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("GENPS_globalSubscriberId")).thenReturn("1604-MVM-26")
+ when(mockExecution.getVariable("GENPS_serviceInstanceId")).thenReturn("MIS%2F1604%2F0026%2FSW_INTERNET")
+ when(mockExecution.getVariable("GENPS_serviceType")).thenReturn("SDN-ETHERNET-INTERNET")
+ when(mockExecution.getVariable("GENPS_serviceInstanceData")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("GENPS_type")).thenReturn("service-instance")
+
+ GenericPutService putServiceInstance= new GenericPutService()
+ putServiceInstance.preProcessRequest(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution, atLeast(1)).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", "GENPS_")
+
+ // execution.getVariable("isDebugLogEnabled")
+
+ verify(mockExecution).setVariable("GENPS_SuccessIndicator", false)
+ // verify(mockExecution).setVariable("globalSubscriberId", "1604-MVM-26")
+ // verify(mockExecution).setVariable("serviceInstanceId", "MIS%2F1604%2F0026%2FSW_INTERNET")
+ // verify(mockExecution).setVariable("serviceType", "SDN-ETHERNET-INTERNET")
+ // verify(mockExecution).setVariable("ServiceInstanceData", "f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+
+
+ }
+
+
+ @Test
+ @Ignore
+ public void putServiceInstance() {
+ println "************ putServiceInstance ************* "
+
+ WireMock.reset();
+
+ MockPutServiceInstance("1604-MVM-26", "SDN-ETHERNET-INTERNET", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericPutServiceInstance/GenericPutServiceInstance_PutServiceInstance_AAIResponse_Success.xml");
+ ExecutionEntity mockExecution = setupMock()
+
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("GENPS_globalSubscriberId")).thenReturn("1604-MVM-26")
+ when(mockExecution.getVariable("GENPS_serviceInstanceId")).thenReturn("MIS%2F1604%2F0026%2FSW_INTERNET")
+ when(mockExecution.getVariable("GENPS_serviceType")).thenReturn("SDN-ETHERNET-INTERNET")
+ when(mockExecution.getVariable("GENPS_serviceInstanceData")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_PutServiceInstance_aai_business_customer_uri")).thenReturn("/aai/v7/business/customers/customer")
+ when(mockExecution.getVariable("GENPS_serviceInstanceData")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("GENPS_type")).thenReturn("service-instance")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("7")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v7_customer_uri")).thenReturn("/aai/v7/business/customers/customer")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ GenericPutService serviceInstance= new GenericPutService()
+ serviceInstance.putServiceInstance(mockExecution)
+
+ // check the sequence of variable invocation
+ MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution, atLeast(1)).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", "GENPS_")
+
+ // execution.getVariable("isDebugLogEnabled")
+ // verify(mockExecution).setVariable("GENPSI_serviceInstanceData","f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+
+ String servicePayload = """<service-instance xmlns="http://org.openecomp.aai.inventory/v7">f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance>""" as String
+ verify(mockExecution).setVariable("GENPS_serviceInstancePayload",servicePayload)
+
+ String serviceAaiPath = "http://localhost:28090/aai/v7/business/customers/customer/1604-MVM-26/service-subscriptions/service-subscription/SDN-ETHERNET-INTERNET/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET"
+ verify(mockExecution).setVariable("GENPS_putServiceInstanceAaiPath", serviceAaiPath)
+
+ int responseCode = 200
+ verify(mockExecution).setVariable("GENPS_putServiceInstanceResponseCode", responseCode)
+
+ String aaiResponse = """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Content-Length" value="0"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:551-132672"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+</rest:RESTResponse>"""
+
+ verify(mockExecution).setVariable("GENPS_putServiceInstanceResponse", aaiResponse)
+
+ verify(mockExecution).setVariable("GENPS_SuccessIndicator", true)
+ }
+
+ @Test
+ @Ignore
+ public void putServiceInstance_404() {
+
+
+ println "************ putServiceInstance ************* "
+
+ WireMock.reset();
+
+ ExecutionEntity mockExecution = setupMock()
+
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("GENPS_globalSubscriberId")).thenReturn("1604-MVM-26")
+ when(mockExecution.getVariable("GENPS_serviceInstanceId")).thenReturn("MIS%2F1604%2F0026%2FSW_INTERNET")
+ when(mockExecution.getVariable("GENPS_serviceType")).thenReturn("SDN-ETHERNET-INTERNET")
+ when(mockExecution.getVariable("GENPS_ServiceInstanceData")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_PutServiceInstance_aai_business_customer_uri")).thenReturn("/aai/v7/business/customers/customer")
+ when(mockExecution.getVariable("GENPS_ServiceInstanceData")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+
+ GenericPutService serviceInstance= new GenericPutService()
+ serviceInstance.putServiceInstance(mockExecution)
+
+ // check the sequence of variable invocation
+ MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution, atLeast(1)).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", "GENPS_")
+
+ // execution.getVariable("isDebugLogEnabled")
+
+
+ verify(mockExecution).setVariable("GENPS_serviceInstanceData","f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+
+ String serviceInstancepayload = """<service-instance xmlns="http://org.openecomp.mso.aai.inventory/v7">f70e927b-6087-4974-9ef8-c5e4d5847ca4
+ </service-instance>""" as String
+ verify(mockExecution).setVariable("GENPS_serviceInstancePayload",serviceInstancepayload)
+
+ String serviceInstanceAaiPath = "http://localhost:8090/aai/v7/business/customers/customer/1604-MVM-26/service-subscriptions/service-subscription/SDN-ETHERNET-INTERNET/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET"
+ verify(mockExecution).setVariable("GENPS_putServiceInstanceAaiPath", serviceInstanceAaiPath)
+
+ int responseCode = 404
+ verify(mockExecution).setVariable("GENPS_putServiceInstanceResponseCode", responseCode)
+
+ String aaiResponse = ""
+ verify(mockExecution).setVariable("GENPS_putServiceInstanceResponse", aaiResponse)
+
+ verify(mockExecution).setVariable("GENPS_SuccessIndicator", false)
+
+
+ }
+
+
+ private ExecutionEntity setupMock() {
+
+ ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
+ when(mockProcessDefinition.getKey()).thenReturn("PutServiceInstance")
+ RepositoryService mockRepositoryService = mock(RepositoryService.class)
+ when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
+ when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("PutServiceInstance")
+ when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
+ ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
+ when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+
+ when(mockExecution.getId()).thenReturn("100")
+ when(mockExecution.getProcessDefinitionId()).thenReturn("PutServiceInstance")
+ when(mockExecution.getProcessInstanceId()).thenReturn("PutServiceInstance")
+ when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
+ when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
+
+ return mockExecution
+ }
+
+}
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/NetworkUtilsTest.groovy b/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/NetworkUtilsTest.groovy new file mode 100644 index 0000000000..bc1eb4577e --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/NetworkUtilsTest.groovy @@ -0,0 +1,97 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - MSO + * ================================================================================ + * 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.mso.bpmn.common.scripts + +import static org.mockito.Mockito.* +import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity +import static org.junit.Assert.*; +import org.junit.Test; + +class NetworkUtilsTest { + + def volumeRequestXml = """<volume-request xmlns="http://www.w3.org/2001/XMLSchema"> + <request-info> + <action>CREATE_VF_MODULE_VOL</action> + <source>VID</source> + <service-instance-id/> + </request-info> + <volume-inputs> + <volume-group-id/> + <volume-group-name>MSOTESTVOL101a-vSAMP12_base_vol_module-0</volume-group-name> + <vnf-type>Test/vSAMP12</vnf-type> + <vf-module-model-name>vSAMP12::base::module-0</vf-module-model-name> + <asdc-service-model-version>2.0</asdc-service-model-version> + <aic-cloud-region>mdt1</aic-cloud-region> + <tenant-id>88a6ca3ee0394ade9403f075db23167e</tenant-id> + <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id> + <backout-on-failure></backout-on-failure> + </volume-inputs> + <volume-params> + <param name="vnf_name">STMTN5MMSC20</param> + <param name="vnf_name2">US1117MTSNJVBR0246</param> + </volume-params> +</volume-request>""" + + @Test + public void testIsRollbackEnabled() { + + ExecutionEntity mockExecution = mock(ExecutionEntity.class) + when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn('true') + when(mockExecution.getVariable("URN_mso_rollback")).thenReturn(true) + + NetworkUtils networkUtils = new NetworkUtils() + def rollbackEnabled = networkUtils.isRollbackEnabled(mockExecution, volumeRequestXml) + + assertEquals(true, rollbackEnabled) + + } + + @Test + public void testIsRollbackEnabled2() { + + ExecutionEntity mockExecution = mock(ExecutionEntity.class) + when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn('true') + when(mockExecution.getVariable("URN_mso_rollback")).thenReturn(false) + + NetworkUtils networkUtils = new NetworkUtils() + def rollbackEnabled = networkUtils.isRollbackEnabled(mockExecution, volumeRequestXml) + + assertEquals(false, rollbackEnabled) + + } + + @Test + public void testGetIpvVersion() { + + NetworkUtils networkUtils = new NetworkUtils() + println "test: ipv4" + String version4 = networkUtils.getIpvVersion("ipv4") + assertEquals("4", version4) + println "test: ipv6" + String version6 = networkUtils.getIpvVersion("ipv6") + assertEquals("6", version6) + println "test: 4" + String versionDigit4 = networkUtils.getIpvVersion("4") + assertEquals("4", versionDigit4) + + } + +} diff --git a/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/VidUtilsTest.groovy b/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/VidUtilsTest.groovy index 645fbe6e8f..c4f0e9e7d4 100644 --- a/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/VidUtilsTest.groovy +++ b/bpmn/MSOCommonBPMN/src/test/groovy/org/openecomp/mso/bpmn/common/scripts/VidUtilsTest.groovy @@ -58,11 +58,11 @@ class VidUtilsTest { "requestDetails": { "modelInfo": { "modelType": "vfModule", - "modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", + "modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff", "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "STMTN5MMSC21-MMSC::model-1-0", "modelVersion": "1", - "modelCustomizationId": "ee6478e5-ea33-3346-ac12-ab121484a3fe" + "modelCustomizationUuid": "ee6478e5-ea33-3346-ac12-ab121484a3fe" }, "cloudConfiguration": { "lcpCloudRegionId": "MDTWNJ21", @@ -80,7 +80,7 @@ class VidUtilsTest { "instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol", "modelInfo": { "modelType": "volumeGroup", - "modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", + "modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff", "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12..base..module-0", "modelVersion": "1" @@ -92,7 +92,7 @@ class VidUtilsTest { "instanceId": "123456", "modelInfo": { "modelType": "service", - "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", + "modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff", "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "SERVICE_MODEL_NAME", "modelVersion": "1.0" @@ -105,11 +105,11 @@ class VidUtilsTest { "instanceName": "skask-test", "modelInfo": { "modelType": "vnf", - "modelInvariantId": "skask", + "modelInvariantUuid": "skask", "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12", "modelVersion": "1.0", - "modelCustomizationName": "vSAMP12 1" + "modelInstanceName": "vSAMP12 1" } } } @@ -193,7 +193,7 @@ class VidUtilsTest { "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12", "modelVersion": "1", - "modelCustomizationName": "vSAMP12" + "modelInstanceName": "vSAMP12" } } } @@ -262,7 +262,7 @@ class VidUtilsTest { "modelInfo": { "modelType": "volumeGroup", "modelId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12::base::module-0", "modelVersion": "1" }, @@ -282,7 +282,7 @@ class VidUtilsTest { "modelInfo": { "modelType": "service", "modelId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "Test", "modelVersion": "2.0" } @@ -293,10 +293,10 @@ class VidUtilsTest { "modelInfo": { "modelType": "vnf", "modelId": "ff5256d1-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12", "modelVersion": "1", - "modelCustomizationName": "vSAMP12" + "modelInstanceName": "vSAMP12" } } } @@ -311,7 +311,7 @@ class VidUtilsTest { "modelInfo": { "modelType": "volumeGroup", "modelId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12::base::module-0", "modelVersion": "1" }, @@ -331,7 +331,7 @@ class VidUtilsTest { "modelInfo": { "modelType": "service", "modelId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "Test", "modelVersion": "2.0" } @@ -342,10 +342,10 @@ class VidUtilsTest { "modelInfo": { "modelType": "vnf", "modelId": "ff5256d1-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12", "modelVersion": "1", - "modelCustomizationName": "vSAMP12" + "modelInstanceName": "vSAMP12" } } } @@ -360,7 +360,7 @@ def bpmnReqJsonVolumeSuppressRollbackFalse = """ "modelInfo": { "modelType": "volumeGroup", "modelId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12::base::module-0", "modelVersion": "1" }, @@ -380,7 +380,7 @@ def bpmnReqJsonVolumeSuppressRollbackFalse = """ "modelInfo": { "modelType": "service", "modelId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "Test", "modelVersion": "2.0" } @@ -391,10 +391,10 @@ def bpmnReqJsonVolumeSuppressRollbackFalse = """ "modelInfo": { "modelType": "vnf", "modelId": "ff5256d1-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12", "modelVersion": "1", - "modelCustomizationName": "vSAMP12" + "modelInstanceName": "vSAMP12" } } } @@ -409,7 +409,7 @@ def bpmnReqJsonVolumeSuppressRollbackNone = """ "modelInfo": { "modelType": "volumeGroup", "modelId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12::base::module-0", "modelVersion": "1" }, @@ -428,7 +428,7 @@ def bpmnReqJsonVolumeSuppressRollbackNone = """ "modelInfo": { "modelType": "service", "modelId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "Test", "modelVersion": "2.0" } @@ -439,10 +439,10 @@ def bpmnReqJsonVolumeSuppressRollbackNone = """ "modelInfo": { "modelType": "vnf", "modelId": "ff5256d1-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12", "modelVersion": "1", - "modelCustomizationName": "vSAMP12" + "modelInstanceName": "vSAMP12" } } } @@ -456,8 +456,8 @@ def bpmnReqJsonVolumeSuppressRollbackNone = """ "requestDetails": { "modelInfo": { "modelType": "vfModule", -"modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", -"modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff", +"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "STMTN5MMSC21-MMSC::model-1-0", "modelVersion": "1" }, @@ -477,8 +477,8 @@ def bpmnReqJsonVolumeSuppressRollbackNone = """ "instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol", "modelInfo": { "modelType": "volumeGroup", -"modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", -"modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff", +"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12..base..module-0", "modelVersion": "1" } @@ -489,8 +489,8 @@ def bpmnReqJsonVolumeSuppressRollbackNone = """ "instanceId": "123456", "modelInfo": { "modelType": "service", -"modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", -"modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff", +"modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "SERVICE_MODEL_NAME", "modelVersion": "1.0" } @@ -502,11 +502,11 @@ def bpmnReqJsonVolumeSuppressRollbackNone = """ "instanceName": "skask-test", "modelInfo": { "modelType": "vnf", -"modelInvariantId": "skask", -"modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "skask", +"modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12", "modelVersion": "1.0", -"modelCustomizationName": "vSAMP12 1" +"modelInstanceName": "vSAMP12 1" } } } @@ -523,8 +523,8 @@ def bpmnReqJsonVfModuleSuppressRollbackFalse = """ "requestDetails": { "modelInfo": { "modelType": "vfModule", -"modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", -"modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff", +"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "STMTN5MMSC21-MMSC::model-1-0", "modelVersion": "1" }, @@ -544,8 +544,8 @@ def bpmnReqJsonVfModuleSuppressRollbackFalse = """ "instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol", "modelInfo": { "modelType": "volumeGroup", -"modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", -"modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff", +"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12..base..module-0", "modelVersion": "1" } @@ -556,8 +556,8 @@ def bpmnReqJsonVfModuleSuppressRollbackFalse = """ "instanceId": "123456", "modelInfo": { "modelType": "service", -"modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", -"modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff", +"modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "SERVICE_MODEL_NAME", "modelVersion": "1.0" } @@ -569,11 +569,11 @@ def bpmnReqJsonVfModuleSuppressRollbackFalse = """ "instanceName": "skask-test", "modelInfo": { "modelType": "vnf", -"modelInvariantId": "skask", -"modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "skask", +"modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12", "modelVersion": "1.0", -"modelCustomizationName": "vSAMP12 1" +"modelInstanceName": "vSAMP12 1" } } } @@ -590,8 +590,8 @@ def bpmnReqJsonVfModuleSuppressRollbackNone = """ "requestDetails": { "modelInfo": { "modelType": "vfModule", -"modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", -"modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff", +"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "STMTN5MMSC21-MMSC::model-1-0", "modelVersion": "1" }, @@ -610,8 +610,8 @@ def bpmnReqJsonVfModuleSuppressRollbackNone = """ "instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol", "modelInfo": { "modelType": "volumeGroup", -"modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", -"modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff", +"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12..base..module-0", "modelVersion": "1" } @@ -622,8 +622,8 @@ def bpmnReqJsonVfModuleSuppressRollbackNone = """ "instanceId": "123456", "modelInfo": { "modelType": "service", -"modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", -"modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff", +"modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "SERVICE_MODEL_NAME", "modelVersion": "1.0" } @@ -635,11 +635,11 @@ def bpmnReqJsonVfModuleSuppressRollbackNone = """ "instanceName": "skask-test", "modelInfo": { "modelType": "vnf", -"modelInvariantId": "skask", -"modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "skask", +"modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12", "modelVersion": "1.0", -"modelCustomizationName": "vSAMP12 1" +"modelInstanceName": "vSAMP12 1" } } } @@ -762,7 +762,7 @@ def vidUtilVfModuleRespBackoutOnFailureFalse = """<vnf-request> <service-id/> <backout-on-failure>false</backout-on-failure> <persona-model-id>ff5256d2-5a33-55df-13ab-12abad84e7ff</persona-model-id> - <persona-model-version>1</persona-model-version> + <persona-model-version>fe6478e5-ea33-3346-ac12-ab121484a3fe</persona-model-version> </vnf-inputs> <vnf-params/> </vnf-request> @@ -792,7 +792,7 @@ def vidUtilVfModuleRespBackoutOnFailureTrue = """<vnf-request> <service-id/> <backout-on-failure>true</backout-on-failure> <persona-model-id>ff5256d2-5a33-55df-13ab-12abad84e7ff</persona-model-id> - <persona-model-version>1</persona-model-version> + <persona-model-version>fe6478e5-ea33-3346-ac12-ab121484a3fe</persona-model-version> </vnf-inputs> <vnf-params/> </vnf-request> @@ -822,7 +822,7 @@ def vidUtilVfModuleRespBackoutOnFailureEmpty = """<vnf-request> <service-id/> <backout-on-failure/> <persona-model-id>ff5256d2-5a33-55df-13ab-12abad84e7ff</persona-model-id> - <persona-model-version>1</persona-model-version> + <persona-model-version>fe6478e5-ea33-3346-ac12-ab121484a3fe</persona-model-version> </vnf-inputs> <vnf-params/> </vnf-request> diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/BPMNUtil.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/BPMNUtil.java index 27f2479a7b..c476c6577f 100644 --- a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/BPMNUtil.java +++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/BPMNUtil.java @@ -19,7 +19,7 @@ import org.camunda.bpm.engine.variable.impl.VariableMapImpl; import org.jboss.resteasy.spi.AsynchronousResponse;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
-import org.openecomp.mso.bpmn.common.workflow.service.WorkflowAsyncCommonResource;
+import org.openecomp.mso.bpmn.common.workflow.service.WorkflowAsyncResource;
import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResource;
import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
@@ -166,7 +166,7 @@ public class BPMNUtil { * @param variables
*/
private static void executeAsyncFlow(ProcessEngineServices processEngineServices, String processKey, AsynchronousResponse asyncResponse, Map<String,String> variables) {
- WorkflowAsyncCommonResource workflowResource = new WorkflowAsyncCommonResource();
+ WorkflowAsyncResource workflowResource = new WorkflowAsyncResource();
VariableMapImpl variableMap = new VariableMapImpl();
Map<String, Object> variableValueType = new HashMap<String, Object>();
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/DecomposeServiceTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/DecomposeServiceTest.java new file mode 100644 index 0000000000..6ec9493557 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/DecomposeServiceTest.java @@ -0,0 +1,95 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - MSO + * ================================================================================ + * 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.mso.bpmn.common; + +import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.camunda.bpm.engine.test.Deployment; +import org.junit.Assert; +import org.junit.Test; +import org.openecomp.mso.bpmn.common.WorkflowTest; + +/** + * Unit Test for the DecomposeService Flow + * + */ +public class DecomposeServiceTest extends WorkflowTest { + + + public DecomposeServiceTest() throws IOException { + + } + + @Test + @Deployment(resources = {"subprocess/BuildingBlock/DecomposeService.bpmn"}) + public void testDecomposeService_success() throws Exception{ + MockGetServiceResourcesCatalogData("cmw-123-456-789", "/getCatalogServiceResourcesData.json", "1.0"); + + + String businessKey = UUID.randomUUID().toString(); + Map<String, Object> variables = new HashMap<String, Object>(); + setVariablesSuccess(variables, "testRequestId123", "ff5256d2-5a33-55df-13ab-12abad84e7ff"); + invokeSubProcess("DecomposeService", businessKey, variables); + + waitForProcessEnd(businessKey, 10000); + + Assert.assertTrue(isProcessEnded(businessKey)); + + } + + //@Test + @Deployment(resources = {"subprocess/BuildingBlock/DecomposeService.bpmn"}) + public void testDecomposeService_success_partial() throws Exception{ + MockGetServiceResourcesCatalogData("cmw-123-456-789", "/getCatalogServiceResourcesDataNoNetwork.json"); + + + String businessKey = UUID.randomUUID().toString(); + Map<String, Object> variables = new HashMap<String, Object>(); + setVariablesSuccess(variables, "testRequestId123", "ff5256d2-5a33-55df-13ab-12abad84e7ff"); + invokeSubProcess("DecomposeService", businessKey, variables); + + waitForProcessEnd(businessKey, 10000); + + Assert.assertTrue(isProcessEnded(businessKey)); + + } + + private void setVariablesSuccess(Map<String, Object> variables, String requestId, String siId) { + variables.put("isDebugLogEnabled", "true"); + variables.put("mso-request-id", requestId); + variables.put("msoRequestId", requestId); + variables.put("serviceInstanceId",siId); + + String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," + + "\"modelInvariantUuid\": \"cmw-123-456-789\"," + + "\"modelVersionId\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," + + "\"modelName\": \"ServicevSAMP12\"," + + "\"modelVersion\": \"1.0\"," + + "}"; + variables.put("serviceModelInfo", serviceModelInfo); + + } + +} diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/ManualHandlingTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/ManualHandlingTest.java new file mode 100644 index 0000000000..c68c7bb184 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/ManualHandlingTest.java @@ -0,0 +1,122 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - MSO + * ================================================================================ + * 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.mso.bpmn.common; + +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; + +import org.camunda.bpm.engine.TaskService; +import org.camunda.bpm.ProcessEngineService; +import org.camunda.bpm.engine.task.TaskQuery; +import org.camunda.bpm.engine.task.Task; +import org.camunda.bpm.engine.delegate.BpmnError; +import org.camunda.bpm.engine.delegate.DelegateTask; +import org.camunda.bpm.engine.runtime.Execution; + +import static org.openecomp.mso.bpmn.common.BPMNUtil.executeWorkFlow; +import static org.openecomp.mso.bpmn.common.BPMNUtil.waitForWorkflowToFinish; +import static com.github.tomakehurst.wiremock.client.WireMock.containing; +import static com.github.tomakehurst.wiremock.client.WireMock.put; +import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; +import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching; +import static org.openecomp.mso.bpmn.common.BPMNUtil.executeWorkFlow; +import static org.openecomp.mso.bpmn.common.BPMNUtil.waitForWorkflowToFinish; +import static org.openecomp.mso.bpmn.mock.StubResponsePolicy.MockPolicyAbort; + +import java.io.DataOutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import java.util.List; + +import org.camunda.bpm.engine.RuntimeService; +import org.camunda.bpm.engine.test.Deployment; +import org.junit.Assert; +import org.junit.Test; +import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse; +import org.openecomp.mso.bpmn.core.WorkflowException; + +/** + * Unit test for RainyDayHandler.bpmn. + */ +public class ManualHandlingTest extends WorkflowTest { + + @Test + @Deployment(resources = { + "subprocess/BuildingBlock/ManualHandling.bpmn" + }) + public void TestManualHandlingSuccess() { + + RuntimeService runtimeService = processEngineRule.getRuntimeService(); + Map<String, Object> variables = new HashMap<String, Object>(); + variables.put("isDebugLogEnabled","true"); + variables.put("msoRequestId", "testRequestId"); + variables.put("serviceType", "X"); + variables.put("vnfType", "Y"); + variables.put("currentActivity", "BB1"); + variables.put("workStep", "1"); + variables.put("failedActivity", ""); + variables.put("errorCode", "123"); + variables.put("errorText", "update failed"); + variables.put("validResponses", "Rollback"); + + + String businessKey = UUID.randomUUID().toString(); + invokeSubProcess("ManualHandling", businessKey, variables); + + try { + Thread.sleep(5); + } catch (Exception e) { + + } + + TaskService taskService = processEngineRule.getTaskService(); + + TaskQuery q = taskService.createTaskQuery(); + + List<Task> tasks = q.orderByTaskCreateTime().asc().list(); + int i = 0; + + for (Task task : tasks) { + + + System.out.println("TASK ID: " + task.getId()); + System.out.println("TASK NAME: " + task.getName()); + try { + System.out.println("Completing the task"); + Map<String,Object> completeVariables = new HashMap<String,Object>(); + completeVariables.put("responseValue", "skip"); + taskService.complete(task.getId(), completeVariables); + } + catch(Exception e) { + System.out.println("GOT EXCEPTION: " + e.getMessage()); + } + } + + waitForProcessEnd(businessKey, 100000); + + Assert.assertTrue(isProcessEnded(businessKey)); + + } + + +}
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/RainyDayHandlerTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/RainyDayHandlerTest.java new file mode 100644 index 0000000000..86b59f9074 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/RainyDayHandlerTest.java @@ -0,0 +1,85 @@ +/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.bpmn.common;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static org.openecomp.mso.bpmn.common.BPMNUtil.executeWorkFlow;
+import static org.openecomp.mso.bpmn.common.BPMNUtil.waitForWorkflowToFinish;
+import static com.github.tomakehurst.wiremock.client.WireMock.containing;
+import static com.github.tomakehurst.wiremock.client.WireMock.put;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
+import static org.openecomp.mso.bpmn.common.BPMNUtil.executeWorkFlow;
+import static org.openecomp.mso.bpmn.common.BPMNUtil.waitForWorkflowToFinish;
+import static org.openecomp.mso.bpmn.mock.StubResponsePolicy.MockPolicyAbort;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.RuntimeService;
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
+import org.openecomp.mso.bpmn.core.WorkflowException;
+
+/**
+ * Unit test for RainyDayHandler.bpmn.
+ */
+public class RainyDayHandlerTest extends WorkflowTest {
+
+ @Test
+ @Ignore // IGNORED FOR 1710 MERGE TO ONAP
+ @Deployment(resources = {
+ "subprocess/BuildingBlock/RainyDayHandler.bpmn",
+ "subprocess/BuildingBlock/ManualHandling.bpmn"
+ })
+ public void TestRainyDayHandlingSuccess() {
+
+ RuntimeService runtimeService = processEngineRule.getRuntimeService();
+ Map<String, Object> variables = new HashMap<String, Object>();
+ variables.put("isDebugLogEnabled","true");
+ variables.put("msoRequestId", "testRequestId");
+ variables.put("serviceType", "X");
+ variables.put("vnfType", "Y");
+ variables.put("currentActivity", "BB1");
+ variables.put("workStep", "1");
+ variables.put("failedActivity", "");
+ variables.put("errorCode", "123");
+ variables.put("errorText", "update failed");
+
+ MockPolicyAbort();
+
+
+ String businessKey = UUID.randomUUID().toString();
+ invokeSubProcess("RainyDayHandler", businessKey, variables);
+
+ waitForProcessEnd(businessKey, 10000);
+
+ Assert.assertTrue(isProcessEnded(businessKey));
+
+ }
+
+
+
+}
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/SDNCAdapterV1Test.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/SDNCAdapterV1Test.java index 3eb7acd91a..d1ca98ccab 100644 --- a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/SDNCAdapterV1Test.java +++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/SDNCAdapterV1Test.java @@ -38,6 +38,7 @@ import org.camunda.bpm.engine.runtime.Job; import org.camunda.bpm.engine.test.Deployment;
import org.camunda.bpm.engine.variable.impl.VariableMapImpl;
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Test;
import org.openecomp.mso.bpmn.common.adapter.sdnc.CallbackHeader;
import org.openecomp.mso.bpmn.common.adapter.sdnc.SDNCAdapterCallbackRequest;
@@ -47,6 +48,7 @@ import org.openecomp.mso.bpmn.common.workflow.service.SDNCAdapterCallbackService import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResource;
import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
import org.openecomp.mso.bpmn.core.PropertyConfigurationSetup;
+import org.openecomp.mso.bpmn.core.xml.XmlTool;
import org.openecomp.mso.bpmn.mock.FileUtil;
/**
@@ -173,6 +175,7 @@ public class SDNCAdapterV1Test extends WorkflowTest { checkForTimeout(pid);
assertEquals(true, (Boolean) (getVariable(pid, "continueListening")));
+ assertEquals(false, (Boolean) (getVariable(pid, "SDNCA_InterimNotify")));
//System.out.println("SDNCAdapter interim status processing flow Completed!");
@@ -215,6 +218,7 @@ public class SDNCAdapterV1Test extends WorkflowTest { assertFalse(sdncAdapterResponse instanceof SDNCAdapterErrorResponse);
assertProcessInstanceNotFinished(pid);
assertEquals(true, (Boolean) (getVariable(pid, "continueListening")));
+ assertEquals(false, (Boolean) (getVariable(pid, "SDNCA_InterimNotify")));
// Inject a "final" SDNC Adapter asynchronous callback message
sdncAdapterCallbackRequest.setRequestData(sdncAdapterCallbackRequestData);
@@ -224,11 +228,74 @@ public class SDNCAdapterV1Test extends WorkflowTest { assertFalse(sdncAdapterResponse instanceof SDNCAdapterErrorResponse);
assertProcessInstanceFinished(pid);
assertEquals(false, (Boolean) (getVariable(pid, "continueListening")));
+ assertEquals(false, (Boolean) (getVariable(pid, "SDNCA_InterimNotify")));
+
+ //System.out.println("SDNCAdapter non-final then final processing flow Completed!");
+ }
+
+
+ @Test
+ @Deployment(resources = {"subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/GenericNotificationService.bpmn"
+ })
+ public void nonFinalThenFinalWithNotify() throws InterruptedException {
+
+ mockSDNCAdapter(200);
+ mockUpdateRequestDB(200, "Database/DBAdapter.xml");
+
+ //System.out.println("SDNCAdapter non-final then final processing flow Started!");
+
+ String modSdncAdapterWorkflowRequestAct = sdncAdapterWorkflowRequestAct;
+ try {
+ // only service-type "uCPE-VMS" is applicable to notification, so modify the test request
+ modSdncAdapterWorkflowRequestAct = XmlTool.modifyElement(sdncAdapterWorkflowRequestAct, "tag0:service-type", "uCPE-VMS").get();
+ System.out.println("modified request: " + modSdncAdapterWorkflowRequestAct);
+ } catch (Exception e) {
+ System.out.println("request modification failed");
+ //e.printStackTrace();
+ }
+
+ // Start the flow
+ ProcessExecutionThread thread = new ProcessExecutionThread(modSdncAdapterWorkflowRequestAct);
+ thread.start();
+ waitForExecutionToStart("sdncAdapter", 3);
+ String pid = getPid();
+
+ assertProcessInstanceNotFinished(pid);
+
+ // Inject a "non-final" SDNC Adapter asynchronous callback message
+ //System.out.println("Injecting SDNC Adapter asynchronous callback message to continue processing");
+ String generatedRequestId = (String) processEngineRule.getRuntimeService().getVariable(pid, "SDNCA_requestId");
+ CallbackHeader callbackHeader = new CallbackHeader();
+ callbackHeader.setRequestId(generatedRequestId);
+ callbackHeader.setResponseCode("200");
+ callbackHeader.setResponseMessage("OK");
+ SDNCAdapterCallbackRequest sdncAdapterCallbackRequest = new SDNCAdapterCallbackRequest();
+ sdncAdapterCallbackRequest.setCallbackHeader(callbackHeader);
+ sdncAdapterCallbackRequest.setRequestData(sdncAdapterCallbackRequestDataNonfinal);
+ SDNCAdapterCallbackServiceImpl callbackService = new SDNCAdapterCallbackServiceImpl();
+ callbackService.setProcessEngineServices4junit(processEngineRule);
+ SDNCAdapterResponse sdncAdapterResponse = callbackService.sdncAdapterCallback(sdncAdapterCallbackRequest);
+ //System.out.println("Back from executing process again");
+
+ assertFalse(sdncAdapterResponse instanceof SDNCAdapterErrorResponse);
+ assertProcessInstanceNotFinished(pid);
+ assertEquals(true, (Boolean) (getVariable(pid, "continueListening")));
+ assertEquals(true, (Boolean) (getVariable(pid, "SDNCA_InterimNotify")));
+
+ // Inject a "final" SDNC Adapter asynchronous callback message
+ sdncAdapterCallbackRequest.setRequestData(sdncAdapterCallbackRequestData);
+ sdncAdapterResponse = callbackService.sdncAdapterCallback(sdncAdapterCallbackRequest);
+ //System.out.println("Back from executing process again");
+
+ assertFalse(sdncAdapterResponse instanceof SDNCAdapterErrorResponse);
+ assertProcessInstanceFinished(pid);
+ assertEquals(false, (Boolean) (getVariable(pid, "continueListening")));
+ assertEquals(false, (Boolean) (getVariable(pid, "SDNCA_InterimNotify")));
//System.out.println("SDNCAdapter non-final then final processing flow Completed!");
}
-
private void waitForExecutionToStart(String processDefintion, int count) throws InterruptedException {
//System.out.println(processEngineRule.getRuntimeService().createExecutionQuery().processDefinitionKey(processDefintion).count());
@@ -238,6 +305,7 @@ public class SDNCAdapterV1Test extends WorkflowTest { }
@Test
+ @Ignore // Ignored because PropertyConfigurationSetup is timing out
@Deployment(resources = {"subprocess/SDNCAdapterV1.bpmn",
"subprocess/GenericNotificationService.bpmn"
})
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/WorkflowAsyncResourceTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/WorkflowAsyncResourceTest.java index 4ac885fd9d..abad6c373d 100644 --- a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/WorkflowAsyncResourceTest.java +++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/WorkflowAsyncResourceTest.java @@ -31,7 +31,7 @@ import org.camunda.bpm.engine.test.Deployment; import org.camunda.bpm.engine.variable.impl.VariableMapImpl; import org.jboss.resteasy.spi.AsynchronousResponse; import org.junit.Test; -import org.openecomp.mso.bpmn.common.workflow.service.WorkflowAsyncCommonResource; +import org.openecomp.mso.bpmn.common.workflow.service.WorkflowAsyncResource; import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse; public class WorkflowAsyncResourceTest extends WorkflowTest { @@ -53,7 +53,7 @@ public class WorkflowAsyncResourceTest extends WorkflowTest { } private void executeWorkflow(String request, String requestId, AsynchronousResponse asyncResponse, String processKey) { - WorkflowAsyncCommonResource workflowResource = new WorkflowAsyncCommonResource(); + WorkflowAsyncResource workflowResource = new WorkflowAsyncResource(); VariableMapImpl variableMap = new VariableMapImpl(); Map<String, Object> variableValueType = new HashMap<String, Object>(); diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/WorkflowTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/WorkflowTest.java index 49ad6d6e34..4deac221a5 100644 --- a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/WorkflowTest.java +++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/WorkflowTest.java @@ -1,22 +1,22 @@ -/*-
- * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
- * ================================================================================
- * 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=========================================================
- */
+/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.bpmn.common;
@@ -60,6 +60,8 @@ import org.camunda.bpm.engine.variable.impl.VariableMapImpl; import org.custommonkey.xmlunit.DetailedDiff;
import org.custommonkey.xmlunit.XMLUnit;
import org.jboss.resteasy.spi.AsynchronousResponse;
+import org.json.JSONArray;
+import org.json.JSONObject;
import org.junit.Before;
import org.junit.Rule;
import org.openecomp.mso.bpmn.common.adapter.sdnc.CallbackHeader;
@@ -73,11 +75,15 @@ import org.openecomp.mso.bpmn.common.adapter.vnf.UpdateVnfNotification; import org.openecomp.mso.bpmn.common.adapter.vnf.VnfRollback;
import org.openecomp.mso.bpmn.common.workflow.service.SDNCAdapterCallbackServiceImpl;
import org.openecomp.mso.bpmn.common.workflow.service.VnfAdapterNotifyServiceImpl;
-import org.openecomp.mso.bpmn.common.workflow.service.WorkflowAsyncCommonResource;
+import org.openecomp.mso.bpmn.common.workflow.service.WorkflowAsyncResource;
import org.openecomp.mso.bpmn.common.workflow.service.WorkflowMessageResource;
import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
import org.openecomp.mso.bpmn.core.CamundaDBSetup;
import org.openecomp.mso.bpmn.core.PropertyConfigurationSetup;
+import org.openecomp.mso.bpmn.core.domain.Resource;
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
+
+import static org.openecomp.mso.bpmn.core.json.JsonUtils.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -119,6 +125,7 @@ public class WorkflowTest { */
protected static final String JSON = "application/json; charset=UTF-8";
+
/**
* Constructor.
*/
@@ -265,7 +272,7 @@ public class WorkflowTest { VariableMapImpl variableMapImpl = createVariableMapImpl(variables);
System.out.println("Sending " + request + " to " + processKey + " process");
- WorkflowAsyncCommonResource workflowResource = new WorkflowAsyncCommonResource();
+ WorkflowAsyncResource workflowResource = new WorkflowAsyncResource();
workflowResource.setProcessEngineServices4junit(processEngineRule);
TestAsyncResponse asyncResponse = new TestAsyncResponse();
@@ -298,7 +305,7 @@ public class WorkflowTest { VariableMapImpl variableMapImpl = createVariableMapImpl(variables);
System.out.println("Sending " + request + " to " + processKey + " process");
- WorkflowAsyncCommonResource workflowResource = new WorkflowAsyncCommonResource();
+ WorkflowAsyncResource workflowResource = new WorkflowAsyncResource();
workflowResource.setProcessEngineServices4junit(processEngineRule);
TestAsyncResponse asyncResponse = new TestAsyncResponse();
@@ -619,6 +626,18 @@ public class WorkflowTest { content = callbackData.getContent();
respCode = 200;
respMsg = "OK";
+ } else if ("CREATED".equals(modifier)) {
+ CallbackData callbackData = callbacks.get(action);
+
+ if (callbackData == null) {
+ String msg = "No callback defined for '" + action + "' SDNC request";
+ System.out.println(msg);
+ fail(msg);
+ }
+
+ content = callbackData.getContent();
+ respCode = 201;
+ respMsg = "Created";
} else if ("ERR".equals(modifier)) {
content = "<svc-request-id>((REQUEST-ID))</svc-request-id><response-code>500</response-code><response-message>SIMULATED ERROR FROM SDNC ADAPTER</response-message>";
respCode = 500;
@@ -1386,6 +1405,127 @@ public class WorkflowTest { }
/**
+ * Runs a program to inject sniro workflow messages into the test environment.
+ * A program is essentially just a list of keys that identify event data
+ * to be injected, in sequence. For more details, see
+ * injectSNIROCallbacks(String contentType, String messageType, String content, long timeout)
+ *
+ * Errors are handled with junit assertions and will cause the test to fail.
+ * NOTE: Each callback must have a workflow message type associated with it.
+ *
+ * @param callbacks an object containing event data for the program
+ * @param program the program to execute
+ */
+ protected void injectSNIROCallbacks(CallbackSet callbacks, String program) {
+
+ String[] cmds = program.replaceAll("\\s+", "").split(",");
+
+ for (String cmd : cmds) {
+ String action = cmd;
+ String modifier = "STD";
+
+ if (cmd.contains(":")) {
+ String[] parts = cmd.split(":");
+ action = parts[0];
+ modifier = parts[1];
+ }
+
+ String messageType = null;
+ String content = null;
+ String contentType = null;
+
+ if ("STD".equals(modifier)) {
+ CallbackData callbackData = callbacks.get(action);
+
+ if (callbackData == null) {
+ String msg = "No '" + action + "' workflow message callback is defined";
+ System.out.println(msg);
+ fail(msg);
+ }
+
+ messageType = callbackData.getMessageType();
+
+ if (messageType == null || messageType.trim().equals("")) {
+ String msg = "No workflow message type is defined in the '" + action + "' callback";
+ System.out.println(msg);
+ fail(msg);
+ }
+
+ content = callbackData.getContent();
+ contentType = callbackData.getContentType();
+ } else {
+ String msg = "Invalid workflow message program modifier: '" + modifier + "'";
+ System.out.println(msg);
+ fail(msg);
+ }
+
+ if (!injectSNIROCallbacks(contentType, messageType, content, 10000)) {
+ fail("Failed to inject '" + action + "' workflow message");
+ }
+
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ fail("Interrupted after injection of '" + action + "' workflow message");
+ }
+ }
+ }
+
+ /**
+ * Injects a sniro workflow message. The specified callback response may
+ * contain the placeholder strings ((CORRELATOR)) and ((SERVICE_RESOURCE_ID))
+ * The ((CORRELATOR)) is replaced with the actual correlator value from the
+ * request. The ((SERVICE_RESOURCE_ID)) is replaced with the actual serviceResourceId
+ * value from the sniro request. Currently this only works with sniro request
+ * that contain only 1 resource.
+ *
+ * @param contentType the HTTP contentType for the message (possibly null)
+ * @param messageType the message type
+ * @param content the message content (possibly null)
+ * @param timeout the timeout in milliseconds
+ * @return true if the message could be injected, false otherwise
+ */
+ protected boolean injectSNIROCallbacks(String contentType, String messageType, String content, long timeout) {
+ String correlator = (String) getProcessVariable("ReceiveWorkflowMessage",
+ messageType + "_CORRELATOR", timeout);
+
+ if (correlator == null) {
+ return false;
+ }
+ if (content != null) {
+ content = content.replace("((CORRELATOR))", correlator);
+ if(messageType.equalsIgnoreCase("SNIROResponse")){
+ //TODO figure out a solution for when there is more than 1 resource being homed (i.e. more than 1 reason in the placement list)
+ ServiceDecomposition decomp = (ServiceDecomposition) getProcessVariable("Homing", "serviceDecomposition", timeout);
+ List<Resource> resourceList = decomp.getServiceResources();
+ if(resourceList.size() == 1){
+ String resourceId = "";
+ for(Resource resource:resourceList){
+ resourceId = resource.getResourceId();
+ }
+ String homingList = getJsonValue(content, "solutionInfo.placement");
+ JSONArray placementArr = new JSONArray(homingList);
+ if(placementArr.length() == 1){
+ content = content.replace("((SERVICE_RESOURCE_ID))", resourceId);
+ }
+ String licenseInfoList = getJsonValue(content, "solutionInfo.licenseInfo");
+ JSONArray licenseArr = new JSONArray(licenseInfoList);
+ if(licenseArr.length() == 1){
+ content = content.replace("((SERVICE_RESOURCE_ID))", resourceId);
+ }
+ }
+ }
+ }
+ System.out.println("Injecting " + messageType + " message");
+ WorkflowMessageResource workflowMessageResource = new WorkflowMessageResource();
+ workflowMessageResource.setProcessEngineServices4junit(processEngineRule);
+ Response response = workflowMessageResource.deliver(contentType, messageType, correlator, content);
+ System.out.println("Workflow response to " + messageType + " message: " + response);
+ return true;
+ }
+
+
+ /**
* Wait for the process to end.
* @param businessKey the process business key
* @param timeout the amount of time to wait, in milliseconds
@@ -1477,8 +1617,6 @@ public class WorkflowTest { }
/**
- * @author cb645j
- *
* Gets the value of a subflow variable from the specified subflow's
* historical process instance.
*
@@ -1517,8 +1655,6 @@ public class WorkflowTest { }
/**
- * @author cb645j
- *
* Gets the value of a subflow variable from the subflow's
* historical process x instance.
*
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/aai/AAIPServerTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/aai/AAIPServerTest.java new file mode 100644 index 0000000000..4011a8f7e7 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/aai/AAIPServerTest.java @@ -0,0 +1,45 @@ +package org.openecomp.mso.client.aai;
+
+import java.io.File;
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.util.List;
+import java.util.UUID;
+
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.aai.domain.yang.Pserver;
+import static org.junit.Assert.assertEquals;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+public class AAIPServerTest {
+
+ @BeforeClass
+ public static void setUp() {
+ System.setProperty("mso.config.path", "src/test/resources");
+ System.setProperty("javax.net.ssl.keyStore", "C:/etc/ecomp/mso/config/msoClientKeyStore.jks");
+ System.setProperty("javax.net.ssl.keyStorePassword", "mso4you");
+ System.setProperty("javax.net.ssl.trustStore", "C:/etc/ecomp/mso/config/msoTrustStore.jks");
+ System.setProperty("javax.net.ssl.trustStorePassword", "mso_Domain2.0_4you");
+ }
+
+ @Test
+ @Ignore // IGNORED FOR 1710 MERGE TO ONAP
+ public void pserverTest() throws JsonParseException, JsonMappingException, IOException, NoSuchAlgorithmException {
+ AAIRestClientImpl client = new AAIRestClientImpl();
+ File file = new File("src/test/resources/__files/AAI/pserver.json");
+ List<Pserver> list = client.getListOfPservers(file);
+
+ assertEquals("", list.get(0).getHostname(), "test");
+ }
+
+ @Test
+ @Ignore // IGNORED FOR 1710 MERGE TO ONAP
+ public void pserverActualTest() throws JsonParseException, JsonMappingException, IOException, NoSuchAlgorithmException {
+ AAIRestClientImpl client = new AAIRestClientImpl();
+ List<Pserver> list = client.getPhysicalServerByVnfId("d946afed-8ebe-4c5d-9665-54fcc043b8e7", UUID.randomUUID().toString());
+ assertEquals("", list.size(), 0);
+ }
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/aai/AAIValidatorTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/aai/AAIValidatorTest.java new file mode 100644 index 0000000000..bf1cb076e3 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/aai/AAIValidatorTest.java @@ -0,0 +1,80 @@ + +package org.openecomp.mso.client.aai; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.List; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; +import org.openecomp.aai.domain.yang.GenericVnf; +import org.openecomp.aai.domain.yang.Pserver; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; + +@RunWith(MockitoJUnitRunner.class) +public class AAIValidatorTest { + + @Mock + protected AAIRestClient client; + String vnfName = "testVnf"; + String uuid = "UUID"; + AAIValidatorImpl validator; + + @Before + public void init(){ + validator = new AAIValidatorImpl(); + validator.setClient(client); + } + + public List<Pserver> getPservers(boolean locked){ + Pserver pserver = new Pserver(); + pserver.setInMaint(locked); + List<Pserver> pservers = new ArrayList<Pserver>(); + pservers.add(pserver); + return pservers; + } + + public GenericVnf createGenericVnfs(boolean locked){ + GenericVnf genericVnf = new GenericVnf(); + genericVnf.setInMaint(locked); + + return genericVnf; + } + + @Test + public void test_IsPhysicalServerLocked_True() throws IOException{ + when(client.getPhysicalServerByVnfId(vnfName,uuid)).thenReturn(getPservers(true)); + boolean locked = validator.isPhysicalServerLocked(vnfName, uuid); + assertEquals(true, locked); + } + + @Test + public void test_IsPhysicalServerLocked_False() throws JsonParseException, JsonMappingException, UnsupportedEncodingException, IOException { + when(client.getPhysicalServerByVnfId(vnfName,uuid)).thenReturn(getPservers(false)); + boolean locked = validator.isPhysicalServerLocked(vnfName, uuid); + assertEquals(false, locked); + } + + @Test + public void test_IsVNFLocked_False() throws Exception{ + when(client.getVnfByName(vnfName,uuid)).thenReturn(createGenericVnfs(false)); + boolean locked = validator.isVNFLocked(vnfName, uuid); + assertEquals(false, locked); + } + + @Test + public void test_IsVNFLocked_True() throws Exception{ + when(client.getVnfByName(vnfName,uuid)).thenReturn(createGenericVnfs(true)); + boolean locked = validator.isVNFLocked(vnfName, uuid); + assertEquals(true,locked ); + } +} diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/aai/EntitiesTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/aai/EntitiesTest.java new file mode 100644 index 0000000000..beb457497e --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/aai/EntitiesTest.java @@ -0,0 +1,21 @@ +package org.openecomp.mso.client.aai; + +import org.junit.Test; +import com.openpojo.validation.Validator; +import com.openpojo.validation.ValidatorBuilder; +import com.openpojo.validation.rule.impl.GetterMustExistRule; +import com.openpojo.validation.rule.impl.SetterMustExistRule; +import com.openpojo.validation.test.impl.GetterTester; +import com.openpojo.validation.test.impl.SetterTester; + +public class EntitiesTest { + + private String packageName = "org.openecomp.mso.client.aai.entities"; + + @Test + public void validate() { + Validator validator = ValidatorBuilder.create().with(new SetterMustExistRule(), new GetterMustExistRule()) + .with(new SetterTester(), new GetterTester()).build(); + validator.validate(packageName); + } +} diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/appc/ApplicationControllerClientTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/appc/ApplicationControllerClientTest.java new file mode 100644 index 0000000000..3cc6b35b3a --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/appc/ApplicationControllerClientTest.java @@ -0,0 +1,78 @@ +package org.openecomp.mso.client.appc;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Properties;
+import java.util.UUID;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import org.openecomp.appc.client.lcm.model.Action;
+import org.openecomp.appc.client.lcm.model.ActionIdentifiers;
+import org.openecomp.appc.client.lcm.model.CheckLockInput;
+import org.openecomp.appc.client.lcm.model.Flags;
+import org.openecomp.appc.client.lcm.model.Status;
+
+public class ApplicationControllerClientTest {
+
+ private static ApplicationControllerClient client;
+ private static ApplicationControllerSupport support;
+
+ @BeforeClass
+ public static void beforeClass() {
+ client = new ApplicationControllerClient();
+ support = new ApplicationControllerSupport();
+ client.appCSupport = support;
+ System.setProperty("mso.config.path", "src/test/resources");
+
+ }
+
+ @AfterClass
+ public static void afterClass() throws Exception {
+ client.shutdownclient();
+ }
+
+ @Test
+ @Ignore // IGNORED FOR 1710 MERGE TO ONAP
+ public void createRequest_CheckLock_RequestBuilt() throws Exception {
+
+ org.springframework.test.util.ReflectionTestUtils.setField(support, "lcmModelPackage",
+ "org.openecomp.appc.client.lcm.model");
+ Flags flags = new Flags();
+ ActionIdentifiers actionIdentifiers = new ActionIdentifiers();
+ actionIdentifiers.setVnfId("vnfId");
+ CheckLockInput checkLockInput = (CheckLockInput) client.createRequest(Action.CheckLock, actionIdentifiers,
+ flags, null, "requestId");
+ assertEquals(checkLockInput.getAction().name(), "CheckLock");
+ }
+
+ @Test
+ @Ignore // IGNORED FOR 1710 MERGE TO ONAP
+ public void runCommand_liveAppc() throws Exception {
+ org.springframework.test.util.ReflectionTestUtils.setField(support, "lcmModelPackage",
+ "org.openecomp.appc.client.lcm.model");
+ Flags flags = new Flags();
+ ActionIdentifiers actionIdentifiers = new ActionIdentifiers();
+ actionIdentifiers.setVnfId("ca522254-2ba4-4fbd-b15b-0ef0d9cfda5f");
+
+ // CheckLockInput checkLockInput = (CheckLockInput)
+ // client.createRequest(Action.CheckLock,actionIdentifiers,flags,null,"requestId");
+ Status status = client.runCommand(Action.Lock, actionIdentifiers, flags, null, UUID.randomUUID().toString());
+ assertEquals("Status of run command is correct", status.getCode(), 306);
+ }
+
+ @Test
+ @Ignore // IGNORED FOR 1710 MERGE TO ONAP
+ public void runCommand_CheckLock_RequestBuilt() throws Exception {
+ org.springframework.test.util.ReflectionTestUtils.setField(support, "lcmModelPackage",
+ "org.openecomp.appc.client.lcm.model");
+ Flags flags = new Flags();
+ ActionIdentifiers actionIdentifiers = new ActionIdentifiers();
+ actionIdentifiers.setVnfId("fusion-vpp-vnf-001");
+ Status status = client.runCommand(Action.CheckLock, actionIdentifiers, flags, null, "requestId");
+ assertEquals("Status of run command is correct", status.getCode(), 400);
+ }
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/policy/PolicyDecisionTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/policy/PolicyDecisionTest.java new file mode 100644 index 0000000000..a369423ddc --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/policy/PolicyDecisionTest.java @@ -0,0 +1,50 @@ +package org.openecomp.mso.client.policy; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.util.Map; + +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +public class PolicyDecisionTest { + + @BeforeClass + public static void setUp() { + System.setProperty("mso.config.path", "src/test/resources"); + } + @Test + public void successReadProperties() throws IOException, Exception { + PolicyRestClient client = new PolicyRestClient(); + Map<String, String> headerMap = client.headerMap; + + assertEquals("Found expected Client Auth", headerMap.get("ClientAuth"), "Basic bTAzNzQzOnBvbGljeVIwY2sk"); + assertEquals("Found expected Authorization", headerMap.get("Authorization"), "Basic dGVzdHBkcDphbHBoYTEyMw=="); + assertEquals("Found expected Environment", headerMap.get("Environment"), "TEST"); + assertEquals("Has X-ECOMP-RequestID", headerMap.containsKey("X-ECOMP-RequestID"), true); + } + + @Test + @Ignore // IGNORED FOR 1710 MERGE TO ONAP + public void restEndpointCall() throws IOException, Exception { + PolicyRestClient client = new PolicyRestClient(); + PolicyDecision decision = client.getDecision("X", "Y", "BB1", "1", "123"); + assertEquals("Decision is correct", decision.getDecision(), "PERMIT"); + assertEquals("Decision details is correct", decision.getDetails(), "Abort"); + } +/* + @Test + public void failure() throws IOException, Exception { + when(dmaapConsumer.getMRConsumer()).thenReturn(mrConsumer); + when(mrConsumer.fetch()) + .thenReturn(Arrays.asList(new String[] { getJson("response.json"), getJson("output-failure.json") })); + + SDNOValidatorImpl validator = new SDNOValidatorImpl(); + thrown.expect(SDNOException.class); + thrown.expectMessage("my message"); + boolean result = validator.pollForResponse(dmaapConsumer, "xyz123"); + + }*/ +} diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/Policy/policyAbortResponse.json b/bpmn/MSOCommonBPMN/src/test/resources/__files/Policy/policyAbortResponse.json new file mode 100644 index 0000000000..c315b1ed1d --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/Policy/policyAbortResponse.json @@ -0,0 +1 @@ +{"decision":"PERMIT","details":"Abort"}
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/Policy/policySkipResponse.json b/bpmn/MSOCommonBPMN/src/test/resources/__files/Policy/policySkipResponse.json new file mode 100644 index 0000000000..7cbdebb6b3 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/Policy/policySkipResponse.json @@ -0,0 +1 @@ +{"decision":"PERMIT","details":"Skip"}
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/aai/pserver.json b/bpmn/MSOCommonBPMN/src/test/resources/__files/aai/pserver.json new file mode 100644 index 0000000000..1a3f40aac3 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/aai/pserver.json @@ -0,0 +1,14 @@ +{ + "results": [ + { + "pserver": { + "hostname": "test" + } + }, + { + "pserver": { + "hostname": "test2" + } + } + ] +}
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/getCatalogServiceResourcesData.json b/bpmn/MSOCommonBPMN/src/test/resources/__files/getCatalogServiceResourcesData.json new file mode 100644 index 0000000000..a69d1b3622 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/getCatalogServiceResourcesData.json @@ -0,0 +1,57 @@ +{ + "serviceResources": { + "modelInfo": { + "modelName": "MOW AVPN vMX AV vPE Service", + "modelUuid": "b73c6911-be64-448a-bb4b-7b7a7006507a", + "modelInvariantUuid": "d48764b1-043d-4783-89e3-8816602dc833", + "modelVersion": "5.0" + }, + "serviceVnfs": [ + { + "modelInfo": { + "modelName": "MOW AVPN vMX AV vPE", + "modelUuid": "07bc0630-11d2-4c08-9c8f-75b036db1f4d", + "modelInvariantUuid": "31d077f6-356f-436e-b447-1997faff4c68", + "modelVersion": "3.0", + "modelCustomizationUuid": "16e5d513-1b96-4146-a325-af661d06eafd", + "modelInstanceName": "MOW AVPN vMX AV vPE 1" + }, + "toscaNodeType": null, + "nfFunction": null, + "nfType": null, + "nfRole": null, + "nfNamingCode": null, + "vfModules": [ + { + "modelInfo": { + "modelName": "MowAvpnVmxAvVpe..base_vRE_AV..module-0", + "modelUuid": "c91330e5-8e1a-459b-95ee-d682046cbeca", + "modelInvariantUuid": "f9f41064-cbe7-4e94-ac4c-93d9c54af317", + "modelVersion": "3", + "modelCustomizationUuid": "778c2ed5-77a8-426e-94fe-51a4d40199c3" + }, + "isBase": true, + "vfModuleLabel": "base_vRE_AV", + "initialCount": 1, + "hasVolumeGroup": true + }, + { + "modelInfo": { + "modelName": "MowAvpnVmxAvVpe..vPFE_AV..module-1", + "modelUuid": "ab5af099-03cb-4e74-92bf-44569099a666", + "modelInvariantUuid": "192faf79-7284-4a33-92d5-0be5b607ea43", + "modelVersion": "3", + "modelCustomizationUuid": "cb510af0-5b21-4bc7-86d9-323cb396ced3" + }, + "isBase": false, + "vfModuleLabel": "vPFE_AV", + "initialCount": 0, + "hasVolumeGroup": true + } + ] + } + ], + "serviceNetworks": [], + "serviceAllottedResources": [] + } +} diff --git a/bpmn/MSOCommonBPMN/src/test/resources/mso.bpmn.urn.properties b/bpmn/MSOCommonBPMN/src/test/resources/mso.bpmn.urn.properties index 1ac75e9456..c764c7f04e 100644 --- a/bpmn/MSOCommonBPMN/src/test/resources/mso.bpmn.urn.properties +++ b/bpmn/MSOCommonBPMN/src/test/resources/mso.bpmn.urn.properties @@ -9,9 +9,12 @@ mso.csi.pwd=4EA237303511EFBBC37F17A351562131 mso.csi.usrname=mso
mso.msoKey=07a7159d3bf51a0e53be7a8f89699be7
+mso.healthcheck.log.debug=false
+
mso.adapters.completemsoprocess.endpoint=http://localhost:28090/CompleteMsoProcess
mso.adapters.db.endpoint=http://localhost:28090/dbadapters/RequestsDbAdapter
+mso.openecomp.adapters.db.endpoint=http://localhost:28090/dbadapters/RequestsDbAdapter
mso.adapters.db.auth=757A94191D685FD2092AC1490730A4FC
mso.adapters.network.endpoint=http://localhost:28090/networks/NetworkAdapter
@@ -20,8 +23,22 @@ mso.adapters.network.rest.endpoint=http://localhost:28090/networks/NetworkAdapte mso.adapters.po.auth=757A94191D685FD2092AC1490730A4FC
mso.adapters.po.password=3141634BF7E070AA289CF2892C986C0B
mso.po.timeout=PT60S
+mso.default.adapter.namespace=http://org.openecomp.mso
+
+aai.auth=26AFB797A6A57960D5D718491925C50F77CDC22AC394B3DBA09950D8FD1C0764
-aai.auth=757A94191D685FD2092AC1490730A4FC
+policy.endpoint=https://mtanjvsgcvm02.nvp.cip.att.com:8081/pdp/api/getDecision
+policy.client.auth=Basic bTAzNzQzOnBvbGljeVIwY2sk
+policy.auth=Basic dGVzdHBkcDphbHBoYTEyMw==
+policy.environment=TEST
+
+appc.topic.read=APPC-CL-FUSION-LCM-RESPONSE
+appc.topic.read.timeout=60000
+appc.client.response.timeout=3600000
+appc.topic.write=APPC-CL-FUSION-LCM
+appc.pool.members=uebsb91bodc.it.openecomp.org:3904,uebsb92bodc.it.openecomp.org:3904,uebsb93bodc.it.openecomp.org:3904
+appc.client.key=iaEMAfjsVsZnraBP
+appc.client.secret=wcivUjsjXzmGFBfxMmyJu9dz
mso.adapters.sdnc.endpoint=http://localhost:28090/SDNCAdapter
mso.adapters.sdnc.rest.endpoint=http://localhost:28090/SDNCAdapter/v1/sdnc
@@ -90,4 +107,9 @@ log.debug.GenericDeleteService=true log.debug.GenericDeleteNetwork=true
log.debug.GenericDeleteVnf=true
log.debug.vnfAdapterCreateV1=true
-log.debug.vnfAdapterRestV1=true +log.debug.vnfAdapterRestV1=true
+
+policyClientAuth=Basic bTAzNzQzOnBvbGljeVIwY2sk
+policyAuth=Basic dGVzdHBkcDphbHBoYTEyMw==
+policyEnvironment=TEST
+policyEndpoint=localhost:8080/pdp/api/getDecision
diff --git a/bpmn/MSOCoreBPMN/pom.xml b/bpmn/MSOCoreBPMN/pom.xml index 29ea1b6e01..33e5a96de5 100644 --- a/bpmn/MSOCoreBPMN/pom.xml +++ b/bpmn/MSOCoreBPMN/pom.xml @@ -53,12 +53,6 @@ </build> <dependencies> - <dependency> - <groupId>org.evosuite</groupId> - <artifactId>evosuite-standalone-runtime</artifactId> - <version>${evosuiteVersion}</version> - <scope>test</scope> - </dependency> <dependency> <groupId>org.camunda.bpm</groupId> <artifactId>camunda-engine</artifactId> @@ -174,4 +168,4 @@ <version>${project.version}</version> </dependency> </dependencies> -</project>
\ No newline at end of file +</project> diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/BaseTask.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/BaseTask.java index 5b43c3fc07..dea2fa7c5e 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/BaseTask.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/BaseTask.java @@ -20,9 +20,6 @@ package org.openecomp.mso.bpmn.core; -import java.util.Objects; - -import org.camunda.bpm.engine.ProcessEngineException; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.camunda.bpm.engine.delegate.Expression; import org.camunda.bpm.engine.delegate.JavaDelegate; @@ -30,7 +27,7 @@ import org.camunda.bpm.engine.delegate.JavaDelegate; /** * Base class for service tasks. */ -public abstract class BaseTask implements JavaDelegate { +public class BaseTask implements JavaDelegate { /** * Get the value of a required field. This method throws @@ -188,7 +185,13 @@ public abstract class BaseTask implements JavaDelegate { protected String getOptionalStringField(Expression expression, DelegateExecution execution, String fieldName) { Object o = getFieldImpl(expression, execution, fieldName, true); - return Objects.toString(o, null); + if (o instanceof String) { + return (String) o; + } else if (o == null) { + return null; + } else { + return o.toString(); + } } /** @@ -524,14 +527,6 @@ public abstract class BaseTask implements JavaDelegate { return getClass().getSimpleName(); } - - /** - * Check if shouldFail variable is set to true. - * @param execution - * @return - */ - protected boolean shouldFail(DelegateExecution execution) { - Boolean shouldFail = (Boolean) execution.getVariable("shouldFail"); - return shouldFail != null && shouldFail; - } + @Override + public void execute(DelegateExecution execution) throws Exception { } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/HealthCheckHandler.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/HealthCheckHandler.java index 409297c927..40ef11d347 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/HealthCheckHandler.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/HealthCheckHandler.java @@ -20,28 +20,12 @@ package org.openecomp.mso.bpmn.core; -import org.apache.http.client.config.RequestConfig; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.HttpResponse; -import org.apache.http.HttpStatus; -import org.apache.http.HttpEntity; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.entity.StringEntity; - import java.io.BufferedReader; -import java.io.InputStream; import java.io.InputStreamReader; import java.util.Base64; import java.util.Map; -import java.util.Properties; import java.util.UUID; -import org.openecomp.mso.logger.MsoLogger; -import org.openecomp.mso.utils.UUIDChecker; -import org.openecomp.mso.HealthCheckUtils; -import org.openecomp.mso.logger.MessageEnum; -import org.openecomp.mso.utils.CryptoUtils; import javax.ws.rs.GET; import javax.ws.rs.HEAD; import javax.ws.rs.Path; @@ -49,19 +33,32 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; import org.camunda.bpm.engine.ProcessEngines; +import org.openecomp.mso.HealthCheckUtils; +import org.openecomp.mso.logger.MessageEnum; +import org.openecomp.mso.logger.MsoLogger; +import org.openecomp.mso.utils.CryptoUtils; +import org.openecomp.mso.utils.UUIDChecker; @Path("/") public class HealthCheckHandler { private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL); private static final String SITENAME = "mso.sitename"; - private static final String ADPTER_ENDPOINT = "mso.adapters.db.endpoint"; + private static final String ADPTER_ENDPOINT = "mso.openecomp.adapters.db.endpoint"; + private static final String OPENECOMP_ADAPTER_NAMESPACE = "mso.openecomp.adapter.namespace"; private static final String CONFIG = "mso.bpmn.urn.properties"; - private static final String PENGINE_PROPERTY = "processengine.properties"; - private static final String PENGINE_PARAM = "processEngineName"; private static final String CREDENTIAL = "mso.adapters.db.auth"; private static final String MSOKEY = "mso.msoKey"; + private String healthcheckDebugEnabled = "mso.healthcheck.log.debug"; private static final String CHECK_HTML = "<!DOCTYPE html><html><head><meta charset=\"ISO-8859-1\"><title>Health Check</title></head><body>Application ready</body></html>"; private static final String NOT_FOUND = "<!DOCTYPE html><html><head><meta charset=\"ISO-8859-1\"><title>Application Not Started</title></head><body>Application not started. Properties file missing or invalid or database Connection failed</body></html>"; @@ -106,7 +103,7 @@ public class HealthCheckHandler { } try { - if (!this.getSiteStatus (endpoint, siteName, props.get(CREDENTIAL), props.get(MSOKEY))) { + if (!this.getSiteStatus (endpoint, siteName, props.get(CREDENTIAL), props.get(MSOKEY), props.get(OPENECOMP_ADAPTER_NAMESPACE))) { msoLogger.debug("This site is currently disabled for maintenance."); return HEALTH_CHECK_NOK_RESPONSE; } @@ -158,7 +155,7 @@ public class HealthCheckHandler { } try { - if (!this.getSiteStatus (endpoint, siteName, props.get(CREDENTIAL), props.get(MSOKEY))) { + if (!this.getSiteStatus (endpoint, siteName, props.get(CREDENTIAL), props.get(MSOKEY), props.get(OPENECOMP_ADAPTER_NAMESPACE))) { msoLogger.debug("This site is currently disabled for maintenance."); return HEALTH_CHECK_NOK_RESPONSE; } @@ -171,13 +168,7 @@ public class HealthCheckHandler { } try { - InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(PENGINE_PROPERTY); - Properties prop = new Properties(); - prop.load(stream); - String [] engineNames = prop.getProperty(PENGINE_PARAM).split(","); - for (String engine : engineNames) { - ProcessEngines.getProcessEngine(engine).getIdentityService().createGroupQuery().list(); - } + ProcessEngines.getDefaultProcessEngine().getIdentityService().createGroupQuery().list(); } catch (final Exception e) { msoLogger.error(MessageEnum.GENERAL_EXCEPTION_ARG, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception while verifying Camunda engine", e); @@ -224,7 +215,7 @@ public class HealthCheckHandler { return null; } - private boolean getSiteStatus (String url, String site, String credential, String key) throws Exception { + private boolean getSiteStatus (String url, String site, String credential, String key, String adapterNamespace) throws Exception { // set the connection timeout value to 30 seconds (30000 milliseconds) RequestConfig.Builder requestBuilder = RequestConfig.custom(); requestBuilder = requestBuilder.setConnectTimeout(30000); @@ -238,12 +229,15 @@ public class HealthCheckHandler { if (cred != null && !cred.isEmpty()) { post.setHeader("Authorization", "Basic " + Base64.getEncoder().encodeToString(cred.getBytes())); } - msoLogger.debug("Post url is: " + url); + if(healthcheckDebugEnabled == null){ + healthcheckDebugEnabled = "false"; + } + BPMNLogger.debug(healthcheckDebugEnabled, "Post url is: " + url); //now create a soap request message as follows: final StringBuffer payload = new StringBuffer(); payload.append("\n"); - payload.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:req=\"http://org.openecomp.mso/requestsdb\">\n"); + payload.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:req=\"" + adapterNamespace + "/requestsdb\">\n"); payload.append("<soapenv:Header/>\n"); payload.append("<soapenv:Body>\n"); payload.append("<req:getSiteStatus>\n"); @@ -252,14 +246,14 @@ public class HealthCheckHandler { payload.append("</soapenv:Body>\n"); payload.append("</soapenv:Envelope>\n"); - msoLogger.debug ("Initialize SOAP request to url:" + url); - msoLogger.debug ("The payload of the request is:" + payload); + BPMNLogger.debug(healthcheckDebugEnabled, "Initialize SOAP request to url:" + url); + BPMNLogger.debug(healthcheckDebugEnabled, "The payload of the request is:" + payload); HttpEntity entity = new StringEntity(payload.toString(),"UTF-8"); post.setEntity(entity); CloseableHttpClient client = builder.build (); HttpResponse response = client.execute(post); - msoLogger.debug("Response received is:" + response); + BPMNLogger.debug(healthcheckDebugEnabled, "Response received is:" + response); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode != 200) { @@ -278,7 +272,7 @@ public class HealthCheckHandler { while ((line = rd.readLine()) != null) { result.append(line); } - msoLogger.debug("Content of the response is:" + result); + BPMNLogger.debug(healthcheckDebugEnabled, "Content of the response is:" + result); String status = result.substring(result.indexOf("<return>") + 8, result.indexOf("</return>")); client.close (); //shut down the connection diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadConfigTask.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadConfigTask.java index 09288f0cff..b46ffcd7f7 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadConfigTask.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadConfigTask.java @@ -27,6 +27,7 @@ import java.util.Properties; import org.camunda.bpm.engine.ProcessEngineException; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.camunda.bpm.engine.delegate.Expression; + import org.openecomp.mso.logger.MsoLogger; /** @@ -56,20 +57,38 @@ public class ReadConfigTask extends BaseTask { msoLogger.debug("propertiesFile = " + thePropertiesFile); } - if (shouldFail(execution)) { - throw new ProcessEngineException(getTaskName() + " Failed"); - } + Boolean shouldFail = (Boolean) execution.getVariable("shouldFail"); + + if (shouldFail != null && shouldFail) { + throw new ProcessEngineException(getClass().getSimpleName() + " Failed"); + } synchronized (ReadConfigTask.class) { if (properties == null) { properties = new Properties(); - try(InputStream stream = getClass().getResourceAsStream(thePropertiesFile)) { + InputStream stream = null; + + try { + stream = getClass().getResourceAsStream(thePropertiesFile); + if (stream == null) { throw new IOException("Resource not found: " + thePropertiesFile); } properties.load(stream); + + stream.close(); + stream = null; + + } finally { + if (stream != null) { + try { + stream.close(); + } catch (Exception e) { + // Do nothing + } + } } } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadFileTask.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadFileTask.java index 3adba195ea..389fdc0518 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadFileTask.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadFileTask.java @@ -24,11 +24,11 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.util.stream.Collectors; import org.camunda.bpm.engine.ProcessEngineException; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.camunda.bpm.engine.delegate.Expression; + import org.openecomp.mso.logger.MsoLogger; /** @@ -66,21 +66,45 @@ public class ReadFileTask extends BaseTask { + "file = " + theFile); } - if (shouldFail(execution)) { - throw new ProcessEngineException(getTaskName() + " Failed"); - } + Boolean shouldFail = (Boolean) execution.getVariable("shouldFail"); + + if (shouldFail != null && shouldFail) { + throw new ProcessEngineException(getClass().getSimpleName() + " Failed"); + } Object value = execution.getVariable(theInputVariable); if (value == null) { - try(InputStream xmlStream = getClass().getResourceAsStream(theFile)) { + InputStream xmlStream = null; + + try { + xmlStream = getClass().getResourceAsStream(theFile); if (xmlStream == null) { throw new IOException("Resource not found: " + theFile); } BufferedReader reader = new BufferedReader(new InputStreamReader(xmlStream)); - value = reader.lines().collect(Collectors.joining()); + StringBuilder output = new StringBuilder(); + String line; + + while ((line = reader.readLine()) != null) { + output.append(line); + } + + xmlStream.close(); + xmlStream = null; + + value = output.toString(); + + } finally { + if (xmlStream != null) { + try { + xmlStream.close(); + } catch (Exception e) { + // Do nothing + } + } } } execution.setVariable(theInputVariable, value); diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/XQueryScriptTask.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/XQueryScriptTask.java index e42806e95e..31da7376be 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/XQueryScriptTask.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/XQueryScriptTask.java @@ -25,6 +25,7 @@ import java.io.IOException; import java.io.InputStream;
import java.math.BigDecimal;
import java.net.URI;
+import java.util.Iterator;
import javax.xml.transform.stream.StreamSource;
@@ -32,6 +33,7 @@ import org.camunda.bpm.engine.ProcessEngineException; import org.camunda.bpm.engine.delegate.DelegateExecution;
//import java.util.logging.Logger;
import org.camunda.bpm.engine.delegate.Expression;
+
import org.openecomp.mso.logger.MessageEnum;
import org.openecomp.mso.logger.MsoLogger;
@@ -95,9 +97,11 @@ public class XQueryScriptTask extends BaseTask { String[] atomicInputVariableArray = (theAtomicInputVariables == null)
? new String[0] : theAtomicInputVariables.split(",[ ]*");
- if (shouldFail(execution)) {
- throw new ProcessEngineException(getTaskName() + " Failed");
- }
+ Boolean shouldFail = (Boolean) execution.getVariable("shouldFail");
+
+ if (shouldFail != null && shouldFail) {
+ throw new ProcessEngineException(getClass().getSimpleName() + " Failed");
+ }
// The script could be compiled once and reused, but we are reading it
// and compiling it every time.
@@ -186,7 +190,9 @@ public class XQueryScriptTask extends BaseTask { // Evaluate the query and collect the output.
StringBuilder output = new StringBuilder();
- for(XdmItem item : evaluator) {
+ Iterator<XdmItem> xdmItems = evaluator.iterator();
+ while (xdmItems.hasNext()) {
+ XdmItem item = xdmItems.next();
if (msoLogger.isDebugEnabled()) {
msoLogger.debug("XQuery result item = " + item);
@@ -212,13 +218,26 @@ public class XQueryScriptTask extends BaseTask { */
private XQueryExecutable compile(XQueryCompiler compiler, String resource)
throws Exception {
- try(InputStream xqStream = getClass().getResourceAsStream(resource)) {
+ InputStream xqStream = null;
+ try {
+ xqStream = getClass().getResourceAsStream(resource);
if (xqStream == null) {
throw new IOException("Resource not found: " + resource);
}
- return compiler.compile(xqStream);
+ XQueryExecutable executable = compiler.compile(xqStream);
+ xqStream.close();
+ xqStream = null;
+ return executable;
+ } finally {
+ if (xqStream != null) {
+ try {
+ xqStream.close();
+ } catch (Exception e) {
+ // Do nothing
+ }
+ }
}
}
}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/AllottedResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/AllottedResource.java deleted file mode 100644 index c7d2ed9583..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/AllottedResource.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition;
-
-import org.codehaus.jackson.map.annotate.JsonRootName;
-
-@JsonRootName("allottedResource")
-public class AllottedResource extends ResourceDecomposition {
-
- private static final long serialVersionUID = 1L;
-
- /*
- * set resourceType for this object
- */
- public AllottedResource(){
- resourceType = "allottedResource";
- }
-
- /*
- * fields specific to VNF resource type
- */
- private String allottedResourceType;
- private String allottedResourceRole;
-
- /*
- * GET and SET
- */
- public String getAllottedResourceType() {
- return allottedResourceType;
- }
- public void setAllottedResourceType(String allottedResourceType) {
- this.allottedResourceType = allottedResourceType;
- }
- public String getAllottedResourceRole() {
- return allottedResourceRole;
- }
- public void setAllottedResourceRole(String allottedResourceRole) {
- this.allottedResourceRole = allottedResourceRole;
- }
-}
diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/HomingSolution.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/HomingSolution.java deleted file mode 100644 index f6c1ad917f..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/HomingSolution.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition;
-
-import java.io.Serializable;
-import java.util.List;
-
-public class HomingSolution extends JsonWrapper implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private String infraServiceInstanceId;
- private String aicCloudRegionId;
- private String ucpeId;
- private List<String> entitlementPool;
- private List<String> entitlementKeyGroup;
-
- /*
- * GET && SET
- */
- public String getInfraServiceInstanceId() {
- return infraServiceInstanceId;
- }
- public void setInfraServiceInstanceId(String infraServiceInstanceId) {
- this.infraServiceInstanceId = infraServiceInstanceId;
- }
- public String getAicCloudRegionId() {
- return aicCloudRegionId;
- }
- public void setAicCloudRegionId(String aicCloudRegionId) {
- this.aicCloudRegionId = aicCloudRegionId;
- }
- public String getUcpeId() {
- return ucpeId;
- }
- public void setUcpeId(String ucpeId) {
- this.ucpeId = ucpeId;
- }
- public List<String> getEntitlementPool() {
- return entitlementPool;
- }
- public void setEntitlementPool(List<String> entitlementPool) {
- this.entitlementPool = entitlementPool;
- }
- public List getEntitlementKeyGroup() {
- return entitlementKeyGroup;
- }
- public void setEntitlementKeyGroup(List entitlementKeyGroup) {
- this.entitlementKeyGroup = entitlementKeyGroup;
- }
-}
diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/NetworkResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/NetworkResource.java deleted file mode 100644 index 16d1010633..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/NetworkResource.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition;
-
-import org.codehaus.jackson.map.annotate.JsonRootName;
-
-
-/**
- * Encapsulates Network resource data set
- * @author
- *
- */
-@JsonRootName("networkResource")
-public class NetworkResource extends ResourceDecomposition {
-
- private static final long serialVersionUID = 1L;
- /*
- * set resourceType for this object
- */
- public NetworkResource(){
- resourceType = "networkResource";
- }
- /*
- * fields specific to VNF resource type
- */
- private String networkType;
- private String networkRole;
-
- /*
- * GET and SET
- */
- public String getNetworkType() {
- return networkType;
- }
- public void setNetworkType(String networkType) {
- this.networkType = networkType;
- }
- public String getNetworkRole() {
- return networkRole;
- }
- public void setNetworkRole(String networkRole) {
- this.networkRole = networkRole;
- }
-}
diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ServiceDecomposition.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ServiceDecomposition.java deleted file mode 100644 index 00ba091677..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ServiceDecomposition.java +++ /dev/null @@ -1,159 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition;
-
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.map.annotate.JsonRootName;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-import org.json.JSONObject;
-
-
-
-/**
- * Service Decomposition Structure
- * This Java object contains service information:
- * - Service model info
- * - list of VNF resource's decompositon
- * - list of network resource's decompositon
- * - list of allotted resource's decompositon
- */
-@JsonRootName(value = "serviceResources")
-//@JsonTypeInfo(include=As.WRAPPER_OBJECT, use=Id.NAME)
-public class ServiceDecomposition extends JsonWrapper implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- @JsonProperty("modelInfo")
- private ModelInfo modelInfo;
- private ServiceInstanceData serviceInstanceData;
- @JsonProperty("vnfResource")
- private List <VnfResource> vnfResources;
- @JsonProperty("networkResource")
- private List <NetworkResource> networkResources;
- @JsonProperty("allottedResource")
- private List <AllottedResource> allottedResources;
-
- public ServiceDecomposition () {
- super();
- }
-
- public ServiceDecomposition (ModelInfo modelInfo, ServiceInstanceData serviceInstanceData, List <VnfResource> vnfResources, List <NetworkResource> networkResources, List <AllottedResource> allottedResources ) {
- //TODO provide constructor implementation
-// this.modelInfo = modelInfo;
-// this.serviceInstanceData = serviceInstanceData;
-// this.vnfResources = vnfResources;
-// this.networkResources = networkResources;
-// this.allottedResources = allottedResources;
-
- }
-
- public ServiceDecomposition (String catalogRestOutput, String serviceInstanceId) {
- //TODO provide constructor implementation
-
- this.modelInfo = this.JsonToServiceDecomposition(catalogRestOutput).getModelInfo();
- this.vnfResources = this.JsonToServiceDecomposition(catalogRestOutput).getServiceVnfs();
- this.allottedResources = this.JsonToServiceDecomposition(catalogRestOutput).getServiceAllottedResources();
- this.networkResources = this.JsonToServiceDecomposition(catalogRestOutput).getServiceNetworks();
- this.serviceInstanceData = new ServiceInstanceData();
- this.serviceInstanceData.setInstanceId(serviceInstanceId);
- }
- public ServiceDecomposition (JSONObject catalogRestOutput, String serviceInstanceId) {
- //TODO provide constructor implementation
- }
- //GET and SET
- public ModelInfo getModelInfo() {
- return modelInfo;
- }
- public void setModelInfo(ModelInfo modelInfo) {
- this.modelInfo = modelInfo;
- }
- public ServiceInstanceData getServiceInstanceData() {
- return serviceInstanceData;
- }
- public void setServiceInstanceData(ServiceInstanceData serviceInstanceData) {
- this.serviceInstanceData = serviceInstanceData;
- }
- public List<VnfResource> getServiceVnfs() {
- return vnfResources;
- }
- public void setServiceVnfs(List<VnfResource> vnfResources) {
- this.vnfResources = vnfResources;
- }
- public List<NetworkResource> getServiceNetworks() {
- return networkResources;
- }
- public void setServiceNetworks(List<NetworkResource> networkResources) {
- this.networkResources = networkResources;
- }
- public List<AllottedResource> getServiceAllottedResources() {
- return allottedResources;
- }
- public void setServiceAllottedResources(List<AllottedResource> allottedResources) {
- this.allottedResources = allottedResources;
- }
-
- // methods to add to the list
- public void addVnfResource(VnfResource vnfResource) {
- if (vnfResources == null){
- vnfResources = new ArrayList<VnfResource>();
- }
- this.vnfResources.add(vnfResource);
- }
- public void addNetworkResource(NetworkResource networkResource) {
- if (networkResources == null){
- networkResources = new ArrayList<NetworkResource>();
- }
- this.networkResources.add(networkResource);
- }
- public void addAllottedResource(AllottedResource allottedResource) {
- if (allottedResources == null){
- allottedResources = new ArrayList<AllottedResource>();
- }
- this.allottedResources.add(allottedResource);
- }
-
-// //TODO - IF NEEDED, update below methods to return one resource decomposition by (?) ID, not index - used temporarily
-// public VnfResource getnfResource(int index) {
-//
-//// Iterator<VnfResource> iter = vnfResources.iterator();
-//// while (iter.hasNext()) {
-//// VnfResource vnfResource = iter.next();
-//// vnfResource.getModelInfo().getModelInvariantId();
-//// }
-// return this.vnfResources.get(index);
-// }
-// public NetworkResource getNetworkResource( int index) {
-// return this.networkResources.get(index);
-// }
-// public AllottedResource getAllottedResource(int index) {
-// return this.allottedResources.get(index);
-// }
-
- @JsonIgnore
- public List<ResourceDecomposition> getServiceResources(){
- ArrayList serviceResources = new ArrayList();
- serviceResources.addAll(this.getServiceNetworks());
- serviceResources.addAll(this.getServiceVnfs());
- serviceResources.addAll(this.getServiceAllottedResources());
- return serviceResources;
- }
-
- @JsonIgnore
- public String getServiceResourcesJsonString(){
- StringBuffer serviceResourcesJsonStringBuffer = new StringBuffer();
- serviceResourcesJsonStringBuffer.append(listToJson((this.getServiceNetworks())));
- serviceResourcesJsonStringBuffer.append(listToJson((this.getServiceVnfs())));
- serviceResourcesJsonStringBuffer.append(listToJson((this.getServiceAllottedResources())));
- return serviceResourcesJsonStringBuffer.toString();
- }
-
- //return String representation of JSON
- @Override
- public String toString(){
- return "string representation";
- }
-
-}
diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/AllottedResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/AllottedResource.java new file mode 100644 index 0000000000..562a4d8124 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/AllottedResource.java @@ -0,0 +1,78 @@ +package org.openecomp.mso.bpmn.core.domain;
+
+import java.util.UUID;
+
+import com.fasterxml.jackson.annotation.JsonRootName;
+
+
+@JsonRootName("allottedResource")
+public class AllottedResource extends Resource {
+
+ private static final long serialVersionUID = 1L;
+
+ /*
+ * set resourceType for this object
+ */
+ public AllottedResource(){
+ resourceType = ResourceType.ALLOTTED_RESOURCE;
+ setResourceId(UUID.randomUUID().toString());
+ }
+
+ /*
+ * fields specific to Allotted Resource resource type
+ */
+ private String allottedResourceType;
+ private String allottedResourceRole;
+ private String providingServiceModelInvariantUuid;
+ private String nfFunction;
+ private String nfType;
+ private String nfRole;
+ private String nfNamingCode;
+
+ /*
+ * GET and SET
+ */
+ public String getAllottedResourceType() {
+ return allottedResourceType;
+ }
+ public void setAllottedResourceType(String allottedResourceType) {
+ this.allottedResourceType = allottedResourceType;
+ }
+ public String getAllottedResourceRole() {
+ return allottedResourceRole;
+ }
+ public void setAllottedResourceRole(String allottedResourceRole) {
+ this.allottedResourceRole = allottedResourceRole;
+ }
+ public String getProvidingServiceModelInvariantUuid() {
+ return providingServiceModelInvariantUuid;
+ }
+ public void setProvidingServiceModelInvariantUuid(
+ String providingServiceModelInvariantUuid) {
+ this.providingServiceModelInvariantUuid = providingServiceModelInvariantUuid;
+ }
+ public String getNfFunction() {
+ return nfFunction;
+ }
+ public void setNfFunction(String nfFunction) {
+ this.nfFunction = nfFunction;
+ }
+ public String getNfType() {
+ return nfType;
+ }
+ public void setNfType(String nfType) {
+ this.nfType = nfType;
+ }
+ public String getNfRole() {
+ return nfRole;
+ }
+ public void setNfRole(String nfRole) {
+ this.nfRole = nfRole;
+ }
+ public String getNfNamingCode() {
+ return nfNamingCode;
+ }
+ public void setNfNamingCode(String nfNamingCode) {
+ this.nfNamingCode = nfNamingCode;
+ }
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/HomingSolution.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/HomingSolution.java new file mode 100644 index 0000000000..e0b0dcd367 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/HomingSolution.java @@ -0,0 +1,110 @@ +package org.openecomp.mso.bpmn.core.domain;
+
+import java.io.Serializable;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonRootName;
+
+@JsonRootName("homingSolution")
+public class HomingSolution extends JsonWrapper implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private InventoryType inventoryType;
+ private String serviceInstanceId;
+ private String vnfHostname;
+ private String cloudOwner;
+ private String cloudRegionId;
+ private String aicClli;
+ private String aicVersion;
+ private String ucpeId; //TODO Remove?
+ private List<String> entitlementPoolList;
+ private List<String> licenseKeyGroupList;
+
+
+ public InventoryType getInventoryType(){
+ return inventoryType;
+ }
+
+ public void setInventoryType(InventoryType inventoryType){
+ this.inventoryType = inventoryType;
+ }
+
+ public String getServiceInstanceId() {
+ return serviceInstanceId;
+ }
+
+ public void setServiceInstanceId(String serviceInstanceId) {
+ this.serviceInstanceId = serviceInstanceId;
+ }
+
+ public String getVnfHostname(){
+ return vnfHostname;
+ }
+
+ public void setVnfHostname(String vnfHostname){
+ this.vnfHostname = vnfHostname;
+ }
+
+
+ public String getCloudOwner(){
+ return cloudOwner;
+ }
+
+
+ public void setCloudOwner(String cloudOwner){
+ this.cloudOwner = cloudOwner;
+ }
+
+ public String getCloudRegionId() {
+ return cloudRegionId;
+ }
+
+ public void setCloudRegionId(String cloudRegionId) {
+ this.cloudRegionId = cloudRegionId;
+ }
+
+
+ public String getAicClli(){
+ return aicClli;
+ }
+
+
+ public void setAicClli(String aicClli){
+ this.aicClli = aicClli;
+ }
+
+
+ public String getAicVersion(){
+ return aicVersion;
+ }
+
+
+ public void setAicVersion(String aicVersion){
+ this.aicVersion = aicVersion;
+ }
+
+ public String getUcpeId(){
+ return ucpeId;
+ }
+
+ public void setUcpeId(String ucpeId){
+ this.ucpeId = ucpeId;
+ }
+
+ public List<String> getEntitlementPoolList(){
+ return entitlementPoolList;
+ }
+
+ public void setEntitlementPoolList(List<String> entitlementPoolList){
+ this.entitlementPoolList = entitlementPoolList;
+ }
+
+ public List<String> getLicenseKeyGroupList(){
+ return licenseKeyGroupList;
+ }
+
+ public void setLicenseKeyGroupList(List<String> licenseKeyGroupList){
+ this.licenseKeyGroupList = licenseKeyGroupList;
+ }
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/InventoryType.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/InventoryType.java new file mode 100644 index 0000000000..e30a7781eb --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/InventoryType.java @@ -0,0 +1,17 @@ +package org.openecomp.mso.bpmn.core.domain;
+
+public enum InventoryType{
+
+ cloud("CLOUD"),
+ service("SERVICE");
+
+ private String type;
+
+ private InventoryType(String type){
+ this.type = type;
+ }
+
+ public String type(){
+ return type;
+ }
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/JsonWrapper.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/JsonWrapper.java index dcc6852c4e..10e52d1b0d 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/JsonWrapper.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/JsonWrapper.java @@ -1,59 +1,59 @@ -package org.openecomp.mso.bpmn.core.decomposition;
+package org.openecomp.mso.bpmn.core.domain;
import java.io.IOException;
+import java.io.Serializable;
import java.util.List;
-import org.codehaus.jackson.JsonGenerationException;
-import org.codehaus.jackson.JsonParseException;
-import org.codehaus.jackson.map.JsonMappingException;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.ObjectWriter;
import org.json.JSONException;
import org.json.JSONObject;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
-import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.core.JsonGenerationException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
//import org.codehaus.jackson.map.SerializationConfig.Feature;
-import org.codehaus.jackson.map.DeserializationConfig.Feature;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
+
/**
* Wrapper encapsulates needed JSON functionality
* to be extended by MSO service decomposition objects
* providing ways to convert to and from JSON
- *
- * @author
*
*/
@JsonInclude(Include.NON_NULL)
-public abstract class JsonWrapper {
-
+public abstract class JsonWrapper implements Serializable {
+
@JsonInclude(Include.NON_NULL)
public String toJsonString(){
-
-
String jsonString = "";
//convert with Jackson
ObjectMapper mapper = new ObjectMapper();
- mapper.enable(org.codehaus.jackson.map.SerializationConfig.Feature.WRAP_ROOT_VALUE);
+ mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
- mapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
+ mapper.setSerializationInclusion(Include.NON_NULL);
ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
try {
jsonString = ow.writeValueAsString(this);
- } catch (JsonGenerationException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (JsonMappingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
+// } catch (JsonGenerationException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// } catch (JsonMappingException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// } catch (IOException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// }
+ } catch (Exception e){
+
e.printStackTrace();
}
return jsonString;
@@ -66,7 +66,7 @@ public abstract class JsonWrapper { // mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
//mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
- mapper.enable(org.codehaus.jackson.map.SerializationConfig.Feature.WRAP_ROOT_VALUE);
+ mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
// mapper.enable(org.codehaus.jackson.map.DeserializationConfig.Feature.UNWRAP_ROOT_VALUE);
JSONObject json = new JSONObject();
try {
@@ -89,7 +89,7 @@ public abstract class JsonWrapper { public String listToJson(List list) {
ObjectMapper mapper = new ObjectMapper();
- mapper.enable(org.codehaus.jackson.map.SerializationConfig.Feature.WRAP_ROOT_VALUE);
+ mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
String jsonString = "";
try {
@@ -104,37 +104,31 @@ public abstract class JsonWrapper { // TODO Auto-generated catch block
e.printStackTrace();
}
-
return jsonString;
}
- /**
- * Method to construct Service Decomposition object converting
- * JSON structure
- *
- * @param jsonString - input in JSON format confirming ServiceDecomposition
- * @return - ServiceDecomposition object
- */
- public ServiceDecomposition JsonToServiceDecomposition(String jsonString) {
-
- ServiceDecomposition serviceDecomposition = new ServiceDecomposition();
- ObjectMapper om = new ObjectMapper();
- om.configure(Feature.UNWRAP_ROOT_VALUE, true);
-
+ @JsonInclude(Include.NON_NULL)
+ public String toJsonStringNoRootName(){
+
+ String jsonString = "";
+ //convert with Jackson
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.setSerializationInclusion(Include.NON_NULL);
+
+ ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
try {
- serviceDecomposition = om.readValue(jsonString, ServiceDecomposition.class);
- } catch (JsonParseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (JsonMappingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
+ jsonString = ow.writeValueAsString(this);
+ } catch (Exception e){
+
e.printStackTrace();
}
-
- return serviceDecomposition;
+ return jsonString;
}
+ /**
+ * Returns a string representation of this object.
+ */
+ public String toString() {
+ return this.toJsonString();
+ }
}
diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ModelInfo.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ModelInfo.java index ecbb076d80..03dd69e1da 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ModelInfo.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ModelInfo.java @@ -1,29 +1,28 @@ -package org.openecomp.mso.bpmn.core.decomposition;
+package org.openecomp.mso.bpmn.core.domain;
import java.io.Serializable;
-import org.codehaus.jackson.map.annotate.JsonRootName;
+import com.fasterxml.jackson.annotation.JsonRootName;
@JsonRootName("modelInfo")
public class ModelInfo extends JsonWrapper implements Serializable {
/**
- *
+ * This is domain object defining structure for MODEL INFO
+ * It will be valid for each Resource type object
*/
private static final long serialVersionUID = 1L;
private String modelName = "";
private String modelUuid = "";
- private String modelInvariantId = "";
+ private String modelInvariantUuid = "";
private String modelVersion = "";
//additionally on resource level
private String modelCustomizationUuid = "";
private String modelInstanceName = "";
-
- //TODO - those were present in original "modelInfo" object structure. Confirm.
- private String modelCustomizationName = "";
- private String modelVersionId = "";
private String modelType = "";
+
+ //GET and SET methods
public String getModelName() {
return modelName;
@@ -37,11 +36,11 @@ public class ModelInfo extends JsonWrapper implements Serializable { public void setModelUuid(String modelUuid) {
this.modelUuid = modelUuid;
}
- public String getModelInvariantId() {
- return modelInvariantId;
+ public String getModelInvariantUuid() {
+ return modelInvariantUuid;
}
- public void setModelInvariantId(String modelInvariantId) {
- this.modelInvariantId = modelInvariantId;
+ public void setModelInvariantUuid(String modelInvariantUuid) {
+ this.modelInvariantUuid = modelInvariantUuid;
}
public String getModelVersion() {
return modelVersion;
@@ -61,41 +60,11 @@ public class ModelInfo extends JsonWrapper implements Serializable { public void setModelInstanceName(String modelInstanceName) {
this.modelInstanceName = modelInstanceName;
}
- public String getModelCustomizationName() {
- return modelCustomizationName;
- }
- public void setModelCustomizationName(String modelCustomizationName) {
- this.modelCustomizationName = modelCustomizationName;
- }
- public String getModelVersionId() {
- return modelVersionId;
- }
- public void setModelVersionId(String modelVersionId) {
- this.modelVersionId = modelVersionId;
- }
public String getModelType() {
return modelType;
}
public void setModelType(String modelType) {
this.modelType = modelType;
}
-
- //TODO add convenience methods
-
-
- //TODO - complete this manual
- public String toString(){
-
- String jsonString = "";
-
- //can try building manually
- jsonString = "{" +
- "\"modelName\":\"" + getModelName() + "\"," +
- "\"modelUuid\":\"" + getModelUuid() + "\"" +
- "\"modelInvariantId\":\"" + getModelInvariantId() + "\"" +
- "}";
-
- return jsonString;
- }
-}
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ModuleResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ModuleResource.java index 1c91f4e600..39cb839b90 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ModuleResource.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ModuleResource.java @@ -1,9 +1,9 @@ -package org.openecomp.mso.bpmn.core.decomposition;
+package org.openecomp.mso.bpmn.core.domain;
-import org.codehaus.jackson.map.annotate.JsonRootName;
+import com.fasterxml.jackson.annotation.JsonRootName;
@JsonRootName("vfModule")
-public class ModuleResource extends ResourceDecomposition {
+public class ModuleResource extends Resource {
private static final long serialVersionUID = 1L;
@@ -11,7 +11,7 @@ public class ModuleResource extends ResourceDecomposition { * set resourceType for this object
*/
public ModuleResource(){
- resourceType = "module";
+ resourceType = ResourceType.MODULE;
}
/*
@@ -57,4 +57,4 @@ public class ModuleResource extends ResourceDecomposition { this.hasVolumeGroup = hasVolumeGroup;
}
-}
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/NetworkResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/NetworkResource.java new file mode 100644 index 0000000000..31f997532f --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/NetworkResource.java @@ -0,0 +1,58 @@ +package org.openecomp.mso.bpmn.core.domain;
+
+import java.util.UUID;
+
+import com.fasterxml.jackson.annotation.JsonRootName;
+
+
+/**
+ * Encapsulates Network resource data set
+ *
+ */
+@JsonRootName("networkResource")
+public class NetworkResource extends Resource {
+
+ private static final long serialVersionUID = 1L;
+ /*
+ * set resourceType for this object
+ */
+ public NetworkResource(){
+ resourceType = ResourceType.NETWORK;
+ setResourceId(UUID.randomUUID().toString());
+ }
+ /*
+ * fields specific to Network resource type
+ */
+ private String networkType;
+ private String networkRole;
+ private String networkTechnology;
+ private String networkScope;
+
+ /*
+ * GET and SET
+ */
+ public String getNetworkType() {
+ return networkType;
+ }
+ public void setNetworkType(String networkType) {
+ this.networkType = networkType;
+ }
+ public String getNetworkRole() {
+ return networkRole;
+ }
+ public void setNetworkRole(String networkRole) {
+ this.networkRole = networkRole;
+ }
+ public String getNetworkTechnology() {
+ return networkTechnology;
+ }
+ public void setNetworkTechnology(String networkTechnology) {
+ this.networkTechnology = networkTechnology;
+ }
+ public String getNetworkScope() {
+ return networkScope;
+ }
+ public void setNetworkScope(String networkScope) {
+ this.networkScope = networkScope;
+ }
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/Resource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/Resource.java new file mode 100644 index 0000000000..4e6fedde9e --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/Resource.java @@ -0,0 +1,105 @@ +package org.openecomp.mso.bpmn.core.domain;
+
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+
+
+public abstract class Resource extends JsonWrapper implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+ private String resourceId;
+ protected ResourceType resourceType; // Enum of vnf or network or allotted resource
+ protected ModelInfo modelInfo;
+ private long concurrencyCounter = 1L;
+
+ //private List modules;
+ private ResourceInstance resourceInstance = new ResourceInstance(); // TODO possibly remove
+ private HomingSolution homingSolution = new HomingSolution(); // TODO maybe this instead of resourceInstance being "bridge"
+
+ //common parameters for all Resources
+ private String toscaNodeType;
+
+ // GET and SET
+ public String getResourceId() {
+ return resourceId;
+ }
+ public void setResourceId(String resourceId) {
+ this.resourceId = resourceId;
+ }
+ public ModelInfo getModelInfo() {
+ return modelInfo;
+ }
+ public void setModelInfo(ModelInfo modelInfo) {
+ this.modelInfo = modelInfo;
+ }
+
+ public ResourceInstance getResourceInstance() {
+ return resourceInstance;
+ }
+ public void setResourceInstance(ResourceInstance resourceInstance) {
+ this.resourceInstance = resourceInstance;
+ }
+ public HomingSolution getHomingSolution(){
+ return homingSolution;
+ }
+
+ public void setHomingSolution(HomingSolution homingSolution){
+ this.homingSolution = homingSolution;
+ }
+ public void setResourceType(ResourceType resourceType) {
+ this.resourceType = resourceType;
+ }
+
+ public ResourceType getResourceType(){
+ return resourceType;
+ }
+
+ public String getToscaNodeType() {
+ return toscaNodeType;
+ }
+ public void setToscaNodeType(String toscaNodeType) {
+ this.toscaNodeType = toscaNodeType;
+ }
+
+ //Utility methods
+
+ public String getResourceInstanceId() {
+ return this.getResourceInstance().getInstanceId();
+ }
+ public String getResourceInstanceName() {
+ return this.getResourceInstance().getInstanceName();
+ }
+ //TODO
+// @JsonIgnore
+// public String getResourceHomingSolution() {
+// }
+
+ public void setResourceInstanceId(String newInstanceId){
+ this.getResourceInstance().setInstanceId(newInstanceId);
+ }
+ public void setResourceInstanceName(String newInstanceName){
+ this.getResourceInstance().setInstanceName(newInstanceName);
+ }
+
+ //TODO
+// @JsonIgnore
+// public String setResourceHomingSolution() {
+// }
+ /**
+ * To be used by macro flow to increment concurrency counter after update to it's structure was completed
+ */
+ public void incrementConcurrencyCounter(){
+ this.concurrencyCounter ++;
+ }
+ /**
+ * Method to get concurrency counter data
+ * @return long value for the counter
+ */
+ @JsonIgnore
+ public long getConcurrencyCounter(){
+ return concurrencyCounter;
+ }
+
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ResourceDecomposition.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceDecomposition.java index ba01c8fc44..67e1906223 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ResourceDecomposition.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceDecomposition.java @@ -1,16 +1,12 @@ -package org.openecomp.mso.bpmn.core.decomposition;
+package org.openecomp.mso.bpmn.core.domain;
import java.io.Serializable;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonIgnoreProperties;
-import org.codehaus.jackson.map.annotate.JsonRootName;
+import com.fasterxml.jackson.annotation.JsonIgnore;
/**
* Abstract superclass for all individual decomposition resources
*
- * @author
- *
*/
//@JsonIgnoreProperties
public abstract class ResourceDecomposition extends JsonWrapper implements Serializable {
@@ -21,7 +17,7 @@ public abstract class ResourceDecomposition extends JsonWrapper implements Seri private ModelInfo modelInfo;
//private List modules;
- private InstanceData instanceData = new InstanceData();
+ private ResourceInstance instanceData = new ResourceInstance();
// GET and SET
public ModelInfo getModelInfo() {
@@ -31,10 +27,10 @@ public abstract class ResourceDecomposition extends JsonWrapper implements Seri this.modelInfo = modelInfo;
}
- public InstanceData getInstanceData() {
+ public ResourceInstance getInstanceData() {
return instanceData;
}
- public void setInstanceData(InstanceData instanceData) {
+ public void setInstanceData(ResourceInstance instanceData) {
this.instanceData = instanceData;
}
public void setResourceType(String resourceType) {
diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/InstanceData.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceInstance.java index 13e9f9ac00..85368963c1 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/InstanceData.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceInstance.java @@ -1,21 +1,26 @@ -package org.openecomp.mso.bpmn.core.decomposition;
+package org.openecomp.mso.bpmn.core.domain;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-@JsonIgnoreProperties
-public class InstanceData extends JsonWrapper implements Serializable {
+/**
+ * This class is used to store instance
+ * data of Resources
+ *
+ * @author cb645j
+ *
+ */
+//@JsonIgnoreProperties
+public class ResourceInstance extends JsonWrapper implements Serializable {
private static final long serialVersionUID = 1L;
-
+
private String instanceId;
private String instanceName;
private HomingSolution homingSolution;
-
- /*
- * GET && SET
- */
+
+
public String getInstanceId() {
return instanceId;
}
@@ -34,4 +39,4 @@ public class InstanceData extends JsonWrapper implements Serializable { public void setHomingSolution(HomingSolution homingSolution) {
this.homingSolution = homingSolution;
}
-}
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceType.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceType.java new file mode 100644 index 0000000000..85c41e0fc6 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceType.java @@ -0,0 +1,6 @@ +package org.openecomp.mso.bpmn.core.domain;
+
+public enum ResourceType {
+
+ VNF, NETWORK, MODULE, ALLOTTED_RESOURCE // etc.
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ServiceDecomposition.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ServiceDecomposition.java new file mode 100644 index 0000000000..4bee115411 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ServiceDecomposition.java @@ -0,0 +1,414 @@ +package org.openecomp.mso.bpmn.core.domain;
+
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonRootName;
+
+import org.json.JSONObject;
+import org.openecomp.mso.bpmn.core.json.DecomposeJsonUtil;
+
+
+
+/**
+ * Service Decomposition Structure
+ * This Java object contains service information:
+ * - Service model info
+ * - Service type and role
+ * - list of VNF resource's decompositon
+ * - list of network resource's decompositon
+ * - list of allotted resource's decompositon
+ */
+@JsonRootName(value = "serviceResources")
+//@JsonTypeInfo(include=As.WRAPPER_OBJECT, use=Id.NAME)
+public class ServiceDecomposition extends JsonWrapper implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+ DecomposeJsonUtil jsonUtils = new DecomposeJsonUtil();
+
+ @JsonProperty("modelInfo")
+ private ModelInfo modelInfo;
+ @JsonProperty("serviceType")
+ private String serviceType;
+ @JsonProperty("serviceRole")
+ private String serviceRole;
+ private ServiceInstance serviceInstance;
+ @JsonProperty("vnfResource")
+ private List <VnfResource> vnfResources;
+ @JsonProperty("networkResource")
+ private List <NetworkResource> networkResources;
+ @JsonProperty("allottedResource")
+ private List <AllottedResource> allottedResources;
+
+ public ServiceDecomposition () {
+ super();
+ }
+
+ public ServiceDecomposition (String catalogRestOutput) {
+
+ ServiceDecomposition serviceDecomposition = DecomposeJsonUtil.JsonToServiceDecomposition(catalogRestOutput);
+ this.modelInfo = serviceDecomposition.getModelInfo();
+ this.vnfResources = serviceDecomposition.getServiceVnfs();
+ this.allottedResources = serviceDecomposition.getServiceAllottedResources();
+ this.networkResources = serviceDecomposition.getServiceNetworks();
+ this.serviceRole = serviceDecomposition.getServiceRole();
+ this.serviceType = serviceDecomposition.getServiceType();
+ }
+
+ /**
+ * Constructor taking Catalog DB Adapter REST output (serviceResources model) + service Instance ID
+ * @param catalogRestOutput
+ * @param serviceInstanceId
+ */
+ public ServiceDecomposition (String catalogRestOutput, String serviceInstanceId) {
+
+ ServiceDecomposition serviceDecomposition = DecomposeJsonUtil.JsonToServiceDecomposition(catalogRestOutput);
+ this.modelInfo = serviceDecomposition.getModelInfo();
+ this.vnfResources = serviceDecomposition.getServiceVnfs();
+ this.allottedResources = serviceDecomposition.getServiceAllottedResources();
+ this.networkResources = serviceDecomposition.getServiceNetworks();
+
+ this.serviceRole = serviceDecomposition.getServiceRole();
+ this.serviceType = serviceDecomposition.getServiceType();
+
+ this.serviceInstance = new ServiceInstance();
+ this.serviceInstance.setInstanceId(serviceInstanceId);
+ }
+
+ /**
+ * Constructor taking a Service Decomposition JSON serialization
+ * @param catalogRestOutput
+ * @param serviceInstanceId
+ */
+ public ServiceDecomposition (JSONObject jsonServiceDecomposition, String serviceInstanceId) {
+ //TODO provide constructor implementation
+
+ }
+
+ //*****
+ //GET and SET section
+ /**
+ * Return just the service model portion of the Service Decomposition as a Java object.
+ * The service model object should support retrieval as JSON string that is formatted correctly for sending serviceModelInfo to Building Blocks.
+ * @return
+ */
+ public ModelInfo getModelInfo() {
+ return modelInfo;
+ }
+ public void setModelInfo(ModelInfo modelInfo) {
+ this.modelInfo = modelInfo;
+ }
+ public ServiceInstance getServiceInstance() {
+ return serviceInstance;
+ }
+ public void setServiceInstance(ServiceInstance serviceInstance) {
+ this.serviceInstance = serviceInstance;
+ }
+ public List<VnfResource> getServiceVnfs() {
+ return vnfResources;
+ }
+ public void setServiceVnfs(List<VnfResource> vnfResources) {
+ this.vnfResources = vnfResources;
+ }
+ public List<NetworkResource> getServiceNetworks() {
+ return networkResources;
+ }
+ public void setServiceNetworks(List<NetworkResource> networkResources) {
+ this.networkResources = networkResources;
+ }
+ public List<AllottedResource> getServiceAllottedResources() {
+ return allottedResources;
+ }
+ public void setServiceAllottedResources(List<AllottedResource> allottedResources) {
+ this.allottedResources = allottedResources;
+ }
+ public String getServiceType() {
+ return serviceType;
+ }
+
+ public void setServiceType(String serviceType) {
+ this.serviceType = serviceType;
+ }
+
+ public String getServiceRole() {
+ return serviceRole;
+ }
+
+ public void setServiceRole(String serviceRole) {
+ this.serviceRole = serviceRole;
+ }
+ //*****
+
+ //*****
+ //Access methods
+
+
+ /**
+ * This method returns one combined list of Resources of All Types
+ * @return
+ */
+ @JsonIgnore
+ public List<Resource> getServiceResources(){
+ ArrayList serviceResources = new ArrayList();
+ if(this.getServiceAllottedResources() != null){
+ serviceResources.addAll(this.getServiceAllottedResources());
+ }
+ if(this.getServiceNetworks() != null){
+ serviceResources.addAll(this.getServiceNetworks());
+ }
+ if(this.getServiceVnfs() != null){
+ serviceResources.addAll(this.getServiceVnfs());
+ }
+ return serviceResources;
+ }
+
+ /**
+ * This method returns String representation of one combined list of Resources of All Types
+ * @return
+ */
+ @JsonIgnore
+ public String getServiceResourcesJsonString(){
+ StringBuffer serviceResourcesJsonStringBuffer = new StringBuffer();
+ serviceResourcesJsonStringBuffer.append(listToJson((this.getServiceNetworks())));
+ serviceResourcesJsonStringBuffer.append(listToJson((this.getServiceVnfs())));
+ serviceResourcesJsonStringBuffer.append(listToJson((this.getServiceAllottedResources())));
+ return serviceResourcesJsonStringBuffer.toString();
+ }
+
+ /**
+ * Returns a JSON list of all Network Resource structures (i.e. the serialized NetworkDecomposition objects).
+ * @return
+ */
+ @JsonIgnore
+ public String getServiceNetworksJson(){
+ return listToJson(this.getServiceNetworks());
+ }
+ /**
+ * Returns a JSON list of all VnfResource structures (i.e. the serialized VnfResource objects).
+ * @return
+ */
+ @JsonIgnore
+ public String getServiceVnfsJson(){
+ return listToJson(this.getServiceVnfs());
+ }
+ /**
+ * Returns a JSON list of all Allotted Resource structures (i.e. the serialized AllottedResource objects).
+ * @return
+ */
+ @JsonIgnore
+ public String getServiceAllottedResourcesJson(){
+ return listToJson(this.getServiceAllottedResources());
+ }
+
+ //TODO - define Resource Object ID
+ @JsonIgnore
+ public String getVnfResource(String resourceObjectId) {
+
+ Iterator<Resource> iter = getServiceResources().iterator();
+ while (iter.hasNext()) {
+ Resource resource = iter.next();
+ //resource.getModelInfo().getModelInvariantId();
+
+ if (resourceObjectId.equals("extracted information")){
+ return resource.toJsonString();
+ }
+ }
+ return "";
+ }
+
+ //Methods to add Resource to the list
+ /**
+ * Add VNF resource to the list
+ * @param vnfResource
+ */
+ public void addVnfResource(Resource vnfResource) {
+ if (vnfResources == null){
+ vnfResources = new ArrayList<VnfResource>();
+ }
+ this.vnfResources.add((VnfResource)vnfResource);
+ }
+ /**
+ * Add Network resource to the list
+ * @param networkResource
+ */
+ public void addNetworkResource(Resource networkResource) {
+ if (networkResources == null){
+ networkResources = new ArrayList<NetworkResource>();
+ }
+ this.networkResources.add((NetworkResource)networkResource);
+ }
+ /**
+ * Add Allotted resource to the list
+ * @param allottedResource
+ */
+ public void addAllottedResource(Resource allottedResource) {
+ if (allottedResources == null){
+ allottedResources = new ArrayList<AllottedResource>();
+ }
+ this.allottedResources.add((AllottedResource)allottedResource);
+ }
+
+ /**
+ * Add resource to the list
+ * Given a ResourceDecomposition (subclass) object, add it to the Service Decomposition (in the appropriate category, e.g. as a VNF, Network, or Allotted Resource).
+ * As dependencies are not currently supported, add it to the end of any ordered lists.
+ * @param Resource
+ */
+ public void addResource(Resource resource) {
+ //create resource based upon type
+ switch (resource.resourceType) {
+ case VNF:
+ this.addVnfResource(resource);
+ break;
+ case NETWORK:
+ this.addNetworkResource(resource);
+ break;
+ case ALLOTTED_RESOURCE:
+ this.addAllottedResource(resource);
+ break;
+ default:
+ throw new IllegalArgumentException("Invalid resource type: " + resource.resourceType);
+ }
+ }
+
+ /**
+ * Add resource to the list
+ * @param Resource
+ */
+ public void addVnfResource(String jsonResource) {
+ VnfResource vnfResource = null;
+ vnfResource = DecomposeJsonUtil.JsonToVnfResource(jsonResource);
+ this.addVnfResource(vnfResource);
+ }
+ /**
+ * Add resource to the list
+ * @param Resource
+ */
+ public void addNetworkResource(String jsonResource) {
+ NetworkResource networkResource = null;
+ networkResource = DecomposeJsonUtil.JsonToNetworkResource(jsonResource);
+ this.addVnfResource(networkResource);
+ }
+ /**
+ * Add resource to the list
+ * @param Resource
+ */
+ public void addAllottedResource(String jsonResource) {
+ AllottedResource allottedResource = null;
+ allottedResource = DecomposeJsonUtil.JsonToAllottedResource(jsonResource);
+ this.addVnfResource(allottedResource);
+ }
+
+ /**
+ * Given a ResourceDecomposition (subclass) object, locate it in the Service Decomposition by its unique ID, and replace the current version with the new one.
+ * This method should support concurrency control via an auto-incrementing field in the ResourceDecomposition class.
+ * @param Resource
+ * @return TRUE if replacement was a success
+ */
+ public boolean replaceResource(Resource newResource){
+ boolean result = false;
+ List serviceResources = getServiceResources();
+ Iterator<Resource> iter = serviceResources.iterator();
+ while (iter.hasNext()) {
+ Resource resource = iter.next();
+ System.out.println("resource found");
+ if (resource.resourceType == newResource.resourceType){
+ System.out.println("resource type matches");
+ if (resource.getResourceId().equalsIgnoreCase(newResource.getResourceId())){
+ System.out.println("resource id matches");
+ //returns TRUE if replacement is a success
+ result = Collections.replaceAll(serviceResources, resource, newResource);
+ }
+ }
+ }
+ //set updated list into ServiceDecomposition
+ this.setResourceList(serviceResources);
+ return result;
+ }
+
+ /**
+ * Given a ResourceDecomposition as a JSON string, locate it in the Service Decomposition by its unique ID,
+ * and replace the current version with the new one.
+ * @param jsonString
+ * @return
+ */
+ public boolean replaceResource(String jsonString){
+ //TODO: define unique ID for the Resource!
+ return false;
+ }
+
+ /**
+ * Given a resource object ID, locate it in the Service Decomposition by its unique ID, and delete it.
+ * @param Resource
+ * @return TRUE if delete was a success
+ */
+ public boolean deleteResource(Resource resource){
+ List serviceResources = getServiceResources();
+ Iterator<Resource> iter = serviceResources.iterator();
+ while (iter.hasNext()) {
+ Resource item = iter.next();
+
+ if (item.resourceType == resource.resourceType){
+ if (item.getResourceId().equalsIgnoreCase(resource.getResourceId())){
+ //returns TRUE if replacement is a success
+ return serviceResources.remove(resource);
+ }
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Generic method to set List of ResourceDecomposition objects
+ * @param resources
+ * @return
+ */
+ public boolean setResourceList(List<Resource> resources){
+ //create resource based upon type
+ switch (resources.get(0).resourceType) {
+ case VNF:
+ this.setServiceVnfs((List<VnfResource>)(List<?>)resources);
+ break;
+ case NETWORK:
+ this.setServiceNetworks((List<NetworkResource>)(List<?>)resources);
+ break;
+ case ALLOTTED_RESOURCE:
+ this.setServiceAllottedResources((List<AllottedResource>)(List<?>)resources);
+ break;
+ default:
+ throw new IllegalArgumentException("Invalid resource type: " + resources.get(0).resourceType);
+ }
+
+ return false;
+ }
+
+ /**
+ *
+ * This method locates and returns a resource in a given
+ * Service Decomposition object by its unique resource id.
+ * Returns null if resource doesn't exist.
+ *
+ * @param resourceId - id of the resource
+ * @return resource
+ */
+ @JsonIgnore
+ public Resource getServiceResource(String resourceId){
+ List<Resource> resources = getServiceResources();
+ Iterator<Resource> iter = resources.iterator();
+ while (iter.hasNext()){
+ Resource resource = iter.next();
+ if (resource.getResourceId().equalsIgnoreCase(resourceId)){
+ //match
+ return resource;
+ }
+ }
+ return null;
+ }
+}
diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ServiceInstanceData.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ServiceInstance.java index 9b7393d742..e8757cb90f 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ServiceInstanceData.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ServiceInstance.java @@ -1,13 +1,20 @@ -package org.openecomp.mso.bpmn.core.decomposition;
+package org.openecomp.mso.bpmn.core.domain;
import java.io.Serializable;
-public class ServiceInstanceData extends JsonWrapper implements Serializable {
+/**
+ * This class is used to store instance
+ * data of services aka ServiceDecomposition
+ *
+ * @author cb645j
+ *
+ */
+public class ServiceInstance extends JsonWrapper implements Serializable {
private static final long serialVersionUID = 1L;
private String instanceId;
private String instanceName;
-
+
public String getInstanceId() {
return instanceId;
}
@@ -20,4 +27,4 @@ public class ServiceInstanceData extends JsonWrapper implements Serializable { public void setInstanceName(String instanceName) {
this.instanceName = instanceName;
}
-}
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/Subscriber.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/Subscriber.java new file mode 100644 index 0000000000..415c412363 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/Subscriber.java @@ -0,0 +1,49 @@ +package org.openecomp.mso.bpmn.core.domain;
+
+import java.io.Serializable;
+
+public class Subscriber implements Serializable {
+
+ private static final long serialVersionUID = -2416018315129127022L;
+ private String globalId;
+ private String name;
+ private String commonSiteId;
+
+ public Subscriber(String globalId, String name, String commonSiteId){
+ super();
+ this.globalId = globalId;
+ this.name = name;
+ this.commonSiteId = commonSiteId;
+ }
+
+
+ public String getGlobalId(){
+ return globalId;
+ }
+
+
+ public void setGlobalId(String globalId){
+ this.globalId = globalId;
+ }
+
+
+ public String getName(){
+ return name;
+ }
+
+
+ public void setName(String name){
+ this.name = name;
+ }
+
+
+ public String getCommonSiteId(){
+ return commonSiteId;
+ }
+
+ public void setCommonSiteId(String commonSiteId){
+ this.commonSiteId = commonSiteId;
+ }
+
+
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/VnfResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/VnfResource.java index 267a20ebe6..08a74968ea 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/VnfResource.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/VnfResource.java @@ -1,20 +1,19 @@ -package org.openecomp.mso.bpmn.core.decomposition;
+package org.openecomp.mso.bpmn.core.domain;
import java.util.ArrayList;
import java.util.List;
+import java.util.UUID;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.map.annotate.JsonRootName;
-
+import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonRootName;
/**
* Encapsulates VNF resource data set
- * @author
*
*/
@JsonRootName("vnfResource")
-public class VnfResource extends ResourceDecomposition {
+public class VnfResource extends Resource {
private static final long serialVersionUID = 1L;
@@ -22,7 +21,8 @@ public class VnfResource extends ResourceDecomposition { * set resourceType for this object
*/
public VnfResource(){
- resourceType = "vnfResource";
+ resourceType = ResourceType.VNF;
+ setResourceId(UUID.randomUUID().toString());
}
/*
@@ -31,6 +31,10 @@ public class VnfResource extends ResourceDecomposition { @JsonProperty("vfModules")
private List <ModuleResource> vfModules;
private String vnfType;
+ private String nfFunction;
+ private String nfType;
+ private String nfRole;
+ private String nfNamingCode;
/*
* GET and SET
@@ -41,13 +45,37 @@ public class VnfResource extends ResourceDecomposition { public void setModules(List<ModuleResource> moduleResources) {
this.vfModules = moduleResources;
}
+ @Deprecated
+ public void setVnfType(String vnfType) {
+ this.vnfType = vnfType;
+ }
public String getVnfType() {
return vnfType;
}
- public void setVnfType(String vnfType) {
- this.vnfType = vnfType;
+ public String getNfFunction() {
+ return nfFunction;
+ }
+ public void setNfFunction(String nfFunction) {
+ this.nfFunction = nfFunction;
+ }
+ public String getNfType() {
+ return nfType;
+ }
+ public void setNfType(String nfType) {
+ this.nfType = nfType;
+ }
+ public String getNfRole() {
+ return nfRole;
+ }
+ public void setNfRole(String nfRole) {
+ this.nfRole = nfRole;
+ }
+ public String getNfNamingCode() {
+ return nfNamingCode;
+ }
+ public void setNfNamingCode(String nfNamingCode) {
+ this.nfNamingCode = nfNamingCode;
}
-
/*
* GET accessors per design requirements
*/
@@ -59,6 +87,9 @@ public class VnfResource extends ResourceDecomposition { */
@JsonIgnore
public List<ModuleResource> getAllVfModuleObjects(){
+ if (vfModules == null) {
+ return null;
+ }
for (int i = 0; i < vfModules.size(); i++) {
ModuleResource moduleResource = vfModules.get(i);
@@ -88,4 +119,16 @@ public class VnfResource extends ResourceDecomposition { this.vfModules.add(moduleResource);
}
-}
+
+ /**
+ * Utility method to allow construction of the filed in the form of
+ * <serviceResources.modelInfo.modelName>/<serviceVnfs.modelInfo.modelInstanceName>
+ *
+ * default setter for this field deprecated
+ * @param modelName << serviceResources.modelInfo.modelName
+ * @param modelInstanceName
+ */
+ public void constructVnfType(String modelName) {
+ this.vnfType = modelName.concat("/").concat(this.modelInfo.getModelInstanceName());
+ }
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/DecomposeJsonUtil.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/DecomposeJsonUtil.java new file mode 100644 index 0000000000..32c4776daf --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/DecomposeJsonUtil.java @@ -0,0 +1,148 @@ +package org.openecomp.mso.bpmn.core.json;
+
+import java.io.Serializable;
+import java.io.IOException;
+
+
+import org.openecomp.mso.bpmn.core.domain.AllottedResource;
+import org.openecomp.mso.bpmn.core.domain.NetworkResource;
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
+import org.openecomp.mso.bpmn.core.domain.VnfResource;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class DecomposeJsonUtil implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Method to construct Service Decomposition object converting
+ * JSON structure
+ *
+ * @param jsonString - input in JSON format confirming ServiceDecomposition
+ * @return - ServiceDecomposition object
+ * @throws IOException
+ * @throws JsonMappingException
+ * @throws JsonParseException
+ */
+ public static ServiceDecomposition JsonToServiceDecomposition(String jsonString) {
+
+ ServiceDecomposition serviceDecomposition = new ServiceDecomposition();
+ ObjectMapper om = new ObjectMapper();
+ om.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
+
+ try {
+ serviceDecomposition = om.readValue(jsonString, ServiceDecomposition.class);
+ } catch (JsonParseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (JsonMappingException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return serviceDecomposition;
+ }
+
+ /**
+ * Method to construct Resource Decomposition object converting
+ * JSON structure
+ *
+ * @param jsonString - input in JSON format confirming ResourceDecomposition
+ * @return - ServiceDecomposition object
+ * @throws IOException
+ * @throws JsonMappingException
+ * @throws JsonParseException
+ */
+ public static VnfResource JsonToVnfResource(String jsonString) {
+
+ VnfResource vnfResource = new VnfResource();
+ ObjectMapper om = new ObjectMapper();
+ om.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
+
+ try {
+ vnfResource = om.readValue(jsonString, VnfResource.class);
+ } catch (JsonParseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (JsonMappingException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return vnfResource;
+ }
+
+ /**
+ * Method to construct Resource Decomposition object converting
+ * JSON structure
+ *
+ * @param jsonString - input in JSON format confirming ResourceDecomposition
+ * @return - ServiceDecomposition object
+ * @throws IOException
+ * @throws JsonMappingException
+ * @throws JsonParseException
+ */
+ public static NetworkResource JsonToNetworkResource(String jsonString) {
+
+ NetworkResource networkResource = new NetworkResource();
+ ObjectMapper om = new ObjectMapper();
+ om.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
+
+ try {
+ networkResource = om.readValue(jsonString, NetworkResource.class);
+ } catch (JsonParseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (JsonMappingException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return networkResource;
+ }
+
+ /**
+ * Method to construct Resource Decomposition object converting
+ * JSON structure
+ *
+ * @param jsonString - input in JSON format confirming ResourceDecomposition
+ * @return - ServiceDecomposition object
+ * @throws IOException
+ * @throws JsonMappingException
+ * @throws JsonParseException
+ */
+ public static AllottedResource JsonToAllottedResource(String jsonString) {
+
+ AllottedResource allottedResource = new AllottedResource();
+ ObjectMapper om = new ObjectMapper();
+ om.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
+
+ try {
+ allottedResource = om.readValue(jsonString, AllottedResource.class);
+ } catch (JsonParseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (JsonMappingException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return allottedResource;
+ }
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonUtils.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonUtils.java index 4c0d068b28..fc59b2ba12 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonUtils.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonUtils.java @@ -20,7 +20,9 @@ package org.openecomp.mso.bpmn.core.json;
+import java.util.ArrayList;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.util.StringTokenizer;
@@ -95,9 +97,11 @@ public class JsonUtils { try {
JSONObject jsonObj = new JSONObject(jsonStr);
if (pretty) {
- // use the local class method which properly handles certain JSONArray content
+// return XmlTool.normalize(XML.toString(jsonObj));
+// use the local class method which properly handles certain JSONArray content
return XmlTool.normalize(toXMLString(jsonObj, null));
} else {
+// return XML.toString(jsonObj);
// use the local class method which properly handles certain JSONArray content
return toXMLString(jsonObj, null);
}
@@ -106,7 +110,7 @@ public class JsonUtils { return null;
}
}
-
+
/**
* Uses a modified version of the org.json.XML toString() algorithm
* to convert a JSONObject to an XML Doc. The intent of this is to
@@ -173,7 +177,7 @@ public class JsonUtils { curObj = jsonArr.get(i);
if (curObj instanceof JSONArray) {
// The XML tags for the nested array should be generated below when this method
-// is called recursively and the JSONArray object is passed
+// is called recursively and the JSONArray object is passed
// strBuf.append("<");
// strBuf.append(key);
// strBuf.append(">");
@@ -237,7 +241,17 @@ public class JsonUtils { + tagName + ">" + str + "</" + tagName + ">";
}
}
-
+
+ /**
+ * Invokes json2xml(String, Boolean) defaulting to 'pretty' output.
+ *
+ * @param jsonStr String containing the XML doc
+ * @return String containing the JSON translation
+ */
+ public static String json2xml(String jsonStr) {
+ return json2xml(jsonStr, true);
+ }
+
/**
* Formats the JSON String using the value of MSOJsonIndentFactor.
*
@@ -254,17 +268,7 @@ public class JsonUtils { return null;
}
}
-
- /**
- * Invokes json2xml(String, Boolean) defaulting to 'pretty' output.
- *
- * @param jsonStr String containing the XML doc
- * @return String containing the JSON translation
- */
- public static String json2xml(String jsonStr) {
- return json2xml(jsonStr, true);
- }
-
+
/**
* Returns an Iterator over the JSON keys in the specified JSON doc.
*
@@ -275,7 +279,7 @@ public class JsonUtils { public static Iterator <String> getJsonIterator(String jsonStr) throws JSONException {
return new JSONObject(jsonStr).keys();
}
-
+
/**
* Returns the name of the "root" property in the specified JSON doc. The
* "root" property is the single top-level property in the JSON doc. An
@@ -306,7 +310,7 @@ public class JsonUtils { /**
* Invokes the getJsonRawValue() method and returns the String equivalent of
* the object returned.
- *
+ *
* TBD: May need separate methods for boolean, float, and integer fields if the
* String representation is not sufficient to meet client needs.
*
@@ -334,8 +338,7 @@ public class JsonUtils { }
return null;
}
-
-
+
/**
* Invokes the getJsonRawValue() method with the wrap flag set to true
* and returns the String equivalent of the json node object returned.
@@ -368,7 +371,7 @@ public class JsonUtils { /**
* Invokes the getJsonRawValue() method and returns the String equivalent of
* the object returned.
- *
+ *
* TBD: May need separate methods for boolean, float, and integer fields if the
* String representation is not sufficient to meet client needs.
*
@@ -398,8 +401,37 @@ public class JsonUtils { }
/**
+ * Invokes the getJsonRawValue() method and returns the boolean equivalent of
+ * the object returned.
+ *
+ * @param jsonStr String containing the JSON doc
+ * @param keys full key path to the target value in the format of "key1.key2.key3..."
+ * @return boolean field value associated with keys - default is false
+ */
+ public static boolean getJsonBooleanValue(String jsonStr, String keys) {
+ String isDebugLogEnabled = "true";
+ try {
+ Object rawValue = getJsonRawValue(jsonStr, keys);
+ if (rawValue == null) {
+ return false;
+ } else {
+ if (rawValue instanceof Boolean) {
+ msoLogger.debug("getJsonValue(): the raw value is a Boolean Object=" + ((String) rawValue).toString());
+ return (Boolean) rawValue;
+ } else {
+ msoLogger.debug("getJsonValue(): the raw value is NOT an Boolean Object=" + rawValue.toString());
+ return false;
+ }
+ }
+ } catch (Exception e) {
+ msoLogger.debug("getJsonValue(): unable to parse json to retrieve value for field=" + keys + ". Exception was: " + e.toString());
+ }
+ return false;
+ }
+
+ /**
* Invokes the getJsonParamValue() method to obtain the JSONArray associated with
- * the specified keys. The JSONArray is then walked to retrieve the first array
+ * the specified keys. The JSONArray is then walked to retrieve the first array
* value associated with the specified field name (index=0).
*
* @param jsonStr String containing the JSON doc
@@ -414,7 +446,7 @@ public class JsonUtils { /**
* Invokes the getJsonRawValue() method to obtain the JSONArray associated with
* the specified keys. The JSONArray is then walked to retrieve the nth array
- * value associated with the specified field name and index
+ * value associated with the specified field name and index.
*
* @param jsonStr String containing the JSON doc
* @param keys full key path to the target value in the format of "key1.key2.key3..."
@@ -510,7 +542,11 @@ public class JsonUtils { try {
if (jsonObj.has(key)) {
msoLogger.debug("getJsonValueForKey(): found value for key=" + key);
- return ((String) jsonObj.get(key));
+ Object value = jsonObj.get(key);
+ if (value == null)
+ return null;
+ else
+ return ((String) value);
} else {
msoLogger.debug("getJsonValueForKey(): iterating over the keys");
Iterator <String> itr = jsonObj.keys();
@@ -538,7 +574,7 @@ public class JsonUtils { }
return keyValue;
}
-
+
/**
* Walks the JSONObject (and sub-objects recursively), searching for the first value associated with the
* single key/field name specified. Returns the associated value if found or null if the key is not found
@@ -581,7 +617,50 @@ public class JsonUtils { }
return keyValue;
}
-
+
+ /**
+ * Walks the JSONObject (and sub-objects recursively), searching for the first value associated with the
+ * single key/field name specified. Returns the associated value if found or null if the key is not found
+ *
+ * @param jsonObj JSONObject representation of the the JSON doc
+ * @param key key to the target value
+ * @return String field value associated with key
+ */
+ public static Boolean getJsonBooleanValueForKey(JSONObject jsonObj, String key) {
+ String isDebugLogEnabled = "true";
+ Boolean keyValue = false;
+ try {
+ if (jsonObj.has(key)) {
+ msoLogger.debug("getJsonBooleanValueForKey(): found value for key=" + key);
+ return ((Boolean) jsonObj.get(key));
+ } else {
+ msoLogger.debug("getJsonBooleanValueForKey(): iterating over the keys");
+ Iterator <String> itr = jsonObj.keys();
+ while (itr.hasNext()) {
+ String nextKey = (String) itr.next();
+ Object obj = jsonObj.get(nextKey);
+ if (obj instanceof JSONObject) {
+ msoLogger.debug("getJsonBooleanValueForKey(): key=" + nextKey + ", points to JSONObject, recursive call");
+ keyValue = getJsonBooleanValueForKey((JSONObject) obj, key);
+ if (keyValue != null) {
+ msoLogger.debug("getJsonBooleanValueForKey(): found value=" + keyValue + ", for key=" + key);
+ break;
+ }
+ } else {
+ msoLogger.debug("getJsonBooleanValueForKey(): key=" + nextKey + ", does not point to a JSONObject, next key");
+ }
+ }
+ }
+ } catch (JSONException je) {
+ // JSONObject::get() throws this exception if one of the specified keys is not found
+ msoLogger.debug("getJsonBooleanValueForKey(): caught JSONException attempting to retrieve value for key=" + key);
+ keyValue = null;
+ } catch (Exception e) {
+ msoLogger.debug("getJsonBooleanValueForKey(): unable to parse json to retrieve value for field=" + key + ". Exception was: " + e.toString());
+ }
+ return keyValue;
+ }
+
/**
* Boolean method to determine if a key path is valid for the JSON doc. Invokes
* getJsonValue().
@@ -597,7 +676,7 @@ public class JsonUtils { return true;
}
}
-
+
/**
* Inserts the new key/value pair at the appropriate location in the JSON
* document after first determining if keyed field already exists. If
@@ -673,7 +752,7 @@ public class JsonUtils { */
private static Object getJsonRawValue(String jsonStr, String keys) {
return getJsonRawValue(jsonStr, keys, false);
- }
+ }
/**
* Walks the JSON doc using the full key path to retrieve the associated
@@ -683,8 +762,8 @@ public class JsonUtils { *
* @param jsonStr String containing the JSON doc
* @param keys full key path to the target value in the format of "key1.key2.key3..."
- * * @param wrap Boolean which determines if returned JSONObjects sould be "wrapped"
- * Note: wrap does not apply to returned scalar values
+ * @param wrap Boolean which determines if returned JSONObjects sould be "wrapped"
+ * Note: wrap does not apply to returned scalar values
* @return Object field value associated with keys
*/
private static Object getJsonRawValue(String jsonStr, String keys, Boolean wrap) {
@@ -735,7 +814,7 @@ public class JsonUtils { * @param keys full key path to the value to be deleted in the format of "key1.key2.key3..."
* @return String containing the updated JSON doc
*/
- private static String putJsonValue(String jsonStr, String keys, String value) {
+ private static String putJsonValue(String jsonStr, String keys, String value) {
// String isDebugLogEnabled = "true";
String keyStr = "";
try {
@@ -760,7 +839,7 @@ public class JsonUtils { }
// should not hit this point if the key points to a valid key value
return null;
-
+
} catch (JSONException je) {
// JSONObject::get() throws this exception if one of the specified keys is not found
msoLogger.debug("putJsonValue(): caught JSONException attempting to retrieve value for key=" + keyStr);
@@ -772,14 +851,13 @@ public class JsonUtils { }
/**
- * This json util method converts a json "Key" and "Value"
- * entry Array to a Java map.
+ * This json util method converts a json array of Key Value
+ * pair objects into a Java Map.
*
* @param execution
- * @param entryArray - the json value of the entry Array
- *
- * @return map - a Map containing the entries
+ * @param entryArray - the getJsonValue of a json Array of key/value pairs
*
+ * @return Map - a Map containing the entries
*/
public Map<String, String> entryArrayToMap(Execution execution, String entryArray) {
msoLogger.debug("Started Entry Array To Map Util Method");
@@ -801,8 +879,68 @@ public class JsonUtils { return map;
}
+ /**
+ * This json util method converts a json array of Key Value
+ * pair objects into a Java Map.
+ *
+ * @param execution
+ * @param entryArray - the getJsonValue of a json Array of key/value pairs
+ * @param keyNode - the name of the node that represents the key
+ * @param valueNode - the name of the node that represents the value
+ *
+ * @return Map - a Map containing the entries
+ *
+ */
+ public Map<String, String> entryArrayToMap(Execution execution, String entryArray, String keyNode, String valueNode) {
+ msoLogger.debug("Started Entry Array To Map Util Method");
+
+ Map<String, String> map = new HashMap<String, String>();
+ //Populate Map
+ String entryListJson = "{ \"entry\":" + entryArray + "}";
+ JSONObject obj = new JSONObject(entryListJson);
+ JSONArray arr = obj.getJSONArray("entry");
+ for (int i = 0; i < arr.length(); i++){
+ JSONObject jo = arr.getJSONObject(i);
+ String key = jo.getString(keyNode);
+ String value =jo.getString(valueNode);
+ map.put(key, value);
+ }
+ msoLogger.debug("Outgoing Map is: " + map);
+ msoLogger.debug("Completed Entry Array To Map Util Method");
+ return map;
+ }
/**
+ * This json util method converts a json Array of Strings
+ * to a Java List. It takes each String in the json Array
+ * and puts it in a Java List<String>.
+ *
+ * @param execution
+ * @param stringArray - the getJsonValue of a json array of strings
+ *
+ * @return List - a java list containing the strings
+ *
+ *
+ */
+ public List<String> StringArrayToList(Execution execution, String jsonArrayOfStrings) {
+ msoLogger.debug("Started String Array To List Util Method");
+
+ List<String> list = new ArrayList<String>();
+ //Populate List
+ String stringListJson = "{ \"strings\":" + jsonArrayOfStrings + "}";
+ JSONObject obj = new JSONObject(stringListJson);
+ JSONArray arr = obj.getJSONArray("strings");
+ for (int i = 0; i < arr.length(); i++){
+ String s = arr.getString(i);
+ list.add(s);
+ }
+ msoLogger.debug("Outgoing List is: " + list);
+ msoLogger.debug("Completed String Array To List Util Method");
+ return list;
+ }
+
+ /**
+ *
* Invokes the getJsonRawValue() method to determine if the
* json element/variable exist. Returns true if the
* json element exist
@@ -810,6 +948,8 @@ public class JsonUtils { * @param jsonStr String containing the JSON doc
* @param keys full key path to the target value in the format of "key1.key2.key3..."
* @return boolean field value associated with keys
+ *
+ *
*/
public static boolean jsonElementExist(String jsonStr, String keys) {
@@ -826,5 +966,4 @@ public class JsonUtils { return true;
}
-}
-
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonWrapper.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonWrapper.java new file mode 100644 index 0000000000..8898f27b23 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonWrapper.java @@ -0,0 +1,125 @@ +package org.openecomp.mso.bpmn.core.json;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.List;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.core.JsonGenerationException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import com.fasterxml.jackson.databind.SerializationFeature;
+
+@JsonInclude(Include.NON_NULL)
+public abstract class JsonWrapper implements Serializable {
+
+
+ private static final long serialVersionUID = 8633550139273639875L;
+
+ @JsonInclude(Include.NON_NULL)
+ public String toJsonString(){
+
+ String jsonString = "";
+ //convert with Jackson
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
+ mapper.setSerializationInclusion(Include.NON_NULL);
+
+ ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
+ try {
+ jsonString = ow.writeValueAsString(this);
+// } catch (JsonGenerationException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// } catch (JsonMappingException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// } catch (IOException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// }
+ } catch (Exception e){
+
+ e.printStackTrace();
+ }
+ return jsonString;
+ }
+
+ @JsonInclude(Include.NON_NULL)
+ public JSONObject toJsonObject() {
+
+ ObjectMapper mapper = new ObjectMapper();
+ // mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
+ //mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
+
+ mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
+ // mapper.enable(org.codehaus.jackson.map.DeserializationConfig.Feature.UNWRAP_ROOT_VALUE);
+ JSONObject json = new JSONObject();
+ try {
+ json = new JSONObject(mapper.writeValueAsString(this));
+ } catch (JsonGenerationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (JsonMappingException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (JSONException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return json;
+ }
+
+ public String listToJson(List list) {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
+
+ String jsonString = "";
+ try {
+ jsonString = mapper.writeValueAsString(list);
+ } catch (JsonGenerationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (JsonMappingException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return jsonString;
+ }
+
+ @JsonInclude(Include.NON_NULL)
+ public String toJsonStringNoRootName(){
+
+ String jsonString = "";
+ //convert with Jackson
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.setSerializationInclusion(Include.NON_NULL);
+
+ ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
+ try {
+ jsonString = ow.writeValueAsString(this);
+ } catch (Exception e){
+
+ e.printStackTrace();
+ }
+ return jsonString;
+ }
+
+ /**
+ * Returns a string representation of this object.
+ */
+ public String toString() {
+ return this.toJsonString();
+ }
+}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/mybatis/URNMapping.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/mybatis/URNMapping.java index 07959cb016..dde51e34df 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/mybatis/URNMapping.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/mybatis/URNMapping.java @@ -119,4 +119,4 @@ public class URNMapping { return builder.toString(); } -} +}
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/xml/XmlTool.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/xml/XmlTool.java index ac0c795d7a..7b6d429912 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/xml/XmlTool.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/xml/XmlTool.java @@ -29,6 +29,7 @@ import java.io.StringReader; import java.io.StringWriter; import java.util.HashMap; import java.util.Map; +import java.util.Optional; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -48,6 +49,7 @@ import javax.xml.xpath.XPathFactory; import org.openecomp.mso.logger.MsoLogger; import org.w3c.dom.Document; +import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; @@ -335,6 +337,48 @@ public final class XmlTool { } /** + * Parses the XML document String for the first occurrence of the specified element tag. + * If found, the value associated with that element tag is replaced with the new value + * and a String containing the modified XML document is returned. If the XML passed is + * null or the element tag is not found in the document, null will be returned. + * @param xml String containing the original XML document. + * @param elementTag String containing the tag of the element to be modified. + * @param newValue String containing the new value to be used to modify the corresponding element. + * @return the contents of the modified XML document as a String or null/empty if the modification failed. + * @throws IOException, TransformerException, ParserConfigurationException, SAXException + */ + public static Optional<String> modifyElement(String xml, String elementTag, String newValue) throws IOException, TransformerException, + ParserConfigurationException, SAXException { + + if (xml == null || xml.isEmpty()) { + // no XML content to be modified, return empty + return Optional.empty(); + } + + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + dbFactory.setNamespaceAware(true); + DocumentBuilder db = dbFactory.newDocumentBuilder(); + InputSource source = new InputSource(new StringReader(xml)); + Document doc = db.parse(source); + + Node modNode = doc.getElementsByTagName(elementTag).item(0); + if (modNode == null) { + // did not find the specified element to be modified, return empty + //System.out.println("Did not find element tag " + elementTag + " in XML"); + return Optional.empty(); + } else { + modNode.setTextContent(newValue); + } + + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + StringWriter writer = new StringWriter(); + transformer.transform(new DOMSource(doc), new StreamResult(writer)); + // return the modified String representation of the XML + return Optional.of(writer.toString().trim()); + } + + /** * Instantiation is not allowed. */ private XmlTool() { diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/PropertyConfigurationTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/PropertyConfigurationTest.java index 50b9a53f04..c03ea52b6c 100644 --- a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/PropertyConfigurationTest.java +++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/PropertyConfigurationTest.java @@ -41,10 +41,6 @@ package org.openecomp.mso.bpmn.core; import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.StandardCopyOption; import java.util.Map; import org.junit.Assert; diff --git a/bpmn/MSOInfrastructureBPMN/pom.xml b/bpmn/MSOInfrastructureBPMN/pom.xml index 5c0eff96bb..24c8546b8d 100644 --- a/bpmn/MSOInfrastructureBPMN/pom.xml +++ b/bpmn/MSOInfrastructureBPMN/pom.xml @@ -214,13 +214,7 @@ <version>1.10.19</version>
<scope>test</scope>
</dependency>
- <dependency>
- <!-- Optional Plugin for Camunda BPM Workbench -->
- <groupId>org.camunda.bpm.workbench</groupId>
- <artifactId>camunda-workbench-dist-embeddable</artifactId>
- <version>1.0.0-alpha8</version>
- <scope>test</scope>
- </dependency>
+
<!-- Spin dataformat support, in compile scope to include it in the war
file -->
@@ -230,6 +224,11 @@ <scope>compile</scope>
</dependency>
<dependency>
+ <artifactId>camunda-spin-dataformat-all</artifactId>
+ <groupId>org.camunda.spin</groupId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine-plugin-spin</artifactId>
<scope>compile</scope>
@@ -330,6 +329,13 @@ <version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <version>3.0.1</version>
+ <scope>provided</scope>
+ </dependency>
+
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock</artifactId>
@@ -380,10 +386,25 @@ </exclusions>
</dependency>
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.0.1</version>
- <scope>provided</scope>
- </dependency>
+ <groupId>org.camunda.bpm</groupId>
+ <artifactId>camunda-engine-spring</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>4.3.2.RELEASE</version>
+</dependency>
+<dependency>
+ <!-- Optional Plugin for Camunda BPM Workbench -->
+ <groupId>org.camunda.bpm.workbench</groupId>
+ <artifactId>camunda-workbench-dist-embeddable</artifactId>
+ <version>1.0.0-alpha8</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>resteasy-jackson2-provider</artifactId>
+ <version>3.0.11.Final</version>
+ </dependency>
</dependencies>
-</project>
\ No newline at end of file +</project>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericALaCarteServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericALaCarteServiceInstance.groovy index ec414a4ee2..e7190291da 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericALaCarteServiceInstance.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericALaCarteServiceInstance.groovy @@ -39,7 +39,7 @@ import org.apache.commons.codec.binary.Base64; import org.springframework.web.util.UriUtils /** - * This groovy class supports the <class>CreateServiceInstance.bpmn</class> process. + * This groovy class supports the <class>CreateGenericALaCarteServiceInstance.bpmn</class> process. * AlaCarte flow for 1702 ServiceInstance Create * */ @@ -118,8 +118,29 @@ public class CreateGenericALaCarteServiceInstance extends AbstractServiceTaskPro execution.setVariable("subscriptionServiceType", subscriptionServiceType) } + + /* + * Extracting User Parameters from incoming Request and converting into a Map + */ + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + + Map reqMap = jsonSlurper.parseText(siRequest) + + //InputParams + def userParams = reqMap.requestDetails?.requestParameters?.userParams + + Map<String, String> inputMap = [:] + if (userParams) { + userParams.each { + userParam -> inputMap.put(userParam.name, userParam.value) + } + } + + utils.log("DEBUG", "User Input Parameters map: " + userParams.toString(), isDebugEnabled) + execution.setVariable("serviceInputParams", inputMap) + //TODO - //execution.setVariable("serviceInputParams", jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.userParams")) //execution.setVariable("failExists", true) } catch (BpmnError e) { @@ -168,7 +189,7 @@ public class CreateGenericALaCarteServiceInstance extends AbstractServiceTaskPro } String buildworkflowException = - """<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ """<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"> <aetgt:ErrorMessage>${errorMessage}</aetgt:ErrorMessage> <aetgt:ErrorCode>7000</aetgt:ErrorCode> </aetgt:WorkflowException>""" @@ -192,9 +213,9 @@ public class CreateGenericALaCarteServiceInstance extends AbstractServiceTaskPro String source = execution.getVariable("source") String msoCompletionRequest = - """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
- xmlns:ns="http://org.openecomp/mso/request/types/v1">
- <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1" + xmlns:ns="http://org.openecomp/mso/request/types/v1"> + <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1"> <request-id>${requestId}</request-id> <action>CREATE</action> <source>${source}</source> @@ -228,7 +249,7 @@ public class CreateGenericALaCarteServiceInstance extends AbstractServiceTaskPro String requestId = execution.getVariable("msoRequestId") String source = execution.getVariable("source") String requestInfo = - """<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ """<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1"> <request-id>${requestId}</request-id> <action>CREATE</action> <source>${source}</source> @@ -241,15 +262,15 @@ public class CreateGenericALaCarteServiceInstance extends AbstractServiceTaskPro String errorException = " Bpmn error encountered in CreateGenericALaCarteServiceInstance flow. FalloutHandlerRequest, buildErrorResponse() - " + ex.getMessage() String requestId = execution.getVariable("msoRequestId") String falloutRequest = - """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
- xmlns:ns="http://org.openecomp/mso/request/types/v1"
- xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">
- <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1" + xmlns:ns="http://org.openecomp/mso/request/types/v1" + xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1"> + <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1"> <request-id>${requestId}</request-id> <action>CREATE</action> <source>VID</source> </request-info> - <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"> <aetgt:ErrorMessage>${errorException}</aetgt:ErrorMessage> <aetgt:ErrorCode>7000</aetgt:ErrorCode> </aetgt:WorkflowException> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericMacroServiceNetworkVnf.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericMacroServiceNetworkVnf.groovy deleted file mode 100644 index 79508cb8cb..0000000000 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericMacroServiceNetworkVnf.groovy +++ /dev/null @@ -1,804 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * OPENECOMP - MSO - * ================================================================================ - * 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.mso.bpmn.infrastructure.scripts; - -import groovy.xml.XmlUtil -import groovy.json.* - -import org.openecomp.mso.bpmn.core.json.JsonUtils -import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor -import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils -import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil -import org.openecomp.mso.bpmn.common.scripts.VidUtils -import org.openecomp.mso.bpmn.core.WorkflowException -import org.openecomp.mso.bpmn.core.decomposition.ModelInfo -import org.openecomp.mso.bpmn.core.decomposition.NetworkResource -import org.openecomp.mso.bpmn.core.decomposition.ServiceDecomposition -import org.openecomp.mso.bpmn.core.decomposition.VnfResource -import org.openecomp.mso.rest.APIResponse; -import org.openecomp.mso.rest.RESTClient -import org.openecomp.mso.rest.RESTConfig - -import java.util.UUID; - -import org.camunda.bpm.engine.delegate.BpmnError -import org.camunda.bpm.engine.runtime.Execution -import org.json.JSONObject; -import org.json.JSONArray; -import org.apache.commons.lang3.* -import org.apache.commons.codec.binary.Base64; -import org.springframework.web.util.UriUtils; - -/** - * This groovy class supports the <class>CreateGenericMacroServiceNetworkVnf.bpmn</class> process. - * - */ -public class CreateGenericMacroServiceNetworkVnf extends AbstractServiceTaskProcessor { - - String Prefix="CGMSNV_" - ExceptionUtil exceptionUtil = new ExceptionUtil() - JsonUtils jsonUtil = new JsonUtils() - VidUtils vidUtils = new VidUtils() - CatalogDbUtils catalogDbUtils = new CatalogDbUtils() - - /** - * This method is executed during the preProcessRequest task of the <class>CreateServiceInstance.bpmn</class> process. - * @param execution - */ - public InitializeProcessVariables(Execution execution){ - /* Initialize all the process variables in this block */ - - execution.setVariable("createViprServiceRequest", "") - execution.setVariable("globalSubscriberId", "") - execution.setVariable("serviceInstanceName", "") - execution.setVariable("msoRequestId", "") - execution.setVariable("CGMSNV_NetworksCreatedCount", 0) - execution.setVariable("CGMSNV_VnfsCreatedCount", 0) - execution.setVariable("productFamilyId", "") - - //TODO - execution.setVariable("sdncVersion", "1707") - } - - // ************************************************** - // Pre or Prepare Request Section - // ************************************************** - /** - * This method is executed during the preProcessRequest task of the <class>CreateServiceInstance.bpmn</class> process. - * @param execution - */ - public void preProcessRequest (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - execution.setVariable("prefix",Prefix) - - utils.log("DEBUG", " ***** Inside preProcessRequest CreateGenericMacroServiceNetworkVnf Request ***** ", isDebugEnabled) - - try { - // initialize flow variables - InitializeProcessVariables(execution) - - // check for incoming json message/input - String createViprServiceRequest = execution.getVariable("bpmnRequest") - utils.logAudit(createViprServiceRequest) - execution.setVariable("createViprServiceRequest", createViprServiceRequest); - println 'createViprServiceRequest - ' + createViprServiceRequest - - // extract requestId - String requestId = execution.getVariable("mso-request-id") - execution.setVariable("msoRequestId", requestId) - - String serviceInstanceId = execution.getVariable("serviceInstanceId") - - if ((serviceInstanceId == null) || (serviceInstanceId.isEmpty())) { - serviceInstanceId = UUID.randomUUID().toString() - utils.log("DEBUG", " Generated new Service Instance: " + serviceInstanceId , isDebugEnabled) - } else { - utils.log("DEBUG", "Using provided Service Instance ID: " + serviceInstanceId , isDebugEnabled) - } - - serviceInstanceId = UriUtils.encode(serviceInstanceId,"UTF-8") - execution.setVariable("serviceInstanceId", serviceInstanceId) - - String requestAction = execution.getVariable("requestAction") - execution.setVariable("requestAction", requestAction) - - String source = jsonUtil.getJsonValue(createViprServiceRequest, "requestDetails.requestInfo.source") - if ((source == null) || (source.isEmpty())) { - execution.setVariable("source", "VID") - } else { - execution.setVariable("source", source) - } - - // extract globalSubscriberId - String globalSubscriberId = jsonUtil.getJsonValue(createViprServiceRequest, "requestDetails.subscriberInfo.globalSubscriberId") - - // verify element global-customer-id is sent from JSON input, throw exception if missing - if ((globalSubscriberId == null) || (globalSubscriberId.isEmpty())) { - String dataErrorMessage = " Element 'globalSubscriberId' is missing. " - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) - - } else { - execution.setVariable("globalSubscriberId", globalSubscriberId) - execution.setVariable("globalCustomerId", globalSubscriberId) - } - - // extract subscriptionServiceType - String subscriptionServiceType = jsonUtil.getJsonValue(createViprServiceRequest, "requestDetails.requestParameters.subscriptionServiceType") - execution.setVariable("subscriptionServiceType", subscriptionServiceType) - utils.log("DEBUG", "Incoming subscriptionServiceType is: " + subscriptionServiceType, isDebugEnabled) - - String suppressRollback = jsonUtil.getJsonValue(createViprServiceRequest, "requestDetails.requestInfo.suppressRollback") - execution.setVariable("disableRollback", suppressRollback) - utils.log("DEBUG", "Incoming Suppress/Disable Rollback is: " + suppressRollback, isDebugEnabled) - - String productFamilyId = jsonUtil.getJsonValue(createViprServiceRequest, "requestDetails.requestInfo.productFamilyId") - execution.setVariable("productFamilyId", productFamilyId) - utils.log("DEBUG", "Incoming productFamilyId is: " + productFamilyId, isDebugEnabled) - - //For Completion Handler & Fallout Handler - String requestInfo = - """<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
- <request-id>${requestId}</request-id> - <action>CREATE</action> - <source>${source}</source> - </request-info>""" - - execution.setVariable("CGMSNV_requestInfo", requestInfo) - - utils.log("DEBUG", " ***** Completed preProcessRequest CreateGenericMacroServiceNetworkVnf Request ***** ", isDebugEnabled) - - } catch (BpmnError e) { - throw e; - - } catch (Exception ex){ - String exceptionMessage = "Bpmn error encountered in CreateGenericMacroServiceNetworkVnf flow. Unexpected from method preProcessRequest() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - public void sendSyncResponse (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - utils.log("DEBUG", " ***** Inside sendSyncResponse of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - try { - String serviceInstanceId = execution.getVariable("serviceInstanceId") - String requestId = execution.getVariable("mso-request-id") - - // RESTResponse (for API Handler (APIH) Reply Task) - String syncResponse ="""{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim() - - utils.log("DEBUG", " sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse, isDebugEnabled) - sendWorkflowResponse(execution, 202, syncResponse) - - } catch (Exception ex) { - String exceptionMessage = "Bpmn error encountered in CreateGenericMacroServiceNetworkVnf flow. Unexpected from method sendSyncResponse() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - // ******************************* - // - // ******************************* - public void prepareDecomposeService(Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - try { - utils.log("DEBUG", " ***** Inside prepareDecomposeService of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - String createViprServiceRequest = execution.getVariable("createViprServiceRequest") - String serviceModelInfo = jsonUtil.getJsonValue(createViprServiceRequest, "requestDetails.modelInfo") - execution.setVariable("serviceModelInfo", serviceModelInfo) - - utils.log("DEBUG", " ***** Completed prepareDecomposeService of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - } catch (Exception ex) { - // try error in method block - String exceptionMessage = "Bpmn error encountered in CreateGenericMacroServiceNetworkVnf flow. Unexpected Error from method prepareDecomposeService() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - // ******************************* - // - // ******************************* - public void prepareCreateServiceInstance(Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - try { - utils.log("DEBUG", " ***** Inside prepareCreateServiceInstance of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - /* - * Service modelInfo is created in earlier step. This flow can use it as-is ... or, extract from DecompositionObject - * ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") - * ModelInfo modelInfo = serviceDecomposition.getModelInfo() - * - */ - String createViprServiceRequest = execution.getVariable("createViprServiceRequest") - String serviceInputParams = jsonUtil.getJsonValue(createViprServiceRequest, "requestDetails.requestParameters") - execution.setVariable("serviceInputParams", serviceInputParams) - - String serviceInstanceName = jsonUtil.getJsonValue(createViprServiceRequest, "requestDetails.requestInfo.instanceName") - execution.setVariable("serviceInstanceName", serviceInstanceName) - - ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") - execution.setVariable("serviceDecompositionString", serviceDecomposition.toJsonString()) - - utils.log("DEBUG", " ***** Completed prepareCreateServiceInstance of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - } catch (Exception ex) { - // try error in method block - String exceptionMessage = "Bpmn error encountered in CreateGenericMacroServiceNetworkVnf flow. Unexpected Error from method prepareCreateServiceInstance() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - public void postProcessServiceInstanceCreate (Execution execution){ - def method = getClass().getSimpleName() + '.postProcessServiceInstanceCreate(' +'execution=' + execution.getId() +')' - def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') - logDebug('Entered ' + method, isDebugLogEnabled) - - String source = execution.getVariable("source") - String requestId = execution.getVariable("mso-request-id") - String serviceInstanceId = execution.getVariable("serviceInstanceId") - String serviceInstanceName = execution.getVariable("serviceInstanceName") - - try { - - String payload = """ - <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://org.openecomp.mso/requestsdb">
- <soapenv:Header/> - <soapenv:Body> - <req:updateInfraRequest> - <requestId>${requestId}</requestId> - <lastModifiedBy>BPEL</lastModifiedBy> - <serviceInstanceId>${serviceInstanceId}</serviceInstanceId> - <serviceInstanceName>${serviceInstanceName}</serviceInstanceName> - </req:updateInfraRequest> - </soapenv:Body> - </soapenv:Envelope> - """ - execution.setVariable("CGMSNV_setUpdateDbInstancePayload", payload) - utils.logAudit("CGMSNV_setUpdateDbInstancePayload: " + payload) - logDebug('Exited ' + method, isDebugLogEnabled) - //println("CMSO_updateDBStatusToSuccessPayload --> " + execution.getVariable("CMSO_updateDBStatusToSuccessPayload")) - - } catch (BpmnError e) { - throw e; - } catch (Exception e) { - logError('Caught exception in ' + method, e) - exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error - Occured in" + method) - } - } - - - public void getDataFromDecomposition (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - utils.log("DEBUG", " ***** Inside getDataFromDecomposition() of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - try { - - ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") - - List<NetworkResource> networkList = serviceDecomposition.getServiceNetworks() - - //utils.log("DEBUG", "got network list: "+ networkList.toString(), isDebugEnabled) - execution.setVariable("networkList", networkList) - execution.setVariable("networkListString", networkList.toString()) - - networkList = execution.getVariable("networkList"); - utils.log("DEBUG", "networkList: "+ networkList, isDebugEnabled) - - if (networkList != null && networkList.size() > 0) { - - execution.setVariable("CGMSNV_NetworksCount", networkList.size()) - utils.log("DEBUG", "networks to create: "+ networkList.size(), isDebugEnabled) - } else { - execution.setVariable("CGMSNV_NetworksCount", 0) - utils.log("DEBUG", "no networks to create based upon serviceDecomposition content", isDebugEnabled) - } - - // VNFs - List<VnfResource> vnfList = serviceDecomposition.getServiceVnfs() - execution.setVariable("vnfList", vnfList) - - String vnfModelInfoString = "" - if (vnfList != null && vnfList.size() > 0) { - execution.setVariable("CGMSNV_VNFsCount", vnfList.size()) - utils.log("DEBUG", "vnfs to create: "+ vnfList.size(), isDebugEnabled) - ModelInfo vnfModelInfo = vnfList[0].getModelInfo() - String vnfModelInfoWithRoot = vnfModelInfo.toString() - vnfModelInfoString = jsonUtil.getJsonValue(vnfModelInfoWithRoot, "modelInfo") - } else { - execution.setVariable("CGMSNV_VNFsCount", 0) - utils.log("DEBUG", "no vnfs to create based upon Catalog DB response", isDebugEnabled) - } - - execution.setVariable("vnfModelInfo", vnfModelInfoString) - //utils.log("DEBUG", " vnfModelInfoString :" + vnfModelInfoString, isDebugEnabled) - - utils.log("DEBUG", " ***** Completed getDataFromDecomposition() of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - } catch (Exception ex) { - sendSyncError(execution) - String exceptionMessage = "Bpmn error encountered in CreateGenericMacroServiceNetworkVnf flow. getDataFromDecomposition() - " + ex.getMessage() - utils.log("DEBUG", exceptionMessage, isDebugEnabled) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - // ******************************* - // Generate Network request Section - // ******************************* - public void prepareNetworkCreate (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - try { - utils.log("DEBUG", " ***** Inside preparenNetworkCreate of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - -// String disableRollback = execution.getVariable("disableRollback") -// def backoutOnFailure = "" -// if(disableRollback != null){ -// if ( disableRollback == true) { -// backoutOnFailure = "false" -// } else if ( disableRollback == false) { -// backoutOnFailure = "true" -// } -// } - //failIfExists - optional - - String createViprServiceRequest = execution.getVariable("createViprServiceRequest") - - JSONArray networkList = execution.getVariable("networkList") - utils.log("DEBUG", "array networkList: "+ networkList, isDebugEnabled) - - if (networkList == null || networkList.size() < 1){ - networkList = new JSONArray(execution.getVariable("networkListString")) - utils.log("DEBUG", "array from string networkList: "+ networkList, isDebugEnabled) - } - - Integer networksCreatedCount = execution.getVariable("CGMSNV_NetworksCreatedCount") - String networkModelInfoString = "" - - if (networkList != null) { - utils.log("DEBUG", " getting model info for network # :" + networksCreatedCount, isDebugEnabled) - ModelInfo networkModelInfo = networkList[networksCreatedCount.intValue()].getModelInfo() - networkModelInfoString = networkModelInfo.toString() - } else { - String exceptionMessage = "Bpmn error encountered in CreateGenericMacroServiceNetworkVnf flow. Unexpected number of networks to create - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - - execution.setVariable("networkModelInfo", networkModelInfoString) - utils.log("DEBUG", " networkModelInfoString :" + networkModelInfoString, isDebugEnabled) - -// String networkModelInfo = execution.getVariable("networkModelInfo") - // extract cloud configuration - String lcpCloudRegionId = jsonUtil.getJsonValue(createViprServiceRequest, "requestDetails.cloudConfiguration.lcpCloudRegionId") - execution.setVariable("lcpCloudRegionId", lcpCloudRegionId) - utils.log("DEBUG","lcpCloudRegionId: "+ lcpCloudRegionId, isDebugEnabled) - String tenantId = jsonUtil.getJsonValue(createViprServiceRequest, "requestDetails.cloudConfiguration.tenantId") - execution.setVariable("tenantId", tenantId) - utils.log("DEBUG","tenantId: "+ tenantId, isDebugEnabled) - - String sdncVersion = execution.getVariable("sdncVersion") - utils.log("DEBUG","sdncVersion: "+ sdncVersion, isDebugEnabled) - - List<VnfResource> vnfList = execution.getVariable("vnfList") - utils.log("DEBUG", "vnfList: "+ vnfList.toString(), isDebugEnabled) - - String vnfModelInfo = execution.getVariable("vnfModelInfo") - utils.log("DEBUG", "vnfModelInfo: "+ vnfModelInfo, isDebugEnabled) - - networkList = execution.getVariable("networkList") - utils.log("DEBUG", "networkList: "+ networkList, isDebugEnabled) - - utils.log("DEBUG", " ***** Completed preparenNetworkCreate of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - } catch (Exception ex) { - // try error in method block - String exceptionMessage = "Bpmn error encountered in CreateGenericMacroServiceNetworkVnf flow. Unexpected Error from method prepareNetworkCreate() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - // ******************************* - // Validate Network request Section -> increment count - // ******************************* - public void validateNetworkCreate (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - try { - utils.log("DEBUG", " ***** Inside validateNetworkCreate of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - Integer networksCreatedCount = execution.getVariable("CGMSNV_NetworksCreatedCount") - networksCreatedCount++ - - execution.setVariable("CGMSNV_NetworksCreatedCount", networksCreatedCount) - - execution.setVariable("DCRENI_rollbackData"+networksCreatedCount, execution.getVariable("DCRENI_rollbackData")) - - utils.log("DEBUG", "networksCreatedCount: "+ networksCreatedCount, isDebugEnabled) - utils.log("DEBUG", "DCRENI_rollbackData N : "+ execution.getVariable("DCRENI_rollbackData"+networksCreatedCount), isDebugEnabled) - - JSONArray vnfList = execution.getVariable("vnfList") - utils.log("DEBUG", "vnfList: "+ vnfList, isDebugEnabled) - - String vnfModelInfo = execution.getVariable("vnfModelInfo") - utils.log("DEBUG", "vnfModelInfo: "+ vnfModelInfo, isDebugEnabled) - - JSONArray networkList = execution.getVariable("networkList") - utils.log("DEBUG", "networkList: "+ networkList, isDebugEnabled) - - utils.log("DEBUG", " ***** Completed validateNetworkCreate of CreateGenericMacroServiceNetworkVnf ***** "+" network # "+networksCreatedCount, isDebugEnabled) - } catch (Exception ex) { - // try error in method block - String exceptionMessage = "Bpmn error encountered in CreateGenericMacroServiceNetworkVnf flow. Unexpected Error from method validateNetworkCreate() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - // ******************************* - // Generate Network request Section - // ******************************* - public void prepareVnfAndModulesCreate (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - try { - utils.log("DEBUG", " ***** Inside prepareVnfAndModulesCreate of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - // String disableRollback = execution.getVariable("disableRollback") - // def backoutOnFailure = "" - // if(disableRollback != null){ - // if ( disableRollback == true) { - // backoutOnFailure = "false" - // } else if ( disableRollback == false) { - // backoutOnFailure = "true" - // } - // } - //failIfExists - optional - - String createViprServiceRequest = execution.getVariable("createViprServiceRequest") - String productFamilyId = jsonUtil.getJsonValue(createViprServiceRequest, "requestDetails.requestInfo.productFamilyId") - execution.setVariable("productFamilyId", productFamilyId) - utils.log("DEBUG","productFamilyId: "+ productFamilyId, isDebugEnabled) - - List<VnfResource> vnfList = execution.getVariable("vnfList") - - Integer vnfsCreatedCount = execution.getVariable("CGMSNV_VnfsCreatedCount") - String vnfModelInfoString = null; - - if (vnfList != null && vnfList.size() > 0 ) { - utils.log("DEBUG", "getting model info for vnf # " + vnfsCreatedCount, isDebugEnabled) - ModelInfo vnfModelInfo1 = vnfList[0].getModelInfo() - utils.log("DEBUG", "got 0 ", isDebugEnabled) - ModelInfo vnfModelInfo = vnfList[vnfsCreatedCount.intValue()].getModelInfo() - vnfModelInfoString = vnfModelInfo.toString() - } else { - //TODO: vnfList does not contain data. Need to investigate why ... . Fro VIPR use model stored - vnfModelInfoString = execution.getVariable("vnfModelInfo") - } - - utils.log("DEBUG", " vnfModelInfoString :" + vnfModelInfoString, isDebugEnabled) - - // extract cloud configuration - String lcpCloudRegionId = jsonUtil.getJsonValue(createViprServiceRequest, "requestDetails.cloudConfiguration.lcpCloudRegionId") - execution.setVariable("lcpCloudRegionId", lcpCloudRegionId) - utils.log("DEBUG","lcpCloudRegionId: "+ lcpCloudRegionId, isDebugEnabled) - String tenantId = jsonUtil.getJsonValue(createViprServiceRequest, "requestDetails.cloudConfiguration.tenantId") - execution.setVariable("tenantId", tenantId) - utils.log("DEBUG","tenantId: "+ tenantId, isDebugEnabled) - - String sdncVersion = execution.getVariable("sdncVersion") - utils.log("DEBUG","sdncVersion: "+ sdncVersion, isDebugEnabled) - - utils.log("DEBUG", " ***** Completed prepareVnfAndModulesCreate of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - } catch (Exception ex) { - // try error in method block - String exceptionMessage = "Bpmn error encountered in CreateGenericMacroServiceNetworkVnf flow. Unexpected Error from method prepareVnfAndModulesCreate() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - // ******************************* - // Validate Vnf request Section -> increment count - // ******************************* - public void validateVnfCreate (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - try { - utils.log("DEBUG", " ***** Inside validateVnfCreate of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - Integer vnfsCreatedCount = execution.getVariable("CGMSNV_VnfsCreatedCount") - vnfsCreatedCount++ - - execution.setVariable("CGMSNV_VnfsCreatedCount", vnfsCreatedCount) - - utils.log("DEBUG", " ***** Completed validateVnfCreate of CreateGenericMacroServiceNetworkVnf ***** "+" vnf # "+vnfsCreatedCount, isDebugEnabled) - } catch (Exception ex) { - // try error in method block - String exceptionMessage = "Bpmn error encountered in CreateGenericMacroServiceNetworkVnf flow. Unexpected Error from method validateVnfCreate() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - // ******************************* - // Validate Network request Section -> decrement count - // ******************************* - public void validateNetworkRollback (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - try { - utils.log("DEBUG", " ***** Inside validateNetworkRollback of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - Integer networksCreatedCount = execution.getVariable("CGMSNV_NetworksCreatedCount") - networksCreatedCount-- - - execution.setVariable("CGMSNV_NetworksCreatedCount", networksCreatedCount) - - execution.setVariable("DCRENI_rollbackData", execution.getVariable("DCRENI_rollbackData"+networksCreatedCount)) - - utils.log("DEBUG", " ***** Completed validateNetworkRollback of CreateGenericMacroServiceNetworkVnf ***** "+" network # "+networksCreatedCount, isDebugEnabled) - } catch (Exception ex) { - // try error in method block - String exceptionMessage = "Bpmn error encountered in CreateGenericMacroServiceNetworkVnf flow. Unexpected Error from method validateNetworkRollback() - " + ex.getMessage() - //exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - utils.log("DEBUG", exceptionMessage, isDebugEnabled) - execution.setVariable("CGMSNV_NetworksCreatedCount", 0) - utils.log("ERROR", exceptionMessage, true) - } - } - -// public void extractServiceModelInfo (Execution execution) { -// def isDebugEnabled = execution.getVariable("isDebugLogEnabled") -// String msg = "" -// utils.log("DEBUG"," ***** extractServiceModelInfo of CreateGenericMacroServiceNetworkVnf *****", isDebugEnabled) -// -// try { -// -// // check for input -// String requestId = execution.getVariable("msoRequestId") -// -// ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") -// ModelInfo modelInfo = serviceDecomposition.getModelInfo() -// -// utils.log("DEBUG", "modelInfo: "+ modelInfo.toJsonString(), isDebugEnabled) -// utils.log("DEBUG", "modelInfo: "+ modelInfo, isDebugEnabled) -// execution.setVariable("serviceDecomposition", modelInfo) -// -// utils.log("DEBUG"," ***** Exit extractServiceModelInfo of CreateGenericMacroServiceNetworkVnf *****", isDebugEnabled) -// -// } catch (BpmnError e) { -// throw e; -// } catch (Exception ex){ -// msg = "Exception in extractServiceModelInfo " + ex.getMessage() -// utils.log("DEBUG", msg, isDebugEnabled) -// exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) -// } -// utils.log("DEBUG"," ***** Exit extractServiceModelInfo of DecomposeService *****", isDebugEnabled) -// } - - // ******************************* - // Build DB request Section - // ******************************* -// public void prepareDBRequest (Execution execution) { -// def isDebugEnabled=execution.getVariable("isDebugLogEnabled") -// -// try { -// utils.log("DEBUG", " ***** Inside prepareDBRequest of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) -// -// String requestId = execution.getVariable("CGMSNV_requestId") -// String statusMessage = "vIPR ATM Service Instance successfully created." -// String serviceInstanceId = execution.getVariable("CGMSNV_serviceInstanceId") -// -// //TODO - verify the format for Service Instance Create, -// String dbRequest = -// """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> -// <soapenv:Header/> -// <soapenv:Body> -// <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">
-// <requestId>${requestId}</requestId> -// <lastModifiedBy>BPMN</lastModifiedBy> -// <statusMessage>${statusMessage}</statusMessage> -// <responseBody></responseBody> -// <requestStatus>COMPLETED</requestStatus> -// <progress>100</progress> -// <vnfOutputs/> -// <serviceInstanceId>${serviceInstanceId}</serviceInstanceId> -// </ns:updateInfraRequest> -// </soapenv:Body> -// </soapenv:Envelope>""" -// -// String buildDeleteDBRequestAsString = utils.formatXml(dbRequest) -// execution.setVariable("CGMSNV_createDBRequest", buildDeleteDBRequestAsString) -// utils.logAudit(buildDeleteDBRequestAsString) -// -// utils.log("DEBUG", " ***** Completed prepareDBRequest of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) -// } catch (Exception ex) { -// // try error in method block -// String exceptionMessage = "Bpmn error encountered in CreateGenericMacroServiceNetworkVnf flow. Unexpected Error from method prepareDBRequest() - " + ex.getMessage() -// exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) -// -// } -// -// } - - - // ***************************************** - // Prepare Completion request Section - // ***************************************** - public void postProcessResponse (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - utils.log("DEBUG", " ***** Inside postProcessResponse of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - try { - String source = execution.getVariable("source") - String requestId = execution.getVariable("mso-request-id") - String serviceInstanceId = execution.getVariable("serviceInstanceId") - - String msoCompletionRequest = - """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
- xmlns:ns="http://org.openecomp/mso/request/types/v1">
- <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
- <request-id>${requestId}</request-id> - <action>CREATE</action> - <source>${source}</source> - </request-info> - <status-message>Service Instance has been created successfully via macro orchestration</status-message> - <serviceInstanceId>${serviceInstanceId}</serviceInstanceId> - <mso-bpel-name>BPMN macro create</mso-bpel-name> - </aetgt:MsoCompletionRequest>""" - - // Format Response - String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) - - utils.logAudit(xmlMsoCompletionRequest) - execution.setVariable("CGMSNV_Success", true) - execution.setVariable("CGMSNV_CompleteMsoProcessRequest", xmlMsoCompletionRequest) - utils.log("DEBUG", " SUCCESS flow, going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest, isDebugEnabled) - } catch (BpmnError e) { - throw e; - } catch (Exception ex) { - // try error in method block - String exceptionMessage = "Bpmn error encountered in CreateServiceInstance flow. Unexpected Error from method postProcessResponse() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - public void preProcessRollback (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - utils.log("DEBUG"," ***** preProcessRollback of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - try { - - Object workflowException = execution.getVariable("WorkflowException"); - - if (workflowException instanceof WorkflowException) { - utils.log("DEBUG", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugEnabled) - execution.setVariable("prevWorkflowException", workflowException); - //execution.setVariable("WorkflowException", null); - } - } catch (BpmnError e) { - utils.log("DEBUG", "BPMN Error during preProcessRollback", isDebugEnabled) - } catch(Exception ex) { - String msg = "Exception in preProcessRollback. " + ex.getMessage() - utils.log("DEBUG", msg, isDebugEnabled) - } - utils.log("DEBUG"," *** Exit preProcessRollback of CreateGenericMacroServiceNetworkVnf *** ", isDebugEnabled) - } - - public void postProcessRollback (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - utils.log("DEBUG"," ***** postProcessRollback of CreateGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - String msg = "" - try { - Object workflowException = execution.getVariable("prevWorkflowException"); - if (workflowException instanceof WorkflowException) { - utils.log("DEBUG", "Setting prevException to WorkflowException: ", isDebugEnabled) - execution.setVariable("WorkflowException", workflowException); - } - } catch (BpmnError b) { - utils.log("DEBUG", "BPMN Error during postProcessRollback", isDebugEnabled) - throw b; - } catch(Exception ex) { - msg = "Exception in postProcessRollback. " + ex.getMessage() - utils.log("DEBUG", msg, isDebugEnabled) - } - utils.log("DEBUG"," *** Exit postProcessRollback of CreateGenericMacroServiceNetworkVnf *** ", isDebugEnabled) - } - - public void prepareFalloutRequest(Execution execution){ - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - utils.log("DEBUG", " *** STARTED CreateGenericMacroServiceNetworkVnf prepareFalloutRequest Process *** ", isDebugEnabled) - - try { - WorkflowException wfex = execution.getVariable("WorkflowException") - utils.log("DEBUG", " Incoming Workflow Exception: " + wfex.toString(), isDebugEnabled) - String requestInfo = execution.getVariable("CGMSNV_requestInfo") - utils.log("DEBUG", " Incoming Request Info: " + requestInfo, isDebugEnabled) - - //TODO. hmmm. there is no way to UPDATE error message. -// String errorMessage = wfex.getErrorMessage() -// boolean successIndicator = execution.getVariable("DCRESI_rollbackSuccessful") -// if (successIndicator){ -// errorMessage = errorMessage + ". Rollback successful." -// } else { -// errorMessage = errorMessage + ". Rollback not completed." -// } - - String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo) - - execution.setVariable("CGMSNV_falloutRequest", falloutRequest) - - } catch (Exception ex) { - utils.log("DEBUG", "Error Occured in CreateGenericMacroServiceNetworkVnf prepareFalloutRequest Process " + ex.getMessage(), isDebugEnabled) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateGenericMacroServiceNetworkVnf prepareFalloutRequest Process") - } - utils.log("DEBUG", "*** COMPLETED CreateGenericMacroServiceNetworkVnf prepareFalloutRequest Process ***", isDebugEnabled) - } - - - public void sendSyncError (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - execution.setVariable("prefix", Prefix) - - utils.log("DEBUG", " ***** Inside sendSyncError() of CreateServiceInstanceInfra ***** ", isDebugEnabled) - - try { - String errorMessage = "" - if (execution.getVariable("WorkflowException") instanceof WorkflowException) { - WorkflowException wfe = execution.getVariable("WorkflowException") - errorMessage = wfe.getErrorMessage() - } else { - errorMessage = "Sending Sync Error." - } - - String buildworkflowException = - """<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
- <aetgt:ErrorMessage>${errorMessage}</aetgt:ErrorMessage> - <aetgt:ErrorCode>7000</aetgt:ErrorCode> - </aetgt:WorkflowException>""" - - utils.logAudit(buildworkflowException) - sendWorkflowResponse(execution, 500, buildworkflowException) - } catch (Exception ex) { - utils.log("DEBUG", " Sending Sync Error Activity Failed. " + "\n" + ex.getMessage(), isDebugEnabled) - } - } - - public void processJavaException(Execution execution){ - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - execution.setVariable("prefix",Prefix) - try{ - utils.log("DEBUG", "Caught a Java Exception", isDebugEnabled) - utils.log("DEBUG", "Started processJavaException Method", isDebugEnabled) - utils.log("DEBUG", "Variables List: " + execution.getVariables(), isDebugEnabled) - execution.setVariable("CRESI_unexpectedError", "Caught a Java Lang Exception") // Adding this line temporarily until this flows error handling gets updated - exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Caught a Java Lang Exception") - }catch(BpmnError b){ - utils.log("ERROR", "Rethrowing MSOWorkflowException", isDebugEnabled) - throw b - }catch(Exception e){ - utils.log("DEBUG", "Caught Exception during processJavaException Method: " + e, isDebugEnabled) - execution.setVariable("CRESI_unexpectedError", "Exception in processJavaException method") // Adding this line temporarily until this flows error handling gets updated - exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception in processJavaException method") - } - utils.log("DEBUG", "Completed processJavaException Method", isDebugEnabled) - } -}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstance.groovy index 11de8d9819..54f676f731 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstance.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstance.groovy @@ -1,32 +1,32 @@ -/*-
- * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
- * ================================================================================
- * 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=========================================================
+/*- + * ============LICENSE_START======================================================= + * OPENECOMP - MSO + * ================================================================================ + * 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.mso.bpmn.infrastructure.scripts;
+ +package org.openecomp.mso.bpmn.infrastructure.scripts; import groovy.xml.XmlUtil import groovy.json.* -import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
-import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
-import org.openecomp.mso.bpmn.core.WorkflowException
-import org.openecomp.mso.bpmn.core.json.JsonUtils
-import org.openecomp.mso.rest.APIResponse
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil +import org.openecomp.mso.bpmn.core.WorkflowException +import org.openecomp.mso.bpmn.core.json.JsonUtils +import org.openecomp.mso.rest.APIResponse import java.util.UUID; @@ -105,12 +105,12 @@ public class CreateNetworkInstance extends AbstractServiceTaskProcessor { utils.log("DEBUG", " 'disableRollback' : " + execution.getVariable("disableRollback") , isDebugEnabled) } - // get/set 'msoRequestId' and 'mso-request-id'
+ // get/set 'msoRequestId' and 'mso-request-id' String requestId = execution.getVariable("msoRequestId") if (requestId != null) { - execution.setVariable("mso-request-id", requestId)
+ execution.setVariable("mso-request-id", requestId) } else { - requestId = execution.getVariable("mso-request-id")
+ requestId = execution.getVariable("mso-request-id") } execution.setVariable(Prefix + "requestId", requestId) @@ -161,7 +161,7 @@ public class CreateNetworkInstance extends AbstractServiceTaskProcessor { utils.log("DEBUG", " ***** Inside sendSyncResponse() of CreateNetworkInstance ***** ", isDebugEnabled) try { - String requestId = execution.getVariable("mso-request-id")
+ String requestId = execution.getVariable("mso-request-id") // RESTResponse (for API Handler (APIH) Reply Task) String createNetworkRestRequest = """{"requestReferences":{"instanceId":"","requestId":"${requestId}"}}""".trim() @@ -186,14 +186,11 @@ public class CreateNetworkInstance extends AbstractServiceTaskProcessor { try { - // "networkModelInfo" is expected to be sent - String networkModelInfo = execution.getVariable("networkModelInfo") - utils.log("DEBUG", " networkModelInfo - " + networkModelInfo, isDebugEnabled) - - // "serviceModelInfo" is expected to be sent - String serviceModelInfo = execution.getVariable("serviceModelInfo") - utils.log("DEBUG", " serviceModelInfo - " + serviceModelInfo, isDebugEnabled) - + // For Ala-Carte (sdnc = 1610): + // 1. the Network ModelInfo is expected to be sent + // via requestDetails.modelInfo (modelType = network). + // 2. the Service ModelInfo is expected to be sent but will be IGNORE + // via requestDetails.relatedInstanceList.relatedInstance.modelInfo (modelType = service) } catch (Exception ex) { sendSyncError(execution) @@ -214,7 +211,7 @@ public class CreateNetworkInstance extends AbstractServiceTaskProcessor { try { - String requestId = execution.getVariable("mso-request-id")
+ String requestId = execution.getVariable("mso-request-id") // REST Error (for API Handler (APIH) Reply Task) String syncError = """{"requestReferences":{"instanceId":"","requestId":"${requestId}"}}""".trim() @@ -234,6 +231,9 @@ public class CreateNetworkInstance extends AbstractServiceTaskProcessor { try { utils.log("DEBUG", " ***** Inside prepareDBRequestError() of CreateNetworkInstance ***** ", isDebugEnabled) + // set DB Header Authorization + setBasicDBAuthHeader(execution, isDebugEnabled) + String statusMessage = "" WorkflowException wfe = null if (execution.getVariable("WorkflowException") instanceof WorkflowException) { @@ -248,7 +248,7 @@ public class CreateNetworkInstance extends AbstractServiceTaskProcessor { """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header/> <soapenv:Body> - <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">
+ <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb"> <requestId>${requestId}</requestId> <lastModifiedBy>BPMN</lastModifiedBy> <statusMessage>${statusMessage}</statusMessage> @@ -280,13 +280,13 @@ public class CreateNetworkInstance extends AbstractServiceTaskProcessor { try { - String requestId = execution.getVariable("mso-request-id")
+ String requestId = execution.getVariable("mso-request-id") String source = execution.getVariable(Prefix + "source") String msoCompletionRequest = - """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
- xmlns:ns="http://org.openecomp/mso/request/types/v1">
- <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1" + xmlns:ns="http://org.openecomp/mso/request/types/v1"> + <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1"> <request-id>${requestId}</request-id> <action>CREATE</action> <source>VID</source> @@ -379,25 +379,29 @@ public class CreateNetworkInstance extends AbstractServiceTaskProcessor { def isDebugEnabled=execution.getVariable("isDebugLogEnabled") execution.setVariable("prefix", Prefix) + utils.log("DEBUG", "DB updateInfraRequest ResponseCode: " + execution.getVariable(Prefix + "dbReturnCode"), isDebugEnabled) + utils.log("DEBUG", "DB updateInfraRequest Response: " + execution.getVariable(Prefix + "createDBResponse"), isDebugEnabled) + utils.log("DEBUG", " ***** Prepare for FalloutHandler. FAILURE - prepare request for sub-process FalloutHandler. *****", isDebugEnabled) String falloutHandlerRequest = "" - String requestId = execution.getVariable("mso-request-id")
+ String requestId = execution.getVariable("mso-request-id") try { + WorkflowException wfe = execution.getVariable("WorkflowException") String errorCode = String.valueOf(wfe.getErrorCode()) String errorMessage = wfe.getErrorMessage() falloutHandlerRequest = - """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
- xmlns:ns="http://org.openecomp/mso/request/types/v1"
- xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">
- <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1" + xmlns:ns="http://org.openecomp/mso/request/types/v1" + xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1"> + <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1"> <request-id>${requestId}</request-id> <action>CREATE</action> <source>VID</source> </request-info> - <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"> <aetgt:ErrorMessage>${errorMessage}</aetgt:ErrorMessage> <aetgt:ErrorCode>${errorCode}</aetgt:ErrorCode> </aetgt:WorkflowException> @@ -408,18 +412,18 @@ public class CreateNetworkInstance extends AbstractServiceTaskProcessor { utils.log("DEBUG", " Overall Error Response going to FalloutHandler: " + "\n" + falloutHandlerRequest, isDebugEnabled) } catch (Exception ex) { - String errorException = " Bpmn error encountered in CreateNetworkInstance flow. FalloutHandlerRequest, buildErrorResponse() - " + ex.getMessage() - utils.log("DEBUG", errorException, isDebugEnabled) + String errorException = " Bpmn error encountered in CreateNetworkInstance flow. FalloutHandlerRequest, buildErrorResponse()" + utils.log("DEBUG", "Exception error in CreateNetworkInstance flow, buildErrorResponse(): " + ex.getMessage(), isDebugEnabled) falloutHandlerRequest = - """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
- xmlns:ns="http://org.openecomp/mso/request/types/v1"
- xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">
- <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1" + xmlns:ns="http://org.openecomp/mso/request/types/v1" + xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1"> + <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1"> <request-id>${requestId}</request-id> <action>CREATE</action> <source>VID</source> </request-info> - <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"> <aetgt:ErrorMessage>${errorException}</aetgt:ErrorMessage> <aetgt:ErrorCode>7000</aetgt:ErrorCode> </aetgt:WorkflowException> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy index b468a5116c..74234f8d6e 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy @@ -51,6 +51,8 @@ public class CreateVfModuleInfra extends AbstractServiceTaskProcessor { def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') logDebug('Entered ' + method, isDebugLogEnabled) + execution.setVariable("CVFMI_sentSyncResponse", false) + def prefix = 'CVFMI_' logDebug('Entered 1' + method, isDebugLogEnabled) execution.setVariable('prefix', prefix) @@ -71,6 +73,8 @@ public class CreateVfModuleInfra extends AbstractServiceTaskProcessor { utils.log("DEBUG", "Incoming Infra Request: " + incomingRequest, isDebugLogEnabled) utils.logAudit("CreateVfModule Infra incoming Request: " + incomingRequest) + setBasicDBAuthHeader(execution, isDebugLogEnabled) + // check if request is xml or json try { def jsonSlurper = new JsonSlurper() @@ -156,7 +160,7 @@ public class CreateVfModuleInfra extends AbstractServiceTaskProcessor { } } - execution.setVariable(prefix + 'disableRollback', suppressRollback) + execution.setVariable('disableRollback', suppressRollback) def vfModuleName = reqMap.requestDetails?.requestInfo?.instanceName ?: null execution.setVariable(prefix + 'vfModuleName', vfModuleName) @@ -198,9 +202,7 @@ public class CreateVfModuleInfra extends AbstractServiceTaskProcessor { execution.setVariable("CVFMI_requestInfo", requestInfo) //backoutOnFailure - - //NetworkUtils networkUtils = new NetworkUtils() - //execution.setVariable("CVFMI_rollbackEnabled", networkUtils.isRollbackEnabled(execution,request)) + execution.setVariable("CVFMI_originalWorkflowException", null) @@ -266,6 +268,7 @@ public class CreateVfModuleInfra extends AbstractServiceTaskProcessor { sendWorkflowResponse(execution, 200, synchResponse) + execution.setVariable("CVFMI_sentSyncResponse", true) utils.logAudit("CreateVfModule Infra Response: " + synchResponse) logDebug('Exited ' + method, isDebugLogEnabled) } catch (BpmnError e) { @@ -291,18 +294,6 @@ public class CreateVfModuleInfra extends AbstractServiceTaskProcessor { utils.log("DEBUG", "requestInfo is: " + requestInfo, isDebugEnabled) utils.log("DEBUG", "action is: " + action, isDebugEnabled) - try {
- String basicAuthValueDB = execution.getVariable("URN_mso_adapters_db_auth")
- utils.log("DEBUG", " Obtained BasicAuth userid password for Catalog DB adapter: " + basicAuthValueDB, isDebugEnabled)
-
- def encodedString = utils.getBasicAuth(basicAuthValueDB, execution.getVariable("URN_mso_msoKey"))
- execution.setVariable("BasicAuthHeaderValueDB",encodedString)
- } catch (IOException ex) {
- String dataErrorMessage = " Unable to encode Catalog DB user/password string - " + ex.getMessage()
- utils.log("DEBUG", dataErrorMessage, isDebugEnabled)
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
- }
-
String payload = """ <aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1" xmlns:ns="http://org.openecomp/mso/request/types/v1" @@ -417,22 +408,10 @@ public class CreateVfModuleInfra extends AbstractServiceTaskProcessor { // vfModuleName may be generated by DoCreateVfModule subprocess if it is not specified on the input def vfModuleName = execution.getVariable("CVFMI_vfModuleName") - def dbAdapterEndpoint = execution.getVariable("URN_mso_adapters_db_endpoint") + def dbAdapterEndpoint = execution.getVariable("URN_mso_openecomp_adapters_db_endpoint") execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint) utils.log("DEBUG", "DB Adapter Endpoint is: " + dbAdapterEndpoint, isDebugEnabled) - try {
- String basicAuthValueDB = execution.getVariable("URN_mso_adapters_db_auth")
- utils.log("DEBUG", " Obtained BasicAuth userid password for Catalog DB adapter: " + basicAuthValueDB, isDebugEnabled)
-
- def encodedString = utils.getBasicAuth(basicAuthValueDB, execution.getVariable("URN_mso_msoKey"))
- execution.setVariable("BasicAuthHeaderValueDB",encodedString)
- } catch (IOException ex) {
- String dataErrorMessage = " Unable to encode Catalog DB user/password string - " + ex.getMessage()
- utils.log("DEBUG", dataErrorMessage, isDebugEnabled)
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
- }
-
String payload = """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://org.openecomp.mso/requestsdb"> @@ -542,7 +521,29 @@ public class CreateVfModuleInfra extends AbstractServiceTaskProcessor { } - + public void sendErrorResponse(Execution execution){ + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + + utils.log("DEBUG", " *** STARTED CreateVfModulenfra sendErrorResponse Process *** ", isDebugEnabled) + try { + def sentSyncResponse = execution.getVariable("CVFMI_sentSyncResponse") + if(sentSyncResponse == false){ + WorkflowException wfex = execution.getVariable("WorkflowException") + String response = exceptionUtil.buildErrorResponseXml(wfex) + + utils.logAudit(response) + sendWorkflowResponse(execution, 500, response) + }else{ + utils.log("DEBUG", "Not Sending Error Response. Sync Response Already Sent", isDebugEnabled) + } + + } catch (Exception ex) { + utils.log("DEBUG", "Error Occured in CreateVfModuleInfra sendErrorResponse Process " + ex.getMessage(), isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVfModuleInfra sendErrorResponse Process") + + } + utils.log("DEBUG", "*** COMPLETED CreateVfModuleInfra sendErrorResponse Process ***", isDebugEnabled) + } } diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy index 48ca2905c1..4d40938d86 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy @@ -26,7 +26,9 @@ import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil; import org.openecomp.mso.bpmn.common.scripts.VidUtils; import org.openecomp.mso.bpmn.core.WorkflowException import org.openecomp.mso.rest.APIResponse +import java.util.Map; +import groovy.json.JsonOutput import groovy.json.JsonSlurper import org.camunda.bpm.engine.delegate.BpmnError @@ -43,6 +45,7 @@ class CreateVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { */ public void preProcessRequest (Execution execution) { def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + setBasicDBAuthHeader(execution, isDebugEnabled) preProcessRequest(execution, isDebugEnabled) } @@ -64,47 +67,96 @@ class CreateVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { try { def jsonSlurper = new JsonSlurper() Map reqMap = jsonSlurper.parseText(createVolumeIncoming) - - def serviceInstanceId = execution.getVariable('serviceInstanceId') - def vnfId = execution.getVariable('vnfId') - - def vidUtils = new VidUtils(this) - createVolumeIncoming = vidUtils.createXmlVolumeRequest(reqMap, 'CREATE_VF_MODULE_VOL', serviceInstanceId) - - execution.setVariable(prefix+'Request', createVolumeIncoming) - execution.setVariable(prefix+'vnfId', vnfId) - execution.setVariable(prefix+'isVidRequest', true) - + setupVariables(execution, reqMap, isDebugEnabled) utils.log("DEBUG", "XML request:\n" + createVolumeIncoming, isDebugEnabled) - } catch(groovy.json.JsonException je) { (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, 'Request is not a valid JSON document') } - execution.setVariable(prefix+'source', utils.getNodeText1(createVolumeIncoming, "source")) - execution.setVariable(prefix+'volumeGroupName', utils.getNodeText1(createVolumeIncoming, 'volume-group-name')) - execution.setVariable(prefix+'volumeOutputs', utils.getNodeXml(createVolumeIncoming, 'volume-outputs', false)) - - execution.setVariable(prefix+'serviceType', 'service-instance') - execution.setVariable(prefix+'serviceInstanceId', utils.getNodeText1(createVolumeIncoming, "service-instance-id")) + // For rollback in this flow + setBasicDBAuthHeader(execution, isDebugEnabled) + setRollbackEnabled(execution, isDebugEnabled) + } - // Generate volume group id + + /** + * Set up variables that will be passed to the BB DoCreatevfModuleVolume flow + * @param execution + * @param requestMap + * @param serviceInstanceId + * @param isDebugLogEnabled + */ + public void setupVariables(Execution execution, Map requestMap, isDebugLogEnabled) { + + def jsonOutput = new JsonOutput() + + // volumeGroupId - is generated String volumeGroupId = UUID.randomUUID() - utils.log("DEBUG", "Generated volume group id: " + volumeGroupId, isDebugEnabled) + execution.setVariable('volumeGroupId', volumeGroupId) + utils.log("DEBUG", "Generated volumeGroupId: " + volumeGroupId, isDebugLogEnabled) + + // volumeGroupName + def volGrpName = requestMap.requestDetails.requestInfo?.instanceName ?: '' + execution.setVariable('volumeGroupName', volGrpName) - def testGroupId = execution.getVariable('test-volume-group-id') - if (testGroupId != null && testGroupId.trim() != '') { - volumeGroupId = testGroupId + // vfModuleModelInfo + def vfModuleModelInfo = jsonOutput.toJson(requestMap.requestDetails?.modelInfo) + execution.setVariable('vfModuleModelInfo', vfModuleModelInfo) + + // lcpCloudRegonId + def lcpCloudRegionId = requestMap.requestDetails.cloudConfiguration.lcpCloudRegionId + execution.setVariable('lcpCloudRegionId', lcpCloudRegionId) + + // tenant + def tenantId = requestMap.requestDetails.cloudConfiguration.tenantId + execution.setVariable('tenantId', tenantId) + + // source + def source = requestMap.requestDetails.requestInfo.source + execution.setVariable(prefix+'source', source) + + // vnfType and asdcServiceModelVersion + + def serviceName = '' + def asdcServiceModelVersion = '' + def modelCustomizationName = '' + + def relatedInstanceList = requestMap.requestDetails.relatedInstanceList + relatedInstanceList.each { + if (it.relatedInstance.modelInfo?.modelType == 'service') { + serviceName = it.relatedInstance.modelInfo?.modelName + asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion + } + if (it.relatedInstance.modelInfo?.modelType == 'vnf') { + modelCustomizationName = it.relatedInstance.modelInfo?.modelCustomizationName + } } + + def vnfType = serviceName + '/' + modelCustomizationName + execution.setVariable('vnfType', vnfType) + execution.setVariable('asdcServiceModelVersion', asdcServiceModelVersion) + + // vfModuleInputParams + def userParams = requestMap.requestDetails?.requestParameters?.userParams + Map<String, String> vfModuleInputMap = [:] + + userParams.each { userParam -> + vfModuleInputMap.put(userParam.name, userParam.value) + } + execution.setVariable('vfModuleInputParams', vfModuleInputMap) - execution.setVariable(prefix+'volumeGroupId', volumeGroupId) - + // disableRollback (true or false) + def disableRollback = requestMap.requestDetails.requestInfo.suppressRollback + execution.setVariable('disableRollback', disableRollback) + utils.log("DEBUG", 'disableRollback (suppressRollback) from request: ' + disableRollback, isDebugLogEnabled) + } - + + public void sendSyncResponse (Execution execution, isDebugEnabled) { - def volumeGroupId = execution.getVariable(prefix+'volumeGroupId') + def volumeGroupId = execution.getVariable('volumeGroupId') def requestId = execution.getVariable("mso-request-id") def serviceInstanceId = execution.getVariable("serviceInstanceId") @@ -137,24 +189,17 @@ class CreateVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { } + /** + * Build Infra DB Request + * @param execution + * @param isDebugEnabled + */ public void prepareDbInfraSuccessRequest(Execution execution, isDebugEnabled) { def dbVnfOutputs = execution.getVariable(prefix+'volumeOutputs') def requestId = execution.getVariable('mso-request-id') def statusMessage = "VolumeGroup successfully created." def requestStatus = "COMPLETED" def progress = "100" - - try { - String basicAuthValueDB = execution.getVariable("URN_mso_adapters_db_auth") - utils.log("DEBUG", " Obtained BasicAuth userid password for Catalog DB adapter: " + basicAuthValueDB, isDebugEnabled) - - def encodedString = utils.getBasicAuth(basicAuthValueDB, execution.getVariable("URN_mso_msoKey")) - execution.setVariable("BasicAuthHeaderValueDB",encodedString) - } catch (IOException ex) { - String dataErrorMessage = " Unable to encode Catalog DB user/password string - " + ex.getMessage() - utils.log("DEBUG", dataErrorMessage, isDebugEnabled) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) - } /* from: $gVolumeGroup/aai:volume-group-id/text() @@ -180,16 +225,18 @@ class CreateVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { </soapenv:Body> </soapenv:Envelope>""" - String buildDeleteDBRequestAsString = utils.formatXml(dbRequest) - execution.setVariable(prefix+"createDBRequest", buildDeleteDBRequestAsString) - - utils.logAudit(buildDeleteDBRequestAsString) + String buildDBRequestAsString = utils.formatXml(dbRequest) + execution.setVariable(prefix+"createDBRequest", buildDBRequestAsString) + utils.log("DEBUG", "DB Infra Request: " + buildDBRequestAsString, isDebugEnabled) + utils.logAudit(buildDBRequestAsString) } - - - + /** + * Build CommpleteMsoProcess request + * @param execution + * @param isDebugEnabled + */ public void postProcessResponse (Execution execution, isDebugEnabled) { def dbReturnCode = execution.getVariable(prefix+'dbReturnCode') @@ -300,4 +347,17 @@ class CreateVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { } } } + + public void logAndSaveOriginalException(Execution execution, isDebugLogEnabled) { + logWorkflowException(execution, 'CreateVfModuleVolumeInfraV1 caught an event') + saveWorkflowException(execution, 'CVMVINFRAV1_originalWorkflowException') + } + + public void validateRollbackResponse(Execution execution, isDebugLogEnabled) { + + def originalException = execution.getVariable("CVMVINFRAV1_originalWorkflowException") + execution.setVariable("WorkflowException", originalException) + execution.setVariable("RollbackCompleted", true) + + } } diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVnfInfra.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVnfInfra.groovy index 9b7fd6835c..311c1c727a 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVnfInfra.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVnfInfra.groovy @@ -26,6 +26,9 @@ import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.runtime.Execution; import static org.apache.commons.lang3.StringUtils.*; +import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils; +import org.json.JSONObject; +import org.json.JSONArray; import org.openecomp.mso.bpmn.common.scripts.AaiUtil; import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor; @@ -33,6 +36,7 @@ import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil; import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils; import org.openecomp.mso.bpmn.common.scripts.VidUtils; import org.openecomp.mso.bpmn.core.WorkflowException +import org.openecomp.mso.bpmn.core.domain.VnfResource import org.openecomp.mso.bpmn.core.json.JsonUtils; @@ -47,6 +51,7 @@ class CreateVnfInfra extends AbstractServiceTaskProcessor { ExceptionUtil exceptionUtil = new ExceptionUtil() JsonUtils jsonUtil = new JsonUtils() VidUtils vidUtils = new VidUtils(this) + CatalogDbUtils cutils = new CatalogDbUtils() /** * This method gets and validates the incoming @@ -59,7 +64,8 @@ class CreateVnfInfra extends AbstractServiceTaskProcessor { def isDebugEnabled = execution.getVariable("isDebugLogEnabled") execution.setVariable("prefix",Prefix) utils.log("DEBUG", " *** STARTED CreateVnfInfra PreProcessRequest Process*** ", isDebugEnabled) - + + setBasicDBAuthHeader(execution, isDebugEnabled) execution.setVariable("CREVI_sentSyncResponse", false) try{ @@ -101,7 +107,7 @@ class CreateVnfInfra extends AbstractServiceTaskProcessor { def vnfModelInfo = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.modelInfo") execution.setVariable("CREVI_vnfModelInfo", vnfModelInfo) - String modelInvariantId = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.modelInfo.modelInvariantId") + String modelInvariantId = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.modelInfo.modelInvariantUuid") execution.setVariable("CREVI_modelInvariantId", modelInvariantId) utils.log("DEBUG", "Incoming Invariant Id is: " + modelInvariantId, isDebugEnabled) @@ -157,7 +163,13 @@ class CreateVnfInfra extends AbstractServiceTaskProcessor { } execution.setVariable("CREVI_sdncCallbackUrl", sdncCallbackUrl) - def vnfInputParameters = jsonUtil.getJsonValue(createVnfRequest, "requestParameters.userParams") + def vnfInputParameters = null + try { + vnfInputParameters = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.requestParameters.userParams") + } + catch (Exception e) { + utils.log("DEBUG", "userParams are not present in the request", isDebugEnabled) + } execution.setVariable("CREVI_vnfInputParameters", vnfInputParameters) @@ -429,4 +441,56 @@ class CreateVnfInfra extends AbstractServiceTaskProcessor { utils.log("DEBUG", "*** COMPLETED CreateVnfInfra prepareFalloutRequest Process ***", isDebugEnabled) } + + public void queryCatalogDB (Execution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + + utils.log("DEBUG", " *** STARTED CreateVnfInfra QueryCatalogDB Process *** ", isDebugEnabled) + try { + //Get Vnf Info + String vnfModelInfo = execution.getVariable("CREVI_vnfModelInfo") + String vnfModelCustomizationUuid = jsonUtil.getJsonValueForKey(vnfModelInfo, "modelCustomizationUuid") + utils.log("DEBUG", "querying Catalog DB by vnfModelCustomizationUuid: " + vnfModelCustomizationUuid, isDebugEnabled) + + JSONArray vnfs = cutils.getAllVnfsByVnfModelCustomizationUuid(execution, + vnfModelCustomizationUuid, "v2") + utils.log("DEBUG", "obtained VNF list: " + vnfs, isDebugEnabled) + execution.setVariable("CREVI_vnfs", vnfs) + + if (vnfs == null) { + utils.log("ERROR", "No matching VNFs in Catalog DB for vnfModelCustomizationUuid=" + vnfModelCustomizationUuid, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "No matching VNFs in Catalog DB for vnfModelCustomizationUuid=" + vnfModelCustomizationUuid) + } + + // Only one match here + JSONObject vnf = vnfs.get(0) + + if (vnf == null) { + utils.log("ERROR", "No matching VNF in Catalog DB for vnfModelCustomizationUuid=" + vnfModelCustomizationUuid, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "No matching VNF in Catalog DB for vnfModelCustomizationUuid=" + vnfModelCustomizationUuid) + } + + VnfResource vnfResource = new VnfResource() + String nfType = jsonUtil.getJsonValueForKey(vnf, "nfType") + vnfResource.setNfType(nfType) + String nfRole = jsonUtil.getJsonValueForKey(vnf, "nfRole") + vnfResource.setNfRole(nfRole) + String nfFunction = jsonUtil.getJsonValueForKey(vnf, "nfFunction") + vnfResource.setNfFunction(nfFunction) + String nfNamingCode = jsonUtil.getJsonValueForKey(vnf, "nfNamingCode") + vnfResource.setNfNamingCode(nfNamingCode) + + execution.setVariable("CREVI_vnfResourceDecomposition", vnfResource) + + }catch(BpmnError e) { + throw e; + }catch(Exception ex) { + utils.log("DEBUG", "Error Occurred in CreateVnfInfra QueryCatalogDB Process " + ex.getMessage(), isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occurred in CreateVnfInfra QueryCatalogDB Process") + } + + + utils.log("DEBUG", "*** COMPLETED CreateVnfInfra QueryCatalogDb Process ***", isDebugEnabled) + } } diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericALaCarteServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericALaCarteServiceInstance.groovy index 7555885bcb..c3aadaf61e 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericALaCarteServiceInstance.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericALaCarteServiceInstance.groovy @@ -126,6 +126,27 @@ public class DeleteGenericALaCarteServiceInstance extends AbstractServiceTaskPro } else { execution.setVariable("subscriptionServiceType", subscriptionServiceType) } + + /* + * Extracting User Parameters from incoming Request and converting into a Map + */ + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + + Map reqMap = jsonSlurper.parseText(siRequest) + + //InputParams + def userParams = reqMap.requestDetails?.requestParameters?.userParams + + Map<String, String> inputMap = [:] + if (userParams) { + userParams.each { + userParam -> inputMap.put(userParam.name, userParam.value) + } + } + + utils.log("DEBUG", "User Input Parameters map: " + userParams.toString(), isDebugEnabled) + execution.setVariable("serviceInputParams", inputMap) } catch (BpmnError e) { throw e; @@ -171,7 +192,7 @@ public class DeleteGenericALaCarteServiceInstance extends AbstractServiceTaskPro } String buildworkflowException = - """<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ """<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"> <aetgt:ErrorMessage>${errorMessage}</aetgt:ErrorMessage> <aetgt:ErrorCode>7000</aetgt:ErrorCode> </aetgt:WorkflowException>""" @@ -193,9 +214,9 @@ public class DeleteGenericALaCarteServiceInstance extends AbstractServiceTaskPro String requestId = execution.getVariable("msoRequestId") String source = execution.getVariable("source") String msoCompletionRequest = - """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
- xmlns:ns="http://org.openecomp/mso/request/types/v1">
- <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1" + xmlns:ns="http://org.openecomp/mso/request/types/v1"> + <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1"> <request-id>${requestId}</request-id> <action>DELETE</action> <source>${source}</source> @@ -228,7 +249,7 @@ public class DeleteGenericALaCarteServiceInstance extends AbstractServiceTaskPro String requestId = execution.getVariable("msoRequestId") String source = execution.getVariable("source") String requestInfo = - """<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ """<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1"> <request-id>${requestId}</request-id> <action>DELETE</action> <source>${source}</source> @@ -241,15 +262,15 @@ public class DeleteGenericALaCarteServiceInstance extends AbstractServiceTaskPro String errorException = " Bpmn error encountered in CreateServiceInstance flow. FalloutHandlerRequest, buildErrorResponse() - " + ex.getMessage() String requestId = execution.getVariable("msoRequestId") String falloutRequest = - """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
- xmlns:ns="http://org.openecomp/mso/request/types/v1"
- xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">
- <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1" + xmlns:ns="http://org.openecomp/mso/request/types/v1" + xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1"> + <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1"> <request-id>${requestId}</request-id> <action>DELETE</action> <source>VID</source> </request-info> - <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"> <aetgt:ErrorMessage>${errorException}</aetgt:ErrorMessage> <aetgt:ErrorCode>7000</aetgt:ErrorCode> </aetgt:WorkflowException> @@ -279,7 +300,7 @@ public class DeleteGenericALaCarteServiceInstance extends AbstractServiceTaskPro """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header/> <soapenv:Body> - <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">
+ <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb"> <requestId>${requestId}</requestId> <lastModifiedBy>BPMN</lastModifiedBy> <statusMessage>${statusMessage}</statusMessage> @@ -328,7 +349,7 @@ public class DeleteGenericALaCarteServiceInstance extends AbstractServiceTaskPro """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header/> <soapenv:Body> - <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">
+ <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb"> <requestId>${requestId}</requestId> <lastModifiedBy>BPMN</lastModifiedBy> <statusMessage>${statusMessage}</statusMessage> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericMacroServiceNetworkVnf.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericMacroServiceNetworkVnf.groovy deleted file mode 100644 index 108f8d3751..0000000000 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericMacroServiceNetworkVnf.groovy +++ /dev/null @@ -1,468 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * OPENECOMP - MSO - * ================================================================================ - * 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.mso.bpmn.infrastructure.scripts; - -import groovy.xml.XmlUtil -import groovy.json.* - -import org.openecomp.mso.bpmn.core.json.JsonUtils -import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor -import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils -import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil -import org.openecomp.mso.bpmn.common.scripts.NetworkUtils -import org.openecomp.mso.bpmn.common.scripts.VidUtils -import org.openecomp.mso.bpmn.core.WorkflowException -import org.openecomp.mso.rest.APIResponse; - - -import java.util.UUID; - -import org.camunda.bpm.engine.delegate.BpmnError -import org.camunda.bpm.engine.runtime.Execution -import org.json.JSONObject; -import org.json.JSONArray; -import org.apache.commons.lang3.* -import org.apache.commons.codec.binary.Base64; -import org.springframework.web.util.UriUtils; - -/** - * This groovy class supports the <class>DeleteViprAtmService.bpmn</class> process. - * - */ -public class DeleteGenericMacroServiceNetworkVnf extends AbstractServiceTaskProcessor { - - String Prefix="DELVAS_" - ExceptionUtil exceptionUtil = new ExceptionUtil() - JsonUtils jsonUtil = new JsonUtils() - VidUtils vidUtils = new VidUtils() - CatalogDbUtils catalogDbUtils = new CatalogDbUtils() - NetworkUtils networkUtils = new NetworkUtils() - - /** - * This method is executed during the preProcessRequest task of the <class>DeleteGenericMacroServiceNetworkVnf.bpmn</class> process. - * @param execution - */ - public InitializeProcessVariables(Execution execution){ - /* Initialize all the process variables in this block */ - - execution.setVariable("DeleteGenericMacroServiceNetworkVnfRequest", "") - execution.setVariable("msoRequestId", "") - execution.setVariable("DELVAS_vnfsDeletedCount", 0) - execution.setVariable("DELVAS_vnfsCount", 0) - execution.setVariable("DELVAS_networksCount", 0) - execution.setVariable("DELVAS_networksDeletedCount", 0) - } - - // ************************************************** - // Pre or Prepare Request Section - // ************************************************** - /** - * This method is executed during the preProcessRequest task of the <class>CreateServiceInstance.bpmn</class> process. - * @param execution - */ - public void preProcessRequest (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - execution.setVariable("prefix",Prefix) - - utils.log("DEBUG", " ***** Inside preProcessRequest DeleteGenericMacroServiceNetworkVnf Request ***** ", isDebugEnabled) - - try { - // initialize flow variables - InitializeProcessVariables(execution) - - // check for incoming json message/input - String DeleteGenericMacroServiceNetworkVnfRequest = execution.getVariable("bpmnRequest") - utils.logAudit(DeleteGenericMacroServiceNetworkVnfRequest) - execution.setVariable("DeleteGenericMacroServiceNetworkVnfRequest", DeleteGenericMacroServiceNetworkVnfRequest); - println 'DeleteGenericMacroServiceNetworkVnfRequest - ' + DeleteGenericMacroServiceNetworkVnfRequest - - // extract requestId - String requestId = execution.getVariable("mso-request-id") - execution.setVariable("msoRequestId", requestId) - - String serviceInstanceId = execution.getVariable("serviceInstanceId") - if ((serviceInstanceId == null) || (serviceInstanceId.isEmpty())) { - String dataErrorMessage = " Element 'serviceInstanceId' is missing. " - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) - } - - String requestAction = execution.getVariable("requestAction") - execution.setVariable("requestAction", requestAction) - - String source = jsonUtil.getJsonValue(DeleteGenericMacroServiceNetworkVnfRequest, "requestDetails.requestInfo.source") - if ((source == null) || (source.isEmpty())) { - execution.setVariable("source", "VID") - } else { - execution.setVariable("source", source) - } - - // extract globalSubscriberId - String globalSubscriberId = jsonUtil.getJsonValue(DeleteGenericMacroServiceNetworkVnfRequest, "requestDetails.subscriberInfo.globalSubscriberId") - - // global-customer-id is optional on Delete - - execution.setVariable("globalSubscriberId", globalSubscriberId) - execution.setVariable("globalCustomerId", globalSubscriberId) - - String suppressRollback = jsonUtil.getJsonValue(DeleteGenericMacroServiceNetworkVnfRequest, "requestDetails.requestInfo.suppressRollback") - execution.setVariable("disableRollback", suppressRollback) - utils.log("DEBUG", "Incoming Suppress/Disable Rollback is: " + suppressRollback, isDebugEnabled) - - String productFamilyId = jsonUtil.getJsonValue(DeleteGenericMacroServiceNetworkVnfRequest, "requestDetails.requestInfo.productFamilyId") - execution.setVariable("productFamilyId", productFamilyId) - utils.log("DEBUG", "Incoming productFamilyId is: " + productFamilyId, isDebugEnabled) - - // extract subscriptionServiceType - String subscriptionServiceType = jsonUtil.getJsonValue(DeleteGenericMacroServiceNetworkVnfRequest, "requestDetails.requestParameters.subscriptionServiceType") - execution.setVariable("subscriptionServiceType", subscriptionServiceType) - utils.log("DEBUG", "Incoming subscriptionServiceType is: " + subscriptionServiceType, isDebugEnabled) - - // extract cloud configuration - String lcpCloudRegionId = jsonUtil.getJsonValue(DeleteGenericMacroServiceNetworkVnfRequest, "requestDetails.cloudConfiguration.lcpCloudRegionId") - execution.setVariable("lcpCloudRegionId", lcpCloudRegionId) - utils.log("DEBUG","lcpCloudRegionId: "+ lcpCloudRegionId, isDebugEnabled) - String tenantId = jsonUtil.getJsonValue(DeleteGenericMacroServiceNetworkVnfRequest, "requestDetails.cloudConfiguration.tenantId") - execution.setVariable("tenantId", tenantId) - utils.log("DEBUG","tenantId: "+ tenantId, isDebugEnabled) - - String sdncVersion = "1707" - execution.setVariable("sdncVersion", sdncVersion) - utils.log("DEBUG","sdncVersion: "+ sdncVersion, isDebugEnabled) - - //For Completion Handler & Fallout Handler - String requestInfo = - """<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1"> - <request-id>${requestId}</request-id> - <action>DELETE</action> - <source>${source}</source> - </request-info>""" - - execution.setVariable("DELVAS_requestInfo", requestInfo) - - //Setting for Generic Sub Flows - execution.setVariable("GENGS_type", "service-instance") - - utils.log("DEBUG", " ***** Completed preProcessRequest DeleteGenericMacroServiceNetworkVnf Request ***** ", isDebugEnabled) - - } catch (BpmnError e) { - throw e; - } catch (Exception ex){ - String exceptionMessage = "Bpmn error encountered in DeleteGenericMacroServiceNetworkVnf flow. Unexpected from method preProcessRequest() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - public void sendSyncResponse (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - utils.log("DEBUG", " ***** Inside sendSyncResponse of DeleteGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - try { - String serviceInstanceId = execution.getVariable("serviceInstanceId") - String requestId = execution.getVariable("mso-request-id") - - // RESTResponse (for API Handler (APIH) Reply Task) - String syncResponse ="""{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim() - - utils.log("DEBUG", " sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse, isDebugEnabled) - sendWorkflowResponse(execution, 202, syncResponse) - } catch (Exception ex) { - String exceptionMessage = "Bpmn error encountered in DeleteGenericMacroServiceNetworkVnf flow. Unexpected from method sendSyncResponse() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - public void prepareServiceInstanceDelete (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - utils.log("DEBUG", " ***** Inside prepareServiceInstanceDelete() of DeleteGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - try { - - String serviceInstanceId = execution.getVariable("serviceInstanceId") - - // confirm if ServiceInstance was found - if ( !execution.getVariable("GENGS_FoundIndicator") ) - { - String exceptionMessage = "Bpmn error encountered in DeleteGenericMacroServiceNetworkVnf flow. Service Instance was not found in AAI by id: " + serviceInstanceId - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - - // get variable within incoming json - String DeleteGenericMacroServiceNetworkVnfRequest = execution.getVariable("DeleteGenericMacroServiceNetworkVnfRequest"); - - // get SI extracted by GenericGetService - String serviceInstanceAaiRecord = execution.getVariable("GENGS_service"); - - utils.log("DEBUG", "serviceInstanceAaiRecord: "+serviceInstanceAaiRecord, isDebugEnabled) - - String relationship = "" - try { - relationship = networkUtils.getFirstNodeXml(serviceInstanceAaiRecord, "relationship-list") - } catch (Exception ex) { - //no relationships found - } - utils.log("DEBUG", " relationship string - " + relationship, isDebugEnabled) - - int vnfsCount = 0 - int networksCount = 0 - - if (relationship != null && relationship.length() > 0){ - relationship = relationship.trim().replace("tag0:","").replace(":tag0","") - - // Check if Network TableREf is present, then build a List of network policy - List relatedVnfIdList = networkUtils.getRelatedVnfIdList(relationship) - vnfsCount = relatedVnfIdList.size() - execution.setVariable("DELVAS_vnfsCount", vnfsCount) - utils.log("DEBUG", " DELVAS_vnfsCount : " + vnfsCount, isDebugEnabled) - execution.setVariable("DELVAS_relatedVnfIdList", relatedVnfIdList) - - // Check if Network TableREf is present, then build a List of network policy - List relatedNetworkIdList = networkUtils.getRelatedNetworkIdList(relationship) - networksCount = relatedNetworkIdList.size() - execution.setVariable("DELVAS_networksCount", networksCount) - utils.log("DEBUG", " DELVAS_networksCount : " + networksCount, isDebugEnabled) - execution.setVariable("DELVAS_relatedNetworkIdList", relatedNetworkIdList) - } else { - execution.setVariable("DELVAS_vnfsCount", 0) - utils.log("DEBUG", " DELVAS_vnfsCount : " + vnfsCount, isDebugEnabled) - execution.setVariable("DELVAS_networksCount", 0) - utils.log("DEBUG", " DELVAS_networksCount : " + networksCount, isDebugEnabled) - } - - utils.log("DEBUG", " ***** Completed prepareServiceInstanceDelete() of DeleteGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - } catch (Exception ex) { - sendSyncError(execution) - String exceptionMessage = "Bpmn error encountered in DeleteGenericMacroServiceNetworkVnf flow. prepareServiceInstanceDelete() - " + ex.getMessage() - utils.log("DEBUG", exceptionMessage, isDebugEnabled) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - - // ******************************* - // - // ******************************* - public void prepareVnfAndModulesDelete (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - try { - utils.log("DEBUG", " ***** Inside prepareVnfAndModulesDelete of DeleteServiceInstanceMacro ***** ", isDebugEnabled) - - List vnfList = execution.getVariable("DELVAS_relatedVnfIdList") - Integer vnfsDeletedCount = execution.getVariable("DELVAS_vnfsDeletedCount") - String vnfModelInfoString = "" - String vnfId = "" - if (vnfList.size() > 0 ) { - vnfId = vnfList.get(vnfsDeletedCount.intValue()) - } - - execution.setVariable("vnfId", vnfId) - utils.log("DEBUG", "need to delete vnfId:" + vnfId, isDebugEnabled) - - utils.log("DEBUG", " ***** Completed prepareVnfAndModulesDelete of DeleteServiceInstanceMacro ***** ", isDebugEnabled) - } catch (Exception ex) { - // try error in method block - String exceptionMessage = "Bpmn error encountered in DeleteServiceInstanceMacro flow. Unexpected Error from method prepareVnfAndModulesDelete() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - // ******************************* - // Validate Vnf request Section -> increment count - // ******************************* - public void validateVnfDelete (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - try { - utils.log("DEBUG", " ***** Inside validateVnfDelete of DeleteGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - String vnfsDeletedCount = execution.getVariable("DELVAS_vnfsDeletedCount") - vnfsDeletedCount++ - - execution.setVariable("DELVAS_vnfsDeletedCount", vnfsDeletedCount) - - utils.log("DEBUG", " ***** Completed validateVnfDelete of DeleteGenericMacroServiceNetworkVnf ***** "+" vnf # "+vnfsDeletedCount, isDebugEnabled) - } catch (Exception ex) { - // try error in method block - String exceptionMessage = "Bpmn error encountered in DeleteGenericMacroServiceNetworkVnf flow. Unexpected Error from method validateVnfDelete() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - // ******************************* - // Generate Network request Section - // ******************************* - public void prepareNetworkDelete (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - try { - utils.log("DEBUG", " ***** Inside prepareNetworkDelete of DeleteGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - List networkList = execution.getVariable("DELVAS_relatedNetworkIdList") - Integer networksDeletedCount = execution.getVariable("DELVAS_networksDeletedCount") - - String networkId = "" - if (networkList.size() > 0) { - networkId = networkList.get(networksDeletedCount.intValue()) - } - - execution.setVariable("networkId", networkId) - utils.log("DEBUG", "need to delete networkId:" + networkId, isDebugEnabled) - - utils.log("DEBUG", " ***** Completed prepareNetworkDelete of DeleteGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - } catch (Exception ex) { - // try error in method block - String exceptionMessage = q"Bpmn error encountered in DeleteGenericMacroServiceNetworkVnf flow. Unexpected Error from method prepareNetworkDelete() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - // ******************************* - // Validate Network request Section - // ******************************* - public void validateNetworkDelete (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - - try { - utils.log("DEBUG", " ***** Inside validateNetworkDelete of DeleteGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - Integer networksDeletedCount = execution.getVariable("DELVAS_networksDeletedCount") - networksDeletedCount++ - - execution.setVariable("DELVAS_networksDeletedCount", networksDeletedCount) - - utils.log("DEBUG", " ***** Completed validateNetworkDelete of DeleteGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - } catch (Exception ex) { - // try error in method block - String exceptionMessage = "Bpmn error encountered in DeleteGenericMacroServiceNetworkVnf flow. Unexpected Error from method validateNetworkDelete() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - - // ***************************************** - // Prepare Completion request Section - // ***************************************** - public void postProcessResponse (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - utils.log("DEBUG", " ***** Inside postProcessResponse of DeleteGenericMacroServiceNetworkVnf ***** ", isDebugEnabled) - - try { - String source = execution.getVariable("source") - String requestId = execution.getVariable("msoRequestId") - - String msoCompletionRequest = - """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1" - xmlns:ns="http://org.openecomp/mso/request/types/v1"> - <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1"> - <request-id>${requestId}</request-id> - <action>DELETE</action> - <source>${source}</source> - </request-info> - <aetgt:status-message>vIPR ATM Service Instance has been deleted successfully.</aetgt:status-message> - <aetgt:mso-bpel-name>BPMN Service Instance macro action: DELETE</aetgt:mso-bpel-name> - </aetgt:MsoCompletionRequest>""" - - // Format Response - String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) - - utils.logAudit(xmlMsoCompletionRequest) - execution.setVariable("DELVAS_Success", true) - execution.setVariable("DELVAS_CompleteMsoProcessRequest", xmlMsoCompletionRequest) - utils.log("DEBUG", " SUCCESS flow, going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest, isDebugEnabled) - } catch (BpmnError e) { - throw e; - - } catch (Exception ex) { - // try error in method block - String exceptionMessage = "Bpmn error encountered in DeleteServiceInstance flow. Unexpected Error from method postProcessResponse() - " + ex.getMessage() - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) - } - } - - public void prepareFalloutRequest(Execution execution){ - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - utils.log("DEBUG", " *** STARTED DeleteGenericMacroServiceNetworkVnf prepareFalloutRequest Process *** ", isDebugEnabled) - - try { - WorkflowException wfex = execution.getVariable("WorkflowException") - utils.log("DEBUG", " Incoming Workflow Exception: " + wfex.toString(), isDebugEnabled) - String requestInfo = execution.getVariable("DELVAS_requestInfo") - utils.log("DEBUG", " Incoming Request Info: " + requestInfo, isDebugEnabled) - - String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo) - - execution.setVariable("DELVAS_falloutRequest", falloutRequest) - } catch (Exception ex) { - utils.log("DEBUG", "Error Occured in DeleteGenericMacroServiceNetworkVnf prepareFalloutRequest Process " + ex.getMessage(), isDebugEnabled) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DeleteGenericMacroServiceNetworkVnf prepareFalloutRequest Process") - } - utils.log("DEBUG", "*** COMPLETED DeleteGenericMacroServiceNetworkVnf prepareFalloutRequest Process ***", isDebugEnabled) - } - - - public void sendSyncError (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - utils.log("DEBUG", " ***** Inside sendSyncError() of DeleteServiceInstanceInfra ***** ", isDebugEnabled) - - try { - String errorMessage = "" - if (execution.getVariable("WorkflowException") instanceof WorkflowException) { - WorkflowException wfe = execution.getVariable("WorkflowException") - errorMessage = wfe.getErrorMessage() - } else { - errorMessage = "Sending Sync Error." - } - - String buildworkflowException = - """<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"> - <aetgt:ErrorMessage>${errorMessage}</aetgt:ErrorMessage> - <aetgt:ErrorCode>7000</aetgt:ErrorCode> - </aetgt:WorkflowException>""" - - utils.logAudit(buildworkflowException) - sendWorkflowResponse(execution, 500, buildworkflowException) - } catch (Exception ex) { - utils.log("DEBUG", " Sending Sync Error Activity Failed. " + "\n" + ex.getMessage(), isDebugEnabled) - } - } - - public void processJavaException(Execution execution){ - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - execution.setVariable("prefix",Prefix) - try{ - utils.log("DEBUG", "Caught a Java Exception", isDebugEnabled) - utils.log("DEBUG", "Started processJavaException Method", isDebugEnabled) - utils.log("DEBUG", "Variables List: " + execution.getVariables(), isDebugEnabled) - execution.setVariable("DELVAS_unexpectedError", "Caught a Java Lang Exception") // Adding this line temporarily until this flows error handling gets updated - exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Caught a Java Lang Exception") - }catch(BpmnError b){ - utils.log("ERROR", "Rethrowing MSOWorkflowException", isDebugEnabled) - throw b - }catch(Exception e){ - utils.log("DEBUG", "Caught Exception during processJavaException Method: " + e, isDebugEnabled) - execution.setVariable("DELVAS_unexpectedError", "Exception in processJavaException method") // Adding this line temporarily until this flows error handling gets updated - exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception in processJavaException method") - } - utils.log("DEBUG", "Completed processJavaException Method", isDebugEnabled) - } - - -}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstance.groovy index e18af172de..b8629c39f8 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstance.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstance.groovy @@ -153,10 +153,11 @@ public class DeleteNetworkInstance extends AbstractServiceTaskProcessor { try { - // "networkModelInfo" is expected to be sent - String networkModelInfo = execution.getVariable("networkModelInfo") - utils.log("DEBUG", " networkModelInfo - " + networkModelInfo, isDebugEnabled) - + // For Ala-Carte (sdnc = 1610): + // 1. the Network ModelInfo is expected to be sent + // via requestDetails.modelInfo (modelType = network), ex: modelCustomizationId. + // 2. the Service ModelInfo is expected to be sent but will be IGNORE + // via requestDetails.relatedInstanceList.relatedInstance.modelInfo (modelType = service) } catch (Exception ex) { sendSyncError(execution) @@ -241,7 +242,10 @@ public class DeleteNetworkInstance extends AbstractServiceTaskProcessor { try { utils.log("DEBUG", " ***** Inside prepareDBRequestError of DeleteNetworkInstance ***** ", isDebugEnabled) - + + // set DB Header Authorization + setBasicDBAuthHeader(execution, isDebugEnabled) + WorkflowException wfe = execution.getVariable("WorkflowException") String statusMessage = wfe.getErrorMessage() String requestId = execution.getVariable(Prefix +"requestId") diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleInfra.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleInfra.groovy index f8b3b4739f..021cdbb4c5 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleInfra.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleInfra.groovy @@ -110,18 +110,7 @@ public class DeleteVfModuleInfra extends AbstractServiceTaskProcessor { utils.log("DEBUG", " Request in XML format: " + requestInXmlFormat, isDebugLogEnabled) - try { - // Catalog DB headers Authorization - String basicAuthValueDB = execution.getVariable("URN_mso_adapters_db_auth") - utils.log("DEBUG", " Obtained BasicAuth userid password for Catalog DB adapter: " + basicAuthValueDB, isDebugLogEnabled) - - def encodedString = utils.getBasicAuth(basicAuthValueDB, execution.getVariable("URN_mso_msoKey")) - execution.setVariable("BasicAuthHeaderValueDB",encodedString) - } catch (IOException ex) { - String dataErrorMessage = " Unable to encode Catalog DB user/password string - " + ex.getMessage() - utils.log("DEBUG", dataErrorMessage, isDebugLogEnabled) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) - } + setBasicDBAuthHeader(execution, isDebugLogEnabled) execution.setVariable(prefix + 'Request', requestInXmlFormat) execution.setVariable(prefix+'vnfId', vnfId) diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy index 7bda7b4fe3..547b5f3bb6 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy @@ -132,18 +132,7 @@ public class DeleteVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { execution.setVariable('DELVfModVol_volumeParams', utils.getNodeXml(request, 'volume-params'))
execution.setVariable('DELVfModVol_cloudRegion', utils.getNodeText1(request, 'aic-cloud-region'))
- try {
- // Catalog DB headers Authorization
- String basicAuthValueDB = execution.getVariable("URN_mso_adapters_db_auth")
- utils.log("DEBUG", " Obtained BasicAuth userid password for Catalog DB adapter: " + basicAuthValueDB, isDebugLogEnabled)
-
- def encodedString = utils.getBasicAuth(basicAuthValueDB, execution.getVariable("URN_mso_msoKey"))
- execution.setVariable("BasicAuthHeaderValueDB",encodedString)
- } catch (IOException ex) {
- String dataErrorMessage = " Unable to encode Catalog DB user/password string - " + ex.getMessage()
- utils.log("DEBUG", dataErrorMessage, isDebugLogEnabled)
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
- }
+ setBasicDBAuthHeader(execution, isDebugLogEnabled)
logDebug('Request: ' + createVolumeIncoming, isDebugLogEnabled)
}
@@ -436,7 +425,7 @@ public class DeleteVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { public void prepareDBRequest (Execution execution, isDebugLogEnabled) {
WorkflowException workflowExceptionObj = execution.getVariable("WorkflowException")
-
+ ExceptionUtil exceptionUtil = new ExceptionUtil();
def requestId = execution.getVariable('DELVfModVol_requestId')
def volOutputs = execution.getVariable('DELVfModVol_volumeOutputs')
def statusMessage = "VolumeGroup successfully deleted"
@@ -450,7 +439,7 @@ public class DeleteVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { requestStatus = "FAILURE"
progress = ""
}
-
+
String updateInfraRequest = """
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:req="http://org.openecomp.mso/requestsdb">
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy index d221d0622b..53c878dc22 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy @@ -448,7 +448,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { // get variables String networkId = "" String assignSDNCResponse = execution.getVariable(Prefix + "assignSDNCResponse") - if (execution.getVariable("sdncVersion") == "1702") { + if (execution.getVariable("sdncVersion") != "1610") { String networkResponseInformation = "" try { networkResponseInformation = utils.getNodeXml(assignSDNCResponse, "network-response-information", false).replace("tag0:","").replace(":tag0","") @@ -655,9 +655,9 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { if (aai_uri == null || aai_uri == "") { // using value of 'related-link' from response if (vpnBindingUri[i].charAt(vpnBindingUri[i].length()-1) == '/') { - queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i].substring(0, vpnBindingUri[i].length()-1) + queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i].substring(0, vpnBindingUri[i].length()-1) + "?depth=all" } else { - queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i] + queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i] + "?depth=all" } } else { @@ -666,7 +666,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { if (vpnBindingId.charAt(vpnBindingId.length()-1) == '/') { vpnBindingId = vpnBindingId.substring(0, vpnBindingId.length()-1) } - queryVpnBindingAAIRequest = "${aai_endpoint}${aai_uri}/" + vpnBindingId + queryVpnBindingAAIRequest = "${aai_endpoint}${aai_uri}/" + vpnBindingId + "?depth=all" } utils.logAudit(queryVpnBindingAAIRequest) @@ -789,9 +789,9 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { if (aai_uri == null || aai_uri == "") { // using value of 'related-link' from response if (networkPolicyUriList[i].charAt(networkPolicyUriList[i].length()-1) == '/') { - queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i].substring(0, networkPolicyUriList[i].length()-1) + queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i].substring(0, networkPolicyUriList[i].length()-1) + "?depth=all" } else { - queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i] + queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i] + "?depth=all" } } else { // using uri value in URN mapping @@ -800,7 +800,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { if (networkPolicyId.charAt(networkPolicyId.length()-1) == '/') { networkPolicyId = networkPolicyId.substring(0, networkPolicyId.length()-1) } - queryNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + networkPolicyId + queryNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + networkPolicyId + "?depth=all" } @@ -925,9 +925,9 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { if (aai_uri == null || aai_uri == "") { // using value of 'related-link' from response if (networkTableRefUriList[i].charAt(networkTableRefUriList[i].length()-1) == '/') { - queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i].substring(0, networkTableRefUriList[i].length()-1) + queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i].substring(0, networkTableRefUriList[i].length()-1) + "?depth=all" } else { - queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i] + queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i] + "?depth=all" } } else { // using uri value in URN mapping @@ -936,7 +936,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { if (networkTableRefId.charAt(networkTableRefId.length()-1) == '/') { networkTableRefId = networkTableRefId.substring(0, networkTableRefId.length()-1) } - queryNetworkTableRefAAIRequest = "${aai_endpoint}${aai_uri}/" + networkTableRefId + queryNetworkTableRefAAIRequest = "${aai_endpoint}${aai_uri}/" + networkTableRefId + "?depth=all" } @@ -1236,7 +1236,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId") // 1. prepare assign topology via SDNC Adapter SUBFLOW call - String sndcTopologyCreateRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, "activate", "ActivateNetworkInstance", cloudRegionId, networkId, null) + String sndcTopologyCreateRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null) String sndcTopologyCreateRequesAsString = utils.formatXml(sndcTopologyCreateRequest) utils.logAudit(sndcTopologyCreateRequesAsString) @@ -1598,7 +1598,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { try { - if (execution.getVariable("sdncVersion") == '1702') { + if (execution.getVariable("sdncVersion") != '1610') { prepareRpcSDNCRollbackRequest(execution) prepareRpcSDNCActivateRollback(execution) } else { diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy index 9f28db727d..49aa948c44 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy @@ -23,12 +23,14 @@ import static org.apache.commons.lang3.StringUtils.*; import groovy.xml.XmlUtil import groovy.json.* +import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition +import org.openecomp.mso.bpmn.core.domain.ServiceInstance +import org.openecomp.mso.bpmn.core.domain.ModelInfo import org.openecomp.mso.bpmn.core.json.JsonUtils import org.openecomp.mso.bpmn.common.scripts.AaiUtil import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils -import org.openecomp.mso.bpmn.common.scripts.VidUtils import org.openecomp.mso.bpmn.core.RollbackData import org.openecomp.mso.bpmn.core.WorkflowException import org.openecomp.mso.rest.APIResponse; @@ -57,8 +59,10 @@ import org.springframework.web.util.UriUtils; * @param - productFamilyId * @param - disableRollback * @param - failExists - TODO - * @param - serviceInputParams - Deferred/TODO + * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM) * @param - sdncVersion ("1610") + * @param - serviceDecomposition - Decomposition for R1710 + * (if macro provides serviceDecompsition then serviceModelInfo, serviceInstanceId & serviceInstanceName will be ignored) * * Outputs: * @param - rollbackData (localRB->null) @@ -72,7 +76,6 @@ public class DoCreateServiceInstance extends AbstractServiceTaskProcessor { String Prefix="DCRESI_" ExceptionUtil exceptionUtil = new ExceptionUtil() JsonUtils jsonUtil = new JsonUtils() - VidUtils vidUtils = new VidUtils() public void preProcessRequest (Execution execution) { def isDebugEnabled = execution.getVariable("isDebugLogEnabled") @@ -82,19 +85,11 @@ public class DoCreateServiceInstance extends AbstractServiceTaskProcessor { try { String requestId = execution.getVariable("msoRequestId") execution.setVariable("prefix", Prefix) - + //Inputs //requestDetails.subscriberInfo. for AAI GET & PUT & SDNC assignToplology String globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId - //requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData & SDNC assignToplology - String serviceInstanceName = execution.getVariable("serviceInstanceName") - //Generated in parent for AAI PUT - String serviceInstanceId = execution.getVariable("serviceInstanceId") - - //requestDetails.modelInfo. for AAI PUT servieInstanceData & SDNC assignTopology - String serviceModelInfo = execution.getVariable("serviceModelInfo") - //requestDetails.requestParameters. for AAI PUT & SDNC assignTopology String subscriptionServiceType = execution.getVariable("subscriptionServiceType") @@ -106,21 +101,13 @@ public class DoCreateServiceInstance extends AbstractServiceTaskProcessor { utils.log("DEBUG", msg, isDebugEnabled) exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) } - if (isBlank(serviceInstanceId)){ - msg = "Input serviceInstanceId is null" - utils.log("DEBUG", msg, isDebugEnabled) - exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) - } - if (isBlank(serviceModelInfo)) { - msg = "Input serviceModelInfo is null" - utils.log("DEBUG", msg, isDebugEnabled) - exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) - } + if (isBlank(subscriptionServiceType)) { msg = "Input subscriptionServiceType is null" utils.log("DEBUG", msg, isDebugEnabled) exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) } + if (productFamilyId == null) { execution.setVariable("productFamilyId", "") } @@ -134,30 +121,152 @@ public class DoCreateServiceInstance extends AbstractServiceTaskProcessor { execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) utils.log("DEBUG","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled) - String modelInvariantId = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantId") - String modelVersionId = jsonUtil.getJsonValue(serviceModelInfo, "modelVersionId") + //requestDetails.modelInfo.for AAI PUT servieInstanceData & SDNC assignTopology + String modelInvariantUuid = "" + String modelVersion = "" + String modelUuid = "" + String modelName = "" + String serviceInstanceName = "" + //Generated in parent.for AAI PUT + String serviceInstanceId = "" + String serviceType = "" + String serviceRole = "" - if (modelInvariantId == null) { - modelInvariantId = "" + ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition") + if (serviceDecomp != null) + { + serviceType = serviceDecomp.getServiceType() + if (serviceType == null) + { + utils.log("DEBUG", "null serviceType", isDebugEnabled) + serviceType = "" + } + else + { + utils.log("DEBUG", "serviceType:" + serviceType, isDebugEnabled) + } + serviceRole = serviceDecomp.getServiceRole() + if (serviceRole == null) + { + serviceRole = "" + } + + ServiceInstance serviceInstance = serviceDecomp.getServiceInstance() + if (serviceInstance != null) + { + serviceInstanceId = serviceInstance.getInstanceId() + serviceInstanceName = serviceInstance.getInstanceName() + execution.setVariable("serviceInstanceId", serviceInstanceId) + execution.setVariable("serviceInstanceName", serviceInstanceName) + } + + ModelInfo modelInfo = serviceDecomp.getModelInfo() + if (modelInfo != null) + { + modelInvariantUuid = modelInfo.getModelInvariantUuid() + modelVersion = modelInfo.getModelVersion() + modelUuid = modelInfo.getModelUuid() + modelName = modelInfo.getModelName() + } + else + { + msg = "Input serviceModelInfo is null" + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } } - if (modelVersionId == null) { - modelVersionId = "" + else + { + //requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData & SDNC assignToplology + serviceInstanceName = execution.getVariable("serviceInstanceName") + serviceInstanceId = execution.getVariable("serviceInstanceId") + + String serviceModelInfo = execution.getVariable("serviceModelInfo") + if (isBlank(serviceModelInfo)) { + msg = "Input serviceModelInfo is null" + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid") + modelVersion = jsonUtil.getJsonValue(serviceModelInfo, "modelVersion") + modelUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelUuid") + modelName = jsonUtil.getJsonValue(serviceModelInfo, "modelName") + //modelCustomizationUuid NA for SI + } + execution.setVariable("serviceType", serviceType) + execution.setVariable("serviceRole", serviceRole) + if (serviceInstanceName == null) { execution.setVariable("serviceInstanceName", "") serviceInstanceName = "" } + if (isBlank(serviceInstanceId)){ + msg = "Input serviceInstanceId is null" + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + if (modelInvariantUuid == null) { + modelInvariantUuid = "" + } + if (modelUuid == null) { + modelUuid = "" + } + if (modelVersion == null) { + modelVersion = "" + } + if (modelName == null) { + modelName = "" + } + + execution.setVariable("modelInvariantUuid", modelInvariantUuid) + execution.setVariable("modelVersion", modelVersion) + execution.setVariable("modelUuid", modelUuid) + execution.setVariable("modelName", modelName) + StringBuilder sbParams = new StringBuilder() + Map<String, String> paramsMap = execution.getVariable("serviceInputParams") + if (paramsMap != null) + { + sbParams.append("<service-input-parameters>") + for (Map.Entry<String, String> entry : paramsMap.entrySet()) { + String paramsXml + String paramName = entry.getKey() + String paramValue = entry.getValue() + paramsXml = + """ <param> + <name>${paramName}</name> + <value>${paramValue}</value> + </param> + """ + sbParams.append(paramsXml) + } + sbParams.append("</service-input-parameters>") + } + String siParamsXml = sbParams.toString() + if (siParamsXml == null) + siParamsXml = "" + execution.setVariable("siParamsXml", siParamsXml) + //AAI PUT + String oStatus= "Active" + if ("TRANSPORT".equalsIgnoreCase(serviceType)) + { + oStatus = "Created" + } + AaiUtil aaiUriUtil = new AaiUtil(this) String aai_uri = aaiUriUtil.getBusinessCustomerUri(execution) String namespace = aaiUriUtil.getNamespaceFromUri(aai_uri) String serviceInstanceData = """<service-instance xmlns=\"${namespace}\"> <service-instance-name>${serviceInstanceName}</service-instance-name> - <orchestration-status>Active</orchestration-status> - <model-invariant-id>${modelInvariantId}</model-invariant-id> - <model-version-id>${modelVersionId}</model-version-id> + <service-type>${serviceType}</service-type> + <service-role>${serviceRole}</service-role> + <orchestration-status>${oStatus}</orchestration-status> + <model-invariant-id>${modelInvariantUuid}</model-invariant-id> + <model-version-id>${modelUuid}</model-version-id> </service-instance>""".trim() execution.setVariable("serviceInstanceData", serviceInstanceData) @@ -340,27 +449,17 @@ public class DoCreateServiceInstance extends AbstractServiceTaskProcessor { def serviceId = execution.getVariable("productFamilyId") def subscriptionServiceType = execution.getVariable("subscriptionServiceType") def globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId + def serviceType = execution.getVariable("serviceType") - String serviceModelInfo = execution.getVariable("serviceModelInfo") - def modelInvariantId = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantId") - def modelVersion = jsonUtil.getJsonValue(serviceModelInfo, "modelVersion") - def modelUUId = jsonUtil.getJsonValue(serviceModelInfo, "modelVersionId") - def modelName = jsonUtil.getJsonValue(serviceModelInfo, "modelName") + def modelInvariantUuid = execution.getVariable("modelInvariantUuid") + def modelVersion = execution.getVariable("modelVersion") + def modelUuid = execution.getVariable("modelUuid") + def modelName = execution.getVariable("modelName") + def sdncRequestId = UUID.randomUUID().toString() - if (modelInvariantId == null) { - modelInvariantId = "" - } - if (modelVersion == null) { - modelVersion = "" - } - if (modelUUId == null) { - modelUUId = "" - } - if (modelName == null) { - modelName = "" - } - + def siParamsXml = execution.getVariable("siParamsXml") + String sdncAssignRequest = """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1" xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" @@ -371,6 +470,7 @@ public class DoCreateServiceInstance extends AbstractServiceTaskProcessor { <sdncadapter:SvcAction>assign</sdncadapter:SvcAction> <sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation> <sdncadapter:CallbackUrl>${callbackURL}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>${serviceType}</sdncadapter:MsoAction> </sdncadapter:RequestHeader> <sdncadapterworkflow:SDNCRequestData> <request-information> @@ -385,8 +485,8 @@ public class DoCreateServiceInstance extends AbstractServiceTaskProcessor { <service-id>${serviceId}</service-id> <subscription-service-type>${subscriptionServiceType}</subscription-service-type> <ecomp-model-information> - <model-invariant-uuid>${modelInvariantId}</model-invariant-uuid> - <model-uuid>${modelUUId}</model-uuid> + <model-invariant-uuid>${modelInvariantUuid}</model-invariant-uuid> + <model-uuid>${modelUuid}</model-uuid> <model-version>${modelVersion}</model-version> <model-name>${modelName}</model-name> </ecomp-model-information> @@ -396,6 +496,7 @@ public class DoCreateServiceInstance extends AbstractServiceTaskProcessor { </service-information> <service-request-input> <service-instance-name>${serviceInstanceName}</service-instance-name> + ${siParamsXml} </service-request-input> </sdncadapterworkflow:SDNCRequestData> </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModule.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModule.groovy index 1fd5ab0abc..8bd3c5a4c3 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModule.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModule.groovy @@ -67,7 +67,7 @@ public class DoCreateVfModule extends VfModuleBase { execution.setVariable('prefix', Prefix) try{ - def rollbackData = execution.getVariable("RollbackData") + def rollbackData = execution.getVariable("rollbackData") if (rollbackData == null) { rollbackData = new RollbackData() } @@ -140,6 +140,7 @@ public class DoCreateVfModule extends VfModuleBase { def requestId = execution.getVariable("msoRequestId") execution.setVariable("DCVFM_requestId", requestId) logDebug("requestId: " + requestId, isDebugLogEnabled) + rollbackData.put("VFMODULE", "msorequestid", requestId) // Set mso-request-id to request-id for VNF Adapter interface execution.setVariable("mso-request-id", requestId) //serviceId @@ -159,7 +160,7 @@ public class DoCreateVfModule extends VfModuleBase { //backoutOnFailure def disableRollback = execution.getVariable("disableRollback") def backoutOnFailure = true - if (disableRollback != null && disableRollback.equals("true")) { + if (disableRollback != null && disableRollback == true) { backoutOnFailure = false } execution.setVariable("DCVFM_backoutOnFailure", backoutOnFailure) @@ -173,9 +174,9 @@ public class DoCreateVfModule extends VfModuleBase { execution.setVariable("DCVFM_asdcServiceModelVersion", asdcServiceModelVersion) logDebug("asdcServiceModelVersion: " + asdcServiceModelVersion, isDebugLogEnabled) //personaModelId - execution.setVariable("DCVFM_personaModelId", jsonUtil.getJsonValue(vfModuleModelInfo, "modelInvariantId")) + execution.setVariable("DCVFM_personaModelId", jsonUtil.getJsonValue(vfModuleModelInfo, "modelInvariantUuid")) //personaModelVersion - execution.setVariable("DCVFM_personaModelVersion", jsonUtil.getJsonValue(vfModuleModelInfo, "modelVersionId")) + execution.setVariable("DCVFM_personaModelVersion", jsonUtil.getJsonValue(vfModuleModelInfo, "modelUuid")) //vfModuleLabel def vfModuleLabel = execution.getVariable("vfModuleLabel") if (vfModuleLabel != null) { @@ -437,7 +438,7 @@ public class DoCreateVfModule extends VfModuleBase { logDebug("SDNC Callback URL is: " + sdncCallbackUrl, isDebugLogEnabled) - execution.setVariable("RollbackData", rollbackData) + execution.setVariable("rollbackData", rollbackData) }catch(BpmnError b){ throw b }catch(Exception e){ @@ -501,7 +502,7 @@ public class DoCreateVfModule extends VfModuleBase { def createResponse = execution.getVariable('DCVFM_createVfModuleResponse') utils.logAudit("createVfModule Response: " + createResponse) - def rollbackData = execution.getVariable("RollbackData") + def rollbackData = execution.getVariable("rollbackData") String vnfName = utils.getNodeText1(createResponse, 'vnf-name') if (vnfName != null) { execution.setVariable('DCVFM_vnfName', vnfName) @@ -521,7 +522,7 @@ public class DoCreateVfModule extends VfModuleBase { rollbackData.put("VFMODULE", "vfmoduleid", vfModuleId) rollbackData.put("VFMODULE", "rollbackCreateAAIVfModule", "true") rollbackData.put("VFMODULE", "rollbackPrepareUpdateVfModule", "true") - execution.setVariable("RollbackData", rollbackData) + execution.setVariable("rollbackData", rollbackData) } catch (Exception ex) { ex.printStackTrace() logDebug('Exception occurred while postProcessing CreateAAIVfModule request:' + ex.getMessage(),isDebugLogEnabled) @@ -812,13 +813,25 @@ public class DoCreateVfModule extends VfModuleBase { } Map<String, String> vnfParamsMap = execution.getVariable("DCVFM_vnfParamsMap") + String vfModuleParams = "" + //Get SDNC Response Data for VF Module Topology + String vfModuleSdncGetResponse = execution.getVariable('DCVFM_getSDNCAdapterResponse') + utils.logAudit("sdncGetResponse: " + vfModuleSdncGetResponse) + def sdncVersion = execution.getVariable("sdncVersion") - //Get SDNC Response Data for VnfSubCreate Request - String sdncGetResponse = execution.getVariable('DCVFM_getSDNCAdapterResponse') - utils.logAudit("sdncGetResponse: " + sdncGetResponse) - - String vfModuleParams = buildVfModuleParams(vnfParamsMap, sdncGetResponse, vnfId, vnfName, + if (!sdncVersion.equals("1707")) { + + vfModuleParams = buildVfModuleParams(vnfParamsMap, vfModuleSdncGetResponse, vnfId, vnfName, vfModuleId, vfModuleName, vfModuleIndex) + } + else { + //Get SDNC Response Data for Vnf Topology + String vnfSdncGetResponse = execution.getVariable('DCVFM_getVnfSDNCAdapterResponse') + utils.logAudit("vnfSdncGetResponse: " + vnfSdncGetResponse) + + vfModuleParams = buildVfModuleParamsFromCombinedTopologies(vnfParamsMap, vnfSdncGetResponse, vfModuleSdncGetResponse, vnfId, vnfName, + vfModuleId, vfModuleName, vfModuleIndex) + } def svcInstId = "" if (serviceInstanceId == null || serviceInstanceId.isEmpty()) { @@ -1006,7 +1019,7 @@ public class DoCreateVfModule extends VfModuleBase { def modelCustomizationUuid = execution.getVariable("DCVFM_modelCustomizationUuid") def modelCustomizationUuidString = "" if (!usePreload) { - modelCustomizationUuidString = "<modelCustomizationUuid>" + modelCustomizationUuid + "</modelCustomizationUuid>" + modelCustomizationUuidString = "<model-customization-uuid>" + modelCustomizationUuid + "</model-customization-uuid>" } String sdncVNFParamsXml = "" @@ -1026,7 +1039,7 @@ public class DoCreateVfModule extends VfModuleBase { xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> <sdncadapter:RequestHeader> - <sdncadapter:RequestId>${requestId}</sdncadapter:RequestId> + <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId> <sdncadapter:SvcInstanceId>${svcInstId}</sdncadapter:SvcInstanceId> <sdncadapter:SvcAction>${action}</sdncadapter:SvcAction> <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> @@ -1069,7 +1082,7 @@ public class DoCreateVfModule extends VfModuleBase { xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> <sdncadapter:RequestHeader> - <sdncadapter:RequestId>${requestId}</sdncadapter:RequestId> + <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId> <sdncadapter:SvcInstanceId>${svcInstId}</sdncadapter:SvcInstanceId> <sdncadapter:SvcAction>${action}</sdncadapter:SvcAction> <sdncadapter:SvcOperation>vf-module-topology-operation</sdncadapter:SvcOperation> @@ -1210,7 +1223,7 @@ public class DoCreateVfModule extends VfModuleBase { logDebug("VNF Adapter Response is: " + vnfResponse, isDebugLogEnabled) utils.logAudit("createVnfAResponse is: \n" + vnfResponse) - RollbackData rollbackData = execution.getVariable("RollbackData") + RollbackData rollbackData = execution.getVariable("rollbackData") if(vnfResponse != null){ if(vnfResponse.contains("createVfModuleResponse")){ @@ -1273,7 +1286,7 @@ public class DoCreateVfModule extends VfModuleBase { } rollbackData.put("VFMODULE", "rollbackVnfAdapterCreate", "true") - execution.setVariable("RollbackData", rollbackData) + execution.setVariable("rollbackData", rollbackData) }catch(BpmnError b){ throw b @@ -1364,7 +1377,7 @@ public class DoCreateVfModule extends VfModuleBase { String sdncResponse = response if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ logDebug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + sdncResponse, isDebugLogEnabled) - RollbackData rollbackData = execution.getVariable("RollbackData") + RollbackData rollbackData = execution.getVariable("rollbackData") if(method.equals("assign")){ rollbackData.put("VFMODULE", "rollbackSDNCRequestAssign", "true") @@ -1373,7 +1386,7 @@ public class DoCreateVfModule extends VfModuleBase { else if (method.equals("activate")) { rollbackData.put("VFMODULE", "rollbackSDNCRequestActivate", "true") } - execution.setVariable("RollbackData", rollbackData) + execution.setVariable("rollbackData", rollbackData) }else{ logDebug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.", isDebugLogEnabled) throw new BpmnError("MSOWorkflowException") @@ -1613,7 +1626,7 @@ public class DoCreateVfModule extends VfModuleBase { // get variables List fqdnList = execution.getVariable("DCVFM_contrailNetworkPolicyFqdnList") int fqdnCount = fqdnList.size() - def rollbackData = execution.getVariable("RollbackData") + def rollbackData = execution.getVariable("rollbackData") execution.setVariable("DCVFM_networkPolicyFqdnCount", fqdnCount) logDebug("DCVFM_networkPolicyFqdnCount - " + fqdnCount, isDebugLogEnabled) @@ -1701,7 +1714,7 @@ public class DoCreateVfModule extends VfModuleBase { logDebug(" AddAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsStringPut, isDebugLogEnabled) rollbackData.put("VFMODULE", "rollbackCreateNetworkPoliciesAAI", "true") rollbackData.put("VFMODULE", "contrailNetworkPolicyFqdn" + i, fqdn) - execution.setVariable("RollbackData", rollbackData) + execution.setVariable("rollbackData", rollbackData) } else { // aai all errors @@ -1758,7 +1771,7 @@ public class DoCreateVfModule extends VfModuleBase { logDebug('Entered ' + method, isDebugLogEnabled) try { - def rollbackData = execution.getVariable("RollbackData") + def rollbackData = execution.getVariable("rollbackData") def vnfId = execution.getVariable('DCVFM_vnfId') def oamManagementV4Address = execution.getVariable("DCVFM_oamManagementV4Address") def oamManagementV6Address = execution.getVariable("DCVFM_oamManagementV6Address") @@ -1839,6 +1852,47 @@ public class DoCreateVfModule extends VfModuleBase { exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in postProcessUpdateAAIGenericVnf(): ' + e.getMessage()) } } + + public void preProcessRollback (Execution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("DEBUG"," ***** preProcessRollback ***** ", isDebugEnabled) + try { + + Object workflowException = execution.getVariable("WorkflowException"); + + if (workflowException instanceof WorkflowException) { + utils.log("DEBUG", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugEnabled) + execution.setVariable("prevWorkflowException", workflowException); + //execution.setVariable("WorkflowException", null); + } + } catch (BpmnError e) { + utils.log("DEBUG", "BPMN Error during preProcessRollback", isDebugEnabled) + } catch(Exception ex) { + String msg = "Exception in preProcessRollback. " + ex.getMessage() + utils.log("DEBUG", msg, isDebugEnabled) + } + utils.log("DEBUG"," *** Exit preProcessRollback *** ", isDebugEnabled) + } + public void postProcessRollback (Execution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("DEBUG"," ***** postProcessRollback ***** ", isDebugEnabled) + String msg = "" + try { + Object workflowException = execution.getVariable("prevWorkflowException"); + if (workflowException instanceof WorkflowException) { + utils.log("DEBUG", "Setting prevException to WorkflowException: ", isDebugEnabled) + execution.setVariable("WorkflowException", workflowException); + } + execution.setVariable("rollbackData", null) + } catch (BpmnError b) { + utils.log("DEBUG", "BPMN Error during postProcessRollback", isDebugEnabled) + throw b; + } catch(Exception ex) { + msg = "Exception in postProcessRollback. " + ex.getMessage() + utils.log("DEBUG", msg, isDebugEnabled) + } + utils.log("DEBUG"," *** Exit postProcessRollback *** ", isDebugEnabled) + } } diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy index af1161b656..08f1f50c37 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy @@ -47,71 +47,96 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{ initProcessVariables(execution) - def rollbackData = execution.getVariable("RollbackData") - String vnfId = rollbackData.get("VFMODULE", "vnfid") - execution.setVariable("DCVFMR_vnfId", vnfId) - String vfModuleId = rollbackData.get("VFMODULE", "vfmoduleid") - execution.setVariable("DCVFMR_vfModuleId", vfModuleId) - String source = rollbackData.get("VFMODULE", "source") - execution.setVariable("DCVFMR_source", source) - String serviceInstanceId = rollbackData.get("VFMODULE", "serviceInstanceId") - execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId) - String serviceId = rollbackData.get("VFMODULE", "service-id") - execution.setVariable("DCVFMR_serviceId", serviceId) - String vnfType = rollbackData.get("VFMODULE", "vnftype") - execution.setVariable("DCVFMR_vnfType", vnfType) - String vnfName = rollbackData.get("VFMODULE", "vnfname") - execution.setVariable("DCVFMR_vnfName", vnfName) - String tenantId = rollbackData.get("VFMODULE", "tenantid") - execution.setVariable("DCVFMR_tenantId", tenantId) - String vfModuleName = rollbackData.get("VFMODULE", "vfmodulename") - execution.setVariable("DCVFMR_vfModuleName", vfModuleName) - String vfModuleModelName = rollbackData.get("VFMODULE", "vfmodulemodelname") - execution.setVariable("DCVFMR_vfModuleModelName", vfModuleModelName) - String cloudSiteId = rollbackData.get("VFMODULE", "aiccloudregion") - execution.setVariable("DCVFMR_cloudSiteId", cloudSiteId) - String heatStackId = rollbackData.get("VFMODULE", "heatstackid") - execution.setVariable("DCVFMR_heatStackId", heatStackId) - String requestId = rollbackData.get("VFMODULE", "attmsorequestid") - execution.setVariable("DCVFMR_requestId", requestId) - List createdNetworkPolicyFqdnList = [] - int i = 0 - while (i < 100) { - String fqdn = rollbackData.get("VFMODULE", "contrailNetworkPolicyFqdn" + i) - if (fqdn == null) { - break - } - createdNetworkPolicyFqdnList.add(fqdn) - logDebug("got fqdn # " + i + ": " + fqdn, isDebugEnabled) - i = i + 1 + try { + execution.setVariable("rolledBack", null) + execution.setVariable("rollbackError", null) + + def rollbackData = execution.getVariable("rollbackData") + utils.log("DEBUG", "RollbackData:" + rollbackData, isDebugEnabled) + + if (rollbackData != null) { + String vnfId = rollbackData.get("VFMODULE", "vnfid") + execution.setVariable("DCVFMR_vnfId", vnfId) + String vfModuleId = rollbackData.get("VFMODULE", "vfmoduleid") + execution.setVariable("DCVFMR_vfModuleId", vfModuleId) + String source = rollbackData.get("VFMODULE", "source") + execution.setVariable("DCVFMR_source", source) + String serviceInstanceId = rollbackData.get("VFMODULE", "serviceInstanceId") + execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId) + String serviceId = rollbackData.get("VFMODULE", "service-id") + execution.setVariable("DCVFMR_serviceId", serviceId) + String vnfType = rollbackData.get("VFMODULE", "vnftype") + execution.setVariable("DCVFMR_vnfType", vnfType) + String vnfName = rollbackData.get("VFMODULE", "vnfname") + execution.setVariable("DCVFMR_vnfName", vnfName) + String tenantId = rollbackData.get("VFMODULE", "tenantid") + execution.setVariable("DCVFMR_tenantId", tenantId) + String vfModuleName = rollbackData.get("VFMODULE", "vfmodulename") + execution.setVariable("DCVFMR_vfModuleName", vfModuleName) + String vfModuleModelName = rollbackData.get("VFMODULE", "vfmodulemodelname") + execution.setVariable("DCVFMR_vfModuleModelName", vfModuleModelName) + String cloudSiteId = rollbackData.get("VFMODULE", "aiccloudregion") + execution.setVariable("DCVFMR_cloudSiteId", cloudSiteId) + String heatStackId = rollbackData.get("VFMODULE", "heatstackid") + execution.setVariable("DCVFMR_heatStackId", heatStackId) + String requestId = rollbackData.get("VFMODULE", "msorequestid") + execution.setVariable("DCVFMR_requestId", requestId) + // Set mso-request-id to request-id for VNF Adapter interface + execution.setVariable("mso-request-id", requestId) + List createdNetworkPolicyFqdnList = [] + int i = 0 + while (i < 100) { + String fqdn = rollbackData.get("VFMODULE", "contrailNetworkPolicyFqdn" + i) + if (fqdn == null) { + break + } + createdNetworkPolicyFqdnList.add(fqdn) + logDebug("got fqdn # " + i + ": " + fqdn, isDebugEnabled) + i = i + 1 + + } + + execution.setVariable("DCVFMR_createdNetworkPolicyFqdnList", createdNetworkPolicyFqdnList) + String oamManagementV4Address = rollbackData.get("VFMODULE", "oamManagementV4Address") + execution.setVariable("DCVFMR_oamManagementV4Address", oamManagementV4Address) + String oamManagementV6Address = rollbackData.get("VFMODULE", "oamManagementV6Address") + execution.setVariable("DCVFMR_oamManagementV6Address", oamManagementV6Address) + //String serviceInstanceId = rollbackData.get("VFMODULE", "msoserviceinstanceid") + //execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId) + execution.setVariable("DCVFMR_rollbackPrepareUpdateVfModule", rollbackData.get("VFMODULE", "rollbackPrepareUpdateVfModule")) + execution.setVariable("DCVFMR_rollbackUpdateAAIVfModule", rollbackData.get("VFMODULE", "rollbackUpdateAAIVfModule")) + execution.setVariable("DCVFMR_rollbackVnfAdapterCreate", rollbackData.get("VFMODULE", "rollbackVnfAdapterCreate")) + execution.setVariable("DCVFMR_rollbackSDNCRequestAssign", rollbackData.get("VFMODULE", "rollbackSDNCRequestAssign")) + execution.setVariable("DCVFMR_rollbackSDNCRequestActivate", rollbackData.get("VFMODULE", "rollbackSDNCRequestActivate")) + execution.setVariable("DCVFMR_rollbackCreateAAIVfModule", rollbackData.get("VFMODULE", "rollbackCreateAAIVfModule")) + execution.setVariable("DCVFMR_rollbackCreateNetworkPoliciesAAI", rollbackData.get("VFMODULE", "rollbackCreateNetworkPoliciesAAI")) + execution.setVariable("DCVFMR_rollbackUpdateVnfAAI", rollbackData.get("VFMODULE", "rollbackUpdateVnfAAI")) + + // formulate the request for PrepareUpdateAAIVfModule + String request = """<PrepareUpdateAAIVfModuleRequest> + <vnf-id>${vnfId}</vnf-id> + <vf-module-id>${vfModuleId}</vf-module-id> + <orchestration-status>pending-delete</orchestration-status> + </PrepareUpdateAAIVfModuleRequest>""" as String + utils.log("DEBUG", "PrepareUpdateAAIVfModuleRequest :" + request, isDebugEnabled) + utils.logAudit("DoCreateVfModuleRollback PrepareUpdateAAIVfModule Request: " + request) + execution.setVariable("PrepareUpdateAAIVfModuleRequest", request) + } else { + execution.setVariable("skipRollback", true) + } + + if (execution.getVariable("disableRollback").equals("true" )) { + execution.setVariable("skipRollback", true) + } + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + def msg = "Exception in DoCreateVfModuleRollback preProcessRequest " + ex.getMessage() + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) } - - execution.setVariable("DCVFMR_createdNetworkPolicyFqdnList", createdNetworkPolicyFqdnList) - String oamManagementV4Address = rollbackData.get("VFMODULE", "oamManagementV4Address") - execution.setVariable("DCVFMR_oamManagementV4Address", oamManagementV4Address) - String oamManagementV6Address = rollbackData.get("VFMODULE", "oamManagementV6Address") - execution.setVariable("DCVFMR_oamManagementV6Address", oamManagementV6Address) - //String serviceInstanceId = rollbackData.get("VFMODULE", "attmsoserviceinstanceid") - //execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId) - execution.setVariable("DCVFMR_rollbackPrepareUpdateVfModule", rollbackData.get("VFMODULE", "rollbackPrepareUpdateVfModule")) - execution.setVariable("DCVFMR_rollbackUpdateAAIVfModule", rollbackData.get("VFMODULE", "rollbackUpdateAAIVfModule")) - execution.setVariable("DCVFMR_rollbackVnfAdapterCreate", rollbackData.get("VFMODULE", "rollbackVnfAdapterCreate")) - execution.setVariable("DCVFMR_rollbackSDNCRequestAssign", rollbackData.get("VFMODULE", "rollbackSDNCRequestAssign")) - execution.setVariable("DCVFMR_rollbackSDNCRequestActivate", rollbackData.get("VFMODULE", "rollbackSDNCRequestActivate")) - execution.setVariable("DCVFMR_rollbackCreateAAIVfModule", rollbackData.get("VFMODULE", "rollbackCreateAAIVfModule")) - execution.setVariable("DCVFMR_rollbackCreateNetworkPoliciesAAI", rollbackData.get("VFMODULE", "rollbackCreateNetworkPoliciesAAI")) - execution.setVariable("DCVFMR_rollbackUpdateVnfAAI", rollbackData.get("VFMODULE", "rollbackUpdateVnfAAI")) - - // formulate the request for PrepareUpdateAAIVfModule - String request = """<PrepareUpdateAAIVfModuleRequest> - <vnf-id>${vnfId}</vnf-id> - <vf-module-id>${vfModuleId}</vf-module-id> - <orchestration-status>pending-delete</orchestration-status> - </PrepareUpdateAAIVfModuleRequest>""" as String - utils.log("DEBUG", "PrepareUpdateAAIVfModuleRequest :" + request, isDebugEnabled) - utils.logAudit("DoCreateVfModuleRollback PrepareUpdateAAIVfModule Request: " + request) - execution.setVariable("PrepareUpdateAAIVfModuleRequest", request) } // build a SDNC vnf-topology-operation request for the specified action @@ -120,6 +145,11 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{ def isDebugEnabled=execution.getVariable("isDebugLogEnabled") String srvInstId = execution.getVariable("DCVFMR_serviceInstanceId") + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("DCVFMR_requestId") + "-" + System.currentTimeMillis() + } + def callbackUrl = execution.getVariable("URN_mso_workflow_sdncadapter_callback") String source = execution.getVariable("DCVFMR_source") @@ -163,7 +193,7 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{ xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> <sdncadapter:RequestHeader> - <sdncadapter:RequestId>${requestId}</sdncadapter:RequestId> + <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId> <sdncadapter:SvcInstanceId>${vfModuleId}</sdncadapter:SvcInstanceId> <sdncadapter:SvcAction>${action}</sdncadapter:SvcAction> <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> @@ -202,6 +232,112 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{ execution.setVariable("sdncAdapterWorkflowRequest", request) } + public void preProcessSDNCDeactivateRequest(Execution execution){ + def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + logDebug(" ======== STARTED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled) + + def serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId") + + try{ + //Build SDNC Request + + String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate") + + deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest) + execution.setVariable("DCVFMR_deactivateSDNCRequest", deactivateSDNCRequest) + logDebug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest, isDebugLogEnabled) + utils.logAudit("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest) + + }catch(Exception e){ + utils.log("ERROR", "Exception Occured Processing preProcessSDNCDeactivateRequest. Exception is:\n" + e, isDebugLogEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage()) + } + logDebug("======== COMPLETED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled) + } + + public void preProcessSDNCUnassignRequest(Execution execution) { + def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' + + 'execution=' + execution.getId() + + ')' + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + logDebug('Entered ' + method, isDebugLogEnabled) + execution.setVariable("prefix", Prefix) + logDebug(" ======== STARTED preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled) + try{ + String serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId") + + String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign") + + execution.setVariable("DCVFMR_unassignSDNCRequest", unassignSDNCRequest) + logDebug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest, isDebugLogEnabled) + utils.logAudit("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest) + + }catch(Exception e){ + log.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e, isDebugLogEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessSDNCUnassignRequest Method:\n" + e.getMessage()) + } + logDebug("======== COMPLETED preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled) + } + + public String buildSDNCRequest(Execution execution, String svcInstId, String action){ + + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("DCVFMR_requestId") + "-" + System.currentTimeMillis() + } + def callbackURL = execution.getVariable("URN_mso_workflow_sdncadapter_callback") + def requestId = execution.getVariable("DCVFMR_requestId") + def serviceId = execution.getVariable("DCVFMR_serviceId") + def serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId") + def vfModuleId = execution.getVariable("DCVFMR_vfModuleId") + def source = execution.getVariable("DCVFMR_source") + def vnfId = execution.getVariable("DCVFMR_vnfId") + + def sdncVersion = execution.getVariable("sdncVersion") + + String sdncRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1" + xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" + xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${svcInstId}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${action}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>vf-module-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${callbackURL}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${requestId}</request-id> + <request-action>DeleteVfModuleInstance</request-action> + <source>${source}</source> + <notification-url/> + <order-number/> + <order-version/> + </request-information> + <service-information> + <service-id/> + <subscription-service-type/> + <service-instance-id>${serviceInstanceId}</service-instance-id> + <global-customer-id/> + </service-information> + <vnf-information> + <vnf-id>${vnfId}</vnf-id> + <vnf-type/> + </vnf-information> + <vf-module-information> + <vf-module-id>${vfModuleId}</vf-module-id> + </vf-module-information> + <vf-module-request-input/> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + utils.logAudit("sdncRequest: " + sdncRequest) + return sdncRequest + } + // parse the incoming DELETE_VF_MODULE request // and formulate the outgoing VnfAdapterDeleteV1 request public void prepVNFAdapterRequest(Execution execution) { @@ -484,4 +620,39 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessUpdateAAIGenericVnf((): ' + e.getMessage()) } } + + public void setSuccessfulRollbackStatus (Execution execution){ + def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + logDebug(" ======== STARTED setSuccessfulRollbackStatus ======== ", isDebugLogEnabled) + + try{ + // Set rolledBack to true, rollbackError to null + execution.setVariable("rolledBack", true) + execution.setVariable("rollbackError", null) + + }catch(Exception e){ + utils.log("ERROR", "Exception Occured Processing setSuccessfulRollbackStatus. Exception is:\n" + e, isDebugLogEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setSuccessfulRollbackStatus Method:\n" + e.getMessage()) + } + logDebug("======== COMPLETED setSuccessfulRollbackStatus ======== ", isDebugLogEnabled) + } + + public void setFailedRollbackStatus (Execution execution){ + def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + logDebug(" ======== STARTED setFailedRollbackStatus ======== ", isDebugLogEnabled) + + try{ + // Set rolledBack to false, rollbackError to actual value, rollbackData to null + execution.setVariable("rolledBack", false) + execution.setVariable("rollbackError", 'Caught exception in DoCreateVfModuleRollback') + execution.setVariable("rollbackData", null) + + }catch(Exception e){ + utils.log("ERROR", "Exception Occured Processing setFailedRollbackStatus. Exception is:\n" + e, isDebugLogEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setFailedRollbackStatus Method:\n" + e.getMessage()) + } + logDebug("======== COMPLETED setFailedRollbackStatus ======== ", isDebugLogEnabled) + } } diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy new file mode 100644 index 0000000000..46b6dd8366 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy @@ -0,0 +1,222 @@ +/*
+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.infrastructure.scripts;
+
+import groovy.xml.XmlUtil
+import groovy.json.*
+
+
+import java.util.UUID;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.apache.commons.codec.binary.Base64;
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.VidUtils
+import org.openecomp.mso.bpmn.core.RollbackData
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.rest.APIResponse
+import org.springframework.web.util.UriUtils
+
+
+public class DoCreateVfModuleVolumeRollback extends AbstractServiceTaskProcessor {
+ String Prefix="DCVFMODVOLRBK_"
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+ JsonUtils jsonUtil = new JsonUtils()
+ VidUtils vidUtils = new VidUtils(this)
+
+ def className = getClass().getSimpleName()
+
+ /**
+ * This method is executed during the preProcessRequest task of the <class>DoCreateVfModuleVolumeRollback.bpmn</class> process.
+ * @param execution
+ */
+ public InitializeProcessVariables(Execution execution){
+ /* Initialize all the process variables in this block */
+
+ execution.setVariable(Prefix + "volumeGroupName", null)
+ execution.setVariable(Prefix + "lcpCloudRegionId", null)
+ execution.setVariable(Prefix + "rollbackVnfARequest", null)
+
+ }
+
+ // **************************************************
+ // Pre or Prepare Request Section
+ // **************************************************
+ /**
+ * This method is executed during the preProcessRequest task of the <class>DoCreateVfModuleVolumeRollback.bpmn</class> process.
+ * @param execution
+ */
+ public void preProcessRequest (Execution execution) {
+ def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+ InitializeProcessVariables(execution)
+// rollbackData.put("DCVFMODULEVOL", "aiccloudregion", cloudSiteId)
+ RollbackData rollbackData = execution.getVariable("rollbackData")
+
+// String vnfId = rollbackData.get("DCVFMODULEVOL", "vnfid")
+// execution.setVariable("DCVFMODVOLRBK_vnfId", vnfId)
+// String vfModuleId = rollbackData.get("DCVFMODULEVOL", "vfmoduleid")
+// execution.setVariable("DCVFMODVOLRBK_vfModuleId", vfModuleId)
+// String source = rollbackData.get("DCVFMODULEVOL", "source")
+// execution.setVariable("DCVFMODVOLRBK_source", source)
+// String serviceInstanceId = rollbackData.get("DCVFMODULEVOL", "serviceInstanceId")
+// execution.setVariable("DCVFMODVOLRBK_serviceInstanceId", serviceInstanceId)
+// String serviceId = rollbackData.get("DCVFMODULEVOL", "service-id")
+// execution.setVariable("DCVFMODVOLRBK_serviceId", serviceId)
+// String vnfType = rollbackData.get("DCVFMODULEVOL", "vnftype")
+// execution.setVariable("DCVFMODVOLRBK_vnfType", vnfType)
+// String vnfName = rollbackData.get("DCVFMODULEVOL", "vnfname")
+// execution.setVariable("DCVFMODVOLRBK_vnfName", vnfName)
+// String tenantId = rollbackData.get("DCVFMODULEVOL", "tenantid")
+// execution.setVariable("DCVFMODVOLRBK_tenantId", tenantId)
+// String vfModuleName = rollbackData.get("DCVFMODULEVOL", "vfmodulename")
+// execution.setVariable("DCVFMODVOLRBK_vfModuleName", vfModuleName)
+// String vfModuleModelName = rollbackData.get("DCVFMODULEVOL", "vfmodulemodelname")
+// execution.setVariable("DCVFMODVOLRBK_vfModuleModelName", vfModuleModelName)
+// String cloudSiteId = rollbackData.get("DCVFMODULEVOL", "aiccloudregion")
+// execution.setVariable("DCVFMODVOLRBK_cloudSiteId", cloudSiteId)
+// String heatStackId = rollbackData.get("DCVFMODULEVOL", "heatstackid")
+// execution.setVariable("DCVFMODVOLRBK_heatStackId", heatStackId)
+// String requestId = rollbackData.get("DCVFMODULEVOL", "msorequestid")
+// execution.setVariable("DCVFMODVOLRBK_requestId", requestId)
+
+ String volumeGroupName = rollbackData.get("DCVFMODULEVOL", "volumeGroupName")
+ execution.setVariable("DCVFMODVOLRBK_volumeGroupName", volumeGroupName)
+
+ String lcpCloudRegionId = rollbackData.get("DCVFMODULEVOL", "aiccloudregion")
+ execution.setVariable("DCVFMODVOLRBK_lcpCloudRegionId", lcpCloudRegionId)
+
+ execution.setVariable("DCVFMODVOLRBK_rollbackVnfARequest", rollbackData.get("DCVFMODULEVOL", "rollbackVnfARequest"))
+ execution.setVariable("DCVFMODVOLRBK_backoutOnFailure", rollbackData.get("DCVFMODULEVOL", "backoutOnFailure"))
+ execution.setVariable("DCVFMODVOLRBK_isCreateVnfRollbackNeeded", rollbackData.get("DCVFMODULEVOL", "isCreateVnfRollbackNeeded"))
+ execution.setVariable("DCVFMODVOLRBK_isAAIRollbackNeeded", rollbackData.get("DCVFMODULEVOL", "isAAIRollbackNeeded"))
+
+ }
+
+ /**
+ * Query AAI volume group by name
+ * @param execution
+ * @param isDebugEnabled
+ */
+ public void callRESTQueryAAIVolGrpName(Execution execution, isDebugEnabled) {
+
+ def volumeGroupName = execution.getVariable('DCVFMODVOLRBK_volumeGroupName')
+ def cloudRegion = execution.getVariable('DCVFMODVOLRBK_lcpCloudRegionId')
+
+ // This is for stub testing
+ def testVolumeGroupName = execution.getVariable('test-volume-group-name')
+ if (testVolumeGroupName != null && testVolumeGroupName.length() > 0) {
+ volumeGroupName = testVolumeGroupName
+ }
+
+ AaiUtil aaiUtil = new AaiUtil(this)
+ String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+ String queryAAIVolumeNameRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups" + "?volume-group-name=" + UriUtils.encode(volumeGroupName, 'UTF-8')
+
+ utils.logAudit('Query AAI volume group by name: ' + queryAAIVolumeNameRequest)
+
+ APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVolumeNameRequest)
+
+ String returnCode = response.getStatusCode()
+ String aaiResponseAsString = response.getResponseBodyAsString()
+ //aaiResponseAsString = StringEscapeUtils.unescapeXml(aaiResponseAsString)
+
+ utils.logAudit("AAI query volume group by name return code: " + returnCode)
+ utils.logAudit("AAI query volume group by name response: " + aaiResponseAsString)
+
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+ execution.setVariable(prefix+"queryAAIVolGrpNameResponse", aaiResponseAsString)
+ execution.setVariable(prefix+'AaiReturnCode', returnCode)
+
+ if (returnCode=='200') {
+ // @TODO: verify error code
+ // @TODO: create class of literals representing error codes
+ execution.setVariable(prefix+'queryAAIVolGrpNameResponse', aaiResponseAsString)
+ utils.log("DEBUG", "Volume Group Name $volumeGroupName exists in AAI.", isDebugEnabled)
+ } else {
+ if (returnCode=='404') {
+ utils.log("DEBUG", "Volume Group Name $volumeGroupName does not exist in AAI.", isDebugEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $volumeGroupName not found in AAI. Response code: 404")
+ } else {
+ WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+ throw new BpmnError("MSOWorkflowException")
+ }
+ }
+ }
+
+
+
+ public void callRESTDeleteAAIVolumeGroup(Execution execution, isDebugEnabled) {
+
+ callRESTQueryAAIVolGrpName(execution, isDebugEnabled)
+
+ def queryAaiVolumeGroupResponse = execution.getVariable(prefix+'queryAAIVolGrpNameResponse')
+
+ def volumeGroupId = utils.getNodeText(queryAaiVolumeGroupResponse, "volume-group-id")
+ def resourceVersion = utils.getNodeText(queryAaiVolumeGroupResponse, "resource-version")
+
+ def cloudRegion = execution.getVariable("DCVFMODVOLRBK_lcpCloudRegionId")
+
+ AaiUtil aaiUtil = new AaiUtil(this)
+ String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+ String deleteAAIVolumeGrpIdRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups/volume-group" + '/' + volumeGroupId + "?resource-version=" + UriUtils.encode(resourceVersion, "UTF-8")
+
+ utils.logAudit('Delete AAI volume group : ' + deleteAAIVolumeGrpIdRequest)
+
+ APIResponse response = aaiUtil.executeAAIDeleteCall(execution, deleteAAIVolumeGrpIdRequest)
+
+ String returnCode = response.getStatusCode()
+ String aaiResponseAsString = response.getResponseBodyAsString()
+ //aaiResponseAsString = StringEscapeUtils.unescapeXml(aaiResponseAsString)
+
+ utils.logAudit("AAI delete volume group return code: " + returnCode)
+ utils.logAudit("AAI delete volume group response: " + aaiResponseAsString)
+
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+ def volumeGroupNameFound = prefix+'volumeGroupNameFound'
+ if (returnCode=='200' || returnCode=='204' ) {
+ utils.log("DEBUG", "Volume group $volumeGroupId deleted.", isDebugEnabled)
+ } else {
+ if (returnCode=='404') {
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $volumeGroupId not found for delete in AAI Response code: 404")
+ } else {
+ WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+ throw new BpmnError("MSOWorkflowException")
+ }
+ }
+ }
+
+ // *******************************
+ // Build Error Section
+ // *******************************
+
+
+
+ public void processJavaException(Execution execution){
+ def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+ execution.setVariable("prefix",Prefix)
+
+ try{
+ utils.log("DEBUG", "Caught a Java Exception in " + Prefix, isDebugEnabled)
+ utils.log("DEBUG", "Started processJavaException Method", isDebugEnabled)
+ utils.log("DEBUG", "Variables List: " + execution.getVariables(), isDebugEnabled)
+ execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix) // Adding this line temporarily until this flows error handling gets updated
+ exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
+
+ }catch(Exception e){
+ utils.log("DEBUG", "Caught Exception during processJavaException Method: " + e, isDebugEnabled)
+ execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix) // Adding this line temporarily until this flows error handling gets updated
+ exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix)
+ }
+ utils.log("DEBUG", "Completed processJavaException Method in " + Prefix, isDebugEnabled)
+ }
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV1.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy index 8e54024c6f..2d004b88ac 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV1.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy @@ -1,657 +1,593 @@ -/*- - * ============LICENSE_START======================================================= - * OPENECOMP - MSO - * ================================================================================ - * 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.mso.bpmn.infrastructure.scripts - -import static org.camunda.spin.Spin.XML - -import org.apache.commons.lang3.* -import org.camunda.bpm.engine.delegate.BpmnError -import org.camunda.bpm.engine.runtime.Execution -import org.openecomp.mso.bpmn.common.scripts.AaiUtil -import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil -import org.openecomp.mso.bpmn.common.scripts.NetworkUtils -import org.openecomp.mso.bpmn.common.scripts.VfModuleBase -import org.openecomp.mso.bpmn.core.WorkflowException -import org.openecomp.mso.rest.APIResponse -import org.springframework.web.util.UriUtils - -class DoCreateVfModuleVolumeV1 extends VfModuleBase { - - String prefix='DCVFMODVOLV1_' - - - /** - * Perform initial processing, such as request validation, initialization of variables, etc. - * * @param execution - */ - public void preProcessRequest (Execution execution) { - def isDebugEnabled=execution.getVariable("isDebugLogEnabled") - preProcessRequest(execution, isDebugEnabled) - } - - /** - * Perform initial processing, such as request validation, initialization of variables, etc. - * @param execution - * @param isDebugEnabled - */ - public void preProcessRequest (Execution execution, isDebugEnabled) { - - execution.setVariable("prefix",prefix) - execution.setVariable(prefix+'SuccessIndicator', false) - - - // INPUT: DoCreateVfModuleVolumeV1Request, mso-request-id, volume-group-id, vnf-id, is-vid-request - // OUTPUT: DCVFMODVOLV1_SuccessIndicator. WorkflowException - - def volumeRequest = getVariable(execution, 'DoCreateVfModuleVolumeV1Request') - if (volumeRequest != null) { - execution.setVariable(prefix+'Request', volumeRequest) - } else { - volumeRequest = getVariable(execution, prefix+'Request') - if (volumeRequest == null) { - (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, 'DoCreateVfModuleVolumeV1 received null request.') - } - } - - def vnfId = execution.getVariable('vnf-id') - if (vnfId == null) { - (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, 'DoCreateVfModuleVolumeV1 received null vnf-id.') - } - - def volumeGroupId = execution.getVariable('volume-group-id') - if (volumeGroupId == null) { - (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, 'DoCreateVfModuleVolumeV1 received null volume-group-id.') - } - - def requestId = execution.getVariable("mso-request-id") - if (requestId == null || requestId == "") { - requestId = utils.getNodeText1(volumeRequest, "request-id") - } - - //def serviceId = execution.getVariable("mso-service-instance-id") - //if (serviceId == null || serviceId == "") { - def serviceId = utils.getNodeText1(volumeRequest, "service-id") - //} - - def source = utils.getNodeText1(volumeRequest, "source") - - execution.setVariable(prefix+'requestId', requestId) - execution.setVariable(prefix+'serviceId', serviceId) - execution.setVariable(prefix+'source', source) - - // @TODO: for better tracking of logs, should we strip all new lines in the log message? - utils.logAudit('Incoming request: ' + volumeRequest) - - // Rollback settings - NetworkUtils networkUtils = new NetworkUtils() - def rollbackEnabled = networkUtils.isRollbackEnabled(execution,volumeRequest) - execution.setVariable(prefix+"rollbackEnabled", rollbackEnabled) - utils.log("DEBUG", 'rollbackEnabled: ' + rollbackEnabled, isDebugEnabled) - - } - - - /** - * Get cloud region - * @param execution - * @param isDebugEnabled - */ - public void callRESTQueryAAICloudRegion (Execution execution, isDebugEnabled) { - - def request = execution.getVariable(prefix+'Request') - def cloudRegion = utils.getNodeText1(request, "aic-cloud-region") - utils.log("DEBUG", 'Request cloud region is: ' + cloudRegion, isDebugEnabled) - - AaiUtil aaiUtil = new AaiUtil(this) - String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) - String queryCloudRegionRequest = aaiEndpoint + '/' + cloudRegion - - utils.logAudit(queryCloudRegionRequest) - - cloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion) - - if ((cloudRegion != "ERROR")) { - if(execution.getVariable(prefix+"queryCloudRegionReturnCode") == "404"){ - cloudRegion = "AAIAIC25" - } - execution.setVariable(prefix+"aicCloudRegion", cloudRegion) - utils.log("DEBUG", "AIC Cloud Region: " + cloudRegion, isDebugEnabled) - } else { - String errorMessage = "AAI Query Cloud Region Unsuccessful. Return Code: " + execution.getVariable(prefix+"queryCloudRegionReturnCode") - utils.log("DEBUG", errorMessage, isDebugEnabled) - (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, errorMessage) - } - } - - - /** - * Query AAI volume group by name - * @param execution - * @param isDebugEnabled - */ - public void callRESTQueryAAIVolGrpName(Execution execution, isDebugEnabled) { - - def volumeRequest = execution.getVariable(prefix+'Request') - def volumeGroupName = utils.getNodeText(volumeRequest, "volume-group-name") - def cloudRegion = execution.getVariable(prefix+"aicCloudRegion") - - // Save volume group name - execution.setVariable(prefix+'volumeGroupName', volumeGroupName) - - // This is for stub testing - def testVolumeGroupName = execution.getVariable('test-volume-group-name') - if (testVolumeGroupName != null && testVolumeGroupName.length() > 0) { - volumeGroupName = testVolumeGroupName - //reset to null - execution.setVariable('test-volume-group-name', null) - } - - AaiUtil aaiUtil = new AaiUtil(this) - String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) - String queryAAIVolumeNameRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups" + "?volume-group-name=" + UriUtils.encode(volumeGroupName, 'UTF-8') - - utils.logAudit('Query AAI volume group by name: ' + queryAAIVolumeNameRequest) - - APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVolumeNameRequest) - - String returnCode = response.getStatusCode() - String aaiResponseAsString = response.getResponseBodyAsString() - aaiResponseAsString = StringEscapeUtils.unescapeXml(aaiResponseAsString) - - utils.logAudit("AAI query volume group by name return code: " + returnCode) - utils.logAudit("AAI query volume group by name response: " + aaiResponseAsString) - - ExceptionUtil exceptionUtil = new ExceptionUtil() - - execution.setVariable(prefix+"queryAAIVolGrpNameResponse", aaiResponseAsString) - execution.setVariable(prefix+'AaiReturnCode', returnCode) - - if (returnCode=='200') { - // @TODO: verify error code - // @TODO: create class of literals representing error codes - execution.setVariable(prefix+'queryAAIVolGrpNameResponse', aaiResponseAsString) - utils.log("DEBUG", "Volume Group Name $volumeGroupName exists in AAI.", isDebugEnabled) - } else { - if (returnCode=='404') { - utils.log("DEBUG", "Volume Group Name $volumeGroupName does not exist in AAI.", isDebugEnabled) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $volumeGroupName not found in AAI. Response code: 404") - } else { - WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) - throw new BpmnError("MSOWorkflowException") - } - } - } - - - /** - * Create a WorkflowException - * @param execution - * @param isDebugEnabled - */ - public void buildWorkflowException(Execution execution, int errorCode, errorMessage, isDebugEnabled) { - utils.log("DEBUG", errorMessage, isDebugEnabled) - (new ExceptionUtil()).buildWorkflowException(execution, 2500, errorMessage) - } - - - /** - * Create a WorkflowException - * @param execution - * @param isDebugEnabled - */ - public void handleError(Execution execution, isDebugEnabled) { - WorkflowException we = execution.getVariable('WorkflowException') - if (we == null) { - (new ExceptionUtil()).buildWorkflowException(execution, 2500, "Enexpected error encountered!") - } - throw new BpmnError("MSOWorkflowException") - } - - /** - * Create volume group in AAI - * @param execution - * @param isDebugEnabled - */ - public void callRESTCreateAAIVolGrpName(Execution execution, isDebugEnabled) { - - def volumeRequest = execution.getVariable(prefix+'Request') - def vnfId = execution.getVariable('vnf-id') - def volumeName = utils.getNodeText(volumeRequest, "volume-group-name") - def modelCustomizationId = getNodeTextForce(volumeRequest, "model-customization-id") - - def cloudRegion = execution.getVariable(prefix+"aicCloudRegion") - def groupId = execution.getVariable('volume-group-id') - utils.log("DEBUG", "volume group id: " + groupId, isDebugEnabled) - - AaiUtil aaiUtil = new AaiUtil(this) - String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) - String createAAIVolumeGrpNameUrlRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups/volume-group/" + UriUtils.encode(groupId, "UTF-8") - - String namespace = aaiUtil.getNamespaceFromUri(aaiUtil.getCloudInfrastructureCloudRegionUri(execution)) - utils.log("DEBUG", "AAI namespace is: " + namespace, isDebugEnabled) - - utils.logAudit(createAAIVolumeGrpNameUrlRequest) - - //Prepare payload (PUT) - def vnfType = utils.getNodeText(volumeRequest, "vnf-type") - def tenantId = utils.getNodeText(volumeRequest, "tenant-id") - - NetworkUtils networkUtils = new NetworkUtils() - String payload = networkUtils.createCloudRegionVolumeRequest(groupId, volumeName, vnfType, vnfId, tenantId, cloudRegion, namespace, modelCustomizationId) - String payloadXml = utils.formatXml(payload) - utils.logAudit(payloadXml) - - APIResponse response = aaiUtil.executeAAIPutCall(execution, createAAIVolumeGrpNameUrlRequest, payloadXml) - - String returnCode = response.getStatusCode() - String aaiResponseAsString = response.getResponseBodyAsString() - aaiResponseAsString = StringEscapeUtils.unescapeXml(aaiResponseAsString) - - utils.logAudit("AAI create volume group return code: " + returnCode) - utils.logAudit("AAI create volume group response: " + aaiResponseAsString) - - execution.setVariable(prefix+"createAAIVolumeGrpNameReturnCode", returnCode) - execution.setVariable(prefix+"createAAIVolumeGrpNameResponse", aaiResponseAsString) - - ExceptionUtil exceptionUtil = new ExceptionUtil() - - if (returnCode =='201') { - execution.setVariable(prefix+"isAAIRollbackNeeded", true) - } else { - execution.setVariable(prefix+"isErrorMessageException", true) - if (returnCode=='404') { - // @TODO: verify return code and make static LITERAL - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Unable to create volume group in AAI. Response code: 404") - } else { - WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) - utils.log("DEBUG", " AAI Adapter Query Failed. WorkflowException - " + "\n" + aWorkflowException, isDebugEnabled) - throw new BpmnError("MSOWorkflowException") - } - } - } - - /** - * Prepare VNF adapter create request XML - * @param execution - */ - public void prepareVnfAdapterCreateRequest(Execution execution, isDebugEnabled) { - - - def volumeRequest = execution.getVariable(prefix+'Request') - def requestId = execution.getVariable(prefix+'requestId') - def serviceId = execution.getVariable(prefix+'serviceId') - - def aaiGenericVnfResponse = execution.getVariable(prefix+'AAIQueryGenericVfnResponse') - def vnfId = utils.getNodeText1(aaiGenericVnfResponse, 'vnf-id') - def vnfName = utils.getNodeText1(aaiGenericVnfResponse, 'vnf-name') - def modelCustomizationId = getNodeTextForce(volumeRequest, "model-customization-id") - - String messageId = UUID.randomUUID() - utils.log("DEBUG", "messageId to be used is generated: " + messageId, isDebugEnabled) - - // prepare vnf request for vnfAdapterCreateV1 - def cloudSiteId = utils.getNodeText1(volumeRequest, 'aic-cloud-region') - def tenantId = utils.getNodeText1(volumeRequest, "tenant-id") - def vnfType = utils.getNodeText1(volumeRequest, "vnf-type") - def vnfVersion = utils.getNodeText1(volumeRequest, "asdc-service-model-version") - def vnfModuleType = utils.getNodeText1(volumeRequest, "vf-module-model-name") - def volumeGroupnName = utils.getNodeText1(volumeRequest, "volume-group-name") - - def volumeParamsXml = utils.getNodeXml(volumeRequest, 'volume-params') - def volumeGroupParams = transformVolumeParamsToEntries(volumeParamsXml) - - utils.log("DEBUG", "volumeGroupParams: "+ volumeGroupParams, isDebugEnabled) - - String volumeGroupId = execution.getVariable('volume-group-id') - def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId) - def useQualifiedHostName = execution.getVariable("URN_mso_use_qualified_host") - if ('true'.equals(useQualifiedHostName)) { - notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl) - } - utils.log("DEBUG", "CreateVfModuleVolume - notificationUrl: "+ notificationUrl, isDebugEnabled) - - def backoutOnFailure = execution.getVariable("DCVFMODVOLV1_rollbackEnabled") - utils.log("DEBUG", "backoutOnFailure: "+ backoutOnFailure, isDebugEnabled) - - // build request - String vnfSubCreateWorkflowRequest = - """ - <createVolumeGroupRequest> - <cloudSiteId>${cloudSiteId}</cloudSiteId> - <tenantId>${tenantId}</tenantId> - <vnfId>${vnfId}</vnfId> - <vnfName>${vnfName}</vnfName> - <volumeGroupId>${volumeGroupId}</volumeGroupId> - <volumeGroupName>${volumeGroupnName}</volumeGroupName> - <vnfType>${vnfType}</vnfType> - <vnfVersion>${vnfVersion}</vnfVersion> - <vfModuleType>${vnfModuleType}</vfModuleType> - <modelCustomizationUuid>${modelCustomizationId}</modelCustomizationUuid> - <volumeGroupParams> - <entry> - <key>vnf_id</key> - <value>${vnfId}</value> - </entry> - <entry> - <key>vnf_name</key> - <value>${vnfName}</value> - </entry> - <entry> - <key>vf_module_id</key> - <value>${volumeGroupId}</value> - </entry> - <entry> - <key>vf_module_name</key> - <value>${volumeGroupnName}</value> - </entry> - ${volumeGroupParams} - </volumeGroupParams> - <skipAAI>true</skipAAI> - <backout>${backoutOnFailure}</backout> - <failIfExists>true</failIfExists> - <msoRequest> - <requestId>${requestId}</requestId> - <serviceInstanceId>${serviceId}</serviceInstanceId> - </msoRequest> - <messageId>${messageId}</messageId> - <notificationUrl>${notificationUrl}</notificationUrl> - </createVolumeGroupRequest> - """ - - String vnfSubCreateWorkflowRequestAsString = utils.formatXml(vnfSubCreateWorkflowRequest) - utils.logAudit(vnfSubCreateWorkflowRequestAsString) - utils.log('DEBUG', vnfSubCreateWorkflowRequestAsString, isDebugEnabled) - execution.setVariable(prefix+"createVnfARequest", vnfSubCreateWorkflowRequestAsString) - - // build rollback request for use later if needed - - String vnfSubRollbackWorkflowRequest = - """<rollbackVolumeGroupRequest> - <cloudSiteId>${cloudSiteId}</cloudSiteId> - <tenantId>${tenantId}</tenantId> - <volumeGroupId>${volumeGroupId}</volumeGroupId> - <skipAAI>true</skipAAI> - <volumeGroupCreated>true</volumeGroupCreated> - <msoRequest> - <requestId>${requestId}</requestId> - <serviceInstanceId>${serviceId}</serviceInstanceId> - </msoRequest> - <messageId>${messageId}</messageId> - <notificationUrl>${notificationUrl}</notificationUrl> - </rollbackVolumeGroupRequest>""" - - utils.log("DEBUG", "Sub Vnf flow rollback request: vnfSubRollbackWorkflowRequest " + "\n" + vnfSubRollbackWorkflowRequest, isDebugEnabled) - - String vnfSubRollbackWorkflowRequestAsString = utils.formatXml(vnfSubRollbackWorkflowRequest) - execution.setVariable(prefix+"rollbackVnfARequest", vnfSubRollbackWorkflowRequestAsString) - } - - - - /** - * Update voulume group in AAI - * @TODO: Can we re-use the create method?? - * @param execution - * @param isDebugEnabled - */ - public void callRESTUpdateCreatedVolGrpName(Execution execution, isDebugEnabled) { - - // get variables - String requeryAAIVolGrpNameResponse = execution.getVariable(prefix+"queryAAIVolGrpNameResponse") - String volumeGroupId = utils.getNodeText(requeryAAIVolGrpNameResponse, "volume-group-id") - String modelCustomizationId = getNodeTextForce(requeryAAIVolGrpNameResponse, "vf-module-persona-model-customization-id") - String cloudRegion = execution.getVariable(prefix+"aicCloudRegion") - - AaiUtil aaiUtil = new AaiUtil(this) - String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) - String updateAAIVolumeGroupUrlRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups/volume-group/" + UriUtils.encode(volumeGroupId, 'UTF-8') - - String namespace = aaiUtil.getNamespaceFromUri(aaiUtil.getCloudInfrastructureCloudRegionUri(execution)) - - utils.logAudit(updateAAIVolumeGroupUrlRequest) - - //Prepare payload (PUT) - String createVnfAResponse = execution.getVariable(prefix+"createVnfAResponse") - - // @TODO: revisit - // if VID request createVnfresponse will be null, use vnf from JSON request - def vnfId = "" - if(createVnfAResponse == null || createVnfAResponse == "") { - vnfId = execution.getVariable(prefix+'vnfId') - } - else { - vnfId = utils.getNodeText(createVnfAResponse, "volumeGroupStackId") - } - - NetworkUtils networkUtils = new NetworkUtils() - String payload = networkUtils.updateCloudRegionVolumeRequest(requeryAAIVolGrpNameResponse, vnfId, namespace, modelCustomizationId) - String payloadXml = utils.formatXml(payload) - - //execution.setVariable(prefix+"updateCreatedAAIVolumeGrpNamePayloadRequest", payloadXml) - utils.logAudit(payload) - //utils.log("DEBUG", " 'payload' to Update Created VolumeGroupName - " + "\n" + payloadXml, isDebugEnabled) - - APIResponse response = aaiUtil.executeAAIPutCall(execution, updateAAIVolumeGroupUrlRequest, payloadXml) - - String returnCode = response.getStatusCode() - String aaiResponseAsString = response.getResponseBodyAsString() - aaiResponseAsString = StringEscapeUtils.unescapeXml(aaiResponseAsString) - - utils.logAudit("AAI create volume group return code: " + returnCode) - utils.logAudit("AAI create volume group response: " + aaiResponseAsString) - - ExceptionUtil exceptionUtil = new ExceptionUtil() - - if (returnCode =='200') { - execution.setVariable(prefix+"updateCreatedAAIVolumeGrpNameResponse", aaiResponseAsString) - execution.setVariable(prefix+"isPONR", true) - } else { - execution.setVariable(prefix+"isErrorMessageException", true) - if (returnCode=='404') { - // @TODO: verify return code and make static LITERAL - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Unable to update volume group in AAI. Response code: 404") - } else { - WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) - utils.log("DEBUG", " AAI Adapter Query Failed. WorkflowException - " + "\n" + aWorkflowException, isDebugEnabled) - throw new BpmnError("MSOWorkflowException") - } - } - } - - - /** - * Query AAI service instance - * @param execution - * @param isDebugEnabled - */ - public void callRESTQueryAAIGenericVnf(Execution execution, isDebugEnabled) { - - def request = execution.getVariable(prefix+"Request") - def vnfId = execution.getVariable('vnf-id') - - AaiUtil aaiUtil = new AaiUtil(this) - String aaiEndpoint = aaiUtil.getNetworkGenericVnfEndpoint(execution) - def String queryAAIRequest = aaiEndpoint + "/" + UriUtils.encode(vnfId, "UTF-8") - - utils.logAudit("AAI query generic vnf request: " + queryAAIRequest) - - APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIRequest) - - String returnCode = response.getStatusCode() - String aaiResponseAsString = response.getResponseBodyAsString() - aaiResponseAsString = StringEscapeUtils.unescapeXml(aaiResponseAsString) - - utils.logAudit("AAI query generic vnf return code: " + returnCode) - utils.logAudit("AAI query generic vnf response: " + aaiResponseAsString) - - //utils.log("DEBUG", "AAI query generic vnf return code: " + returnCode, isDebugEnabled) - //utils.log("DEBUG", "AAI query generic vnf response: " + aaiResponseAsString, isDebugEnabled) - - ExceptionUtil exceptionUtil = new ExceptionUtil() - - if (returnCode=='200') { - utils.log("DEBUG", 'Generic vnf ' + vnfId + ' found in AAI.', isDebugEnabled) - execution.setVariable(prefix+'AAIQueryGenericVfnResponse', aaiResponseAsString) - } else { - if (returnCode=='404') { - def message = 'Generic vnf ' + vnfId + ' was not found in AAI. Return code: 404.' - utils.log("DEBUG", message, isDebugEnabled) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, message) - } else { - WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) - throw new BpmnError("MSOWorkflowException") - } - } - } - - public void callRESTDeleteAAIVolumeGroup(Execution execution, isDebugEnabled) { - - callRESTQueryAAIVolGrpName(execution, isDebugEnabled) - - def queryAaiVolumeGroupResponse = execution.getVariable(prefix+'queryAAIVolGrpNameResponse') - - def volumeGroupId = utils.getNodeText(queryAaiVolumeGroupResponse, "volume-group-id") - def resourceVersion = utils.getNodeText(queryAaiVolumeGroupResponse, "resource-version") - - def cloudRegion = execution.getVariable(prefix+"aicCloudRegion") - - AaiUtil aaiUtil = new AaiUtil(this) - String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) - String deleteAAIVolumeGrpIdRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups/volume-group" + '/' + volumeGroupId + "?resource-version=" + UriUtils.encode(resourceVersion, "UTF-8") - - utils.logAudit('Delete AAI volume group : ' + deleteAAIVolumeGrpIdRequest) - - APIResponse response = aaiUtil.executeAAIDeleteCall(execution, deleteAAIVolumeGrpIdRequest) - - String returnCode = response.getStatusCode() - String aaiResponseAsString = response.getResponseBodyAsString() - aaiResponseAsString = StringEscapeUtils.unescapeXml(aaiResponseAsString) - - utils.logAudit("AAI delete volume group return code: " + returnCode) - utils.logAudit("AAI delete volume group response: " + aaiResponseAsString) - - ExceptionUtil exceptionUtil = new ExceptionUtil() - - def volumeGroupNameFound = prefix+'volumeGroupNameFound' - if (returnCode=='200' || returnCode=='204' ) { - utils.log("DEBUG", "Volume group $volumeGroupId deleted.", isDebugEnabled) - } else { - if (returnCode=='404') { - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $volumeGroupId not found for delete in AAI Response code: 404") - } else { - WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) - throw new BpmnError("MSOWorkflowException") - } - } - } - - - - - - public void prepareSuccessDBRequest(Execution execution, isDebugEnabled) { - String requestId = execution.getVariable(prefix+'requestId') - String dbVnfOutputs = execution.getVariable(prefix+'volumeOutputs') - prepareDBRequest(execution, requestId, "VolumeGroup successfully created.", "COMPLETED", "100", dbVnfOutputs, isDebugEnabled) - } - - public void prepareFailDbRequest(Execution execution, isDebugEnabled) { - - WorkflowException we = execution.getVariable("WorkflowException") - - String requestId = execution.getVariable(prefix+'requestId') - String dbVnfOutputs = execution.getVariable(prefix+'volumeOutputs') - prepareDBRequest(execution, requestId, we.getErrorMessage(), "FAILURE", "", dbVnfOutputs, isDebugEnabled) - - } - - - /** - * Prepare Infra DB XML Request - * @param execution - */ - public void prepareDBRequest (Execution execution, String requestId, String statusMessage, String requestStatus, String progress, String dbVnfOutputs, isDebugEnabled) { - - String dbRequest = - """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> - <soapenv:Header/> - <soapenv:Body> - <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb"> - <requestId>${requestId}</requestId> - <lastModifiedBy>BPMN</lastModifiedBy> - <statusMessage>${statusMessage}</statusMessage> - <responseBody></responseBody> - <requestStatus>${requestStatus}</requestStatus> - <progress>${progress}</progress> - <vnfOutputs>${dbVnfOutputs}</vnfOutputs> - </ns:updateInfraRequest> - </soapenv:Body> - </soapenv:Envelope>""" - - utils.log("DEBUG", " DB Adapter Request - " + "\n" + dbRequest, isDebugEnabled) - String buildDeleteDBRequestAsString = utils.formatXml(dbRequest) - - execution.setVariable(prefix+"createDBRequest", buildDeleteDBRequestAsString) - - utils.logAudit(buildDeleteDBRequestAsString) - } - - - - - public void postProcessResponse (Execution execution, isDebugEnabled) { - - String dbReturnCode = execution.getVariable(prefix+"dbReturnCode") - utils.log("DEBUG", "DB Update Response Code : " + dbReturnCode, isDebugEnabled) - - String createDBResponse = execution.getVariable(prefix+"createDBResponse") - utils.logAudit(createDBResponse) - - String source = execution.getVariable(prefix+"source") - String requestId = execution.getVariable(prefix+'requestId') - - String msoCompletionRequest = - """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1" - xmlns:ns="http://org.openecomp/mso/request/types/v1"> - <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1"> - <request-id>${requestId}</request-id> - <action>CREATE</action> - <source>${source}</source> - </request-info> - <aetgt:mso-bpel-name>BPEL Volume Group action: CREATE</aetgt:mso-bpel-name> - </aetgt:MsoCompletionRequest>""" - - // Format Response - String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) - utils.logAudit(xmlMsoCompletionRequest) - - // normal path - if (dbReturnCode == "200") { - execution.setVariable(prefix+"Success", true) - execution.setVariable(prefix+"CompleteMsoProcessRequest", xmlMsoCompletionRequest) - utils.log("DEBUG", " Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest, isDebugEnabled) - } else { - execution.setVariable(prefix+"isErrorMessageException", true) - utils.log("DEBUG", " DB Update failed, code: " + dbReturnCode + ", going to Unexpected Error.", isDebugEnabled) - } - } - -} +package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import static org.camunda.spin.Spin.XML;
+import groovy.json.JsonSlurper
+import groovy.lang.GroovyInterceptable;
+import groovy.xml.XmlUtil
+
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.NetworkUtils
+import org.openecomp.mso.bpmn.common.scripts.VfModuleBase;
+import org.openecomp.mso.bpmn.core.RollbackData
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.core.json.JsonUtils;
+import org.openecomp.mso.rest.APIResponse
+import org.springframework.web.util.UriUtils
+
+
+
+
+import java.util.UUID;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.apache.commons.codec.binary.Base64;
+
+class DoCreateVfModuleVolumeV2 extends VfModuleBase {
+
+ String prefix='DCVFMODVOLV2_'
+ JsonUtils jsonUtil = new JsonUtils()
+
+
+ /**
+ * Perform initial processing, such as request validation, initialization of variables, etc.
+ * * @param execution
+ */
+ public void preProcessRequest(Execution execution) {
+ def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+ preProcessRequest(execution, isDebugEnabled)
+ }
+
+ public void preProcessRequest(Execution execution, isDebugLogEnabled) {
+
+ execution.setVariable("prefix",prefix)
+ execution.setVariable(prefix+'SuccessIndicator', false)
+ execution.setVariable(prefix+'isPONR', false)
+
+ displayInput(execution, isDebugLogEnabled)
+ setRollbackData(execution, isDebugLogEnabled)
+ setRollbackEnabled(execution, isDebugLogEnabled)
+
+
+ def tenantId = execution.getVariable("tenantId")
+ if (tenantId == null) {
+ String cloudConfiguration = execution.getVariable("cloudConfiguration")
+ tenantId = jsonUtil.getJsonValue(cloudConfiguration, "cloudConfiguration.tenantId")
+ execution.setVariable("tenantId", tenantId)
+ }
+
+ def cloudSiteId = execution.getVariable("lcpCloudRegionId")
+ if (cloudSiteId == null) {
+ String cloudConfiguration = execution.getVariable("cloudConfiguration")
+ cloudSiteId = jsonUtil.getJsonValue(cloudConfiguration, "cloudConfiguration.lcpCloudRegionId")
+ execution.setVariable("lcpCloudRegionId", cloudSiteId)
+ }
+
+ // Extract attributes from modelInfo
+ String vfModuleModelInfo = execution.getVariable("vfModuleModelInfo")
+
+ //modelCustomizationUuid
+ def modelCustomizationUuid = jsonUtil.getJsonValue(vfModuleModelInfo, "modelCustomizationUuid")
+ execution.setVariable("modelCustomizationId", modelCustomizationUuid)
+ logDebug("modelCustomizationId: " + modelCustomizationUuid, isDebugLogEnabled)
+
+ //modelName
+ def modelName = jsonUtil.getJsonValue(vfModuleModelInfo, "modelName")
+ execution.setVariable("modelName", modelName)
+ logDebug("modelName: " + modelName, isDebugLogEnabled)
+
+ // The following is used on the get Generic Service Instance call
+ execution.setVariable('GENGS_type', 'service-instance')
+ }
+
+
+ /**
+ * Display input variables
+ * @param execution
+ * @param isDebugLogEnabled
+ */
+ public void displayInput(Execution execution, isDebugLogEnabled) {
+ def input = ['mso-request-id', 'msoRequestId', 'isDebugLogEnabled', 'disableRollback', 'failIfExists', 'serviceInstanceId',
+ 'vnfId', 'vnfName', 'tenantId', 'volumeGroupId', 'volumeGroupName', 'lcpCloudRegionId', 'vnfType', 'vfModuleModelInfo', 'asdcServiceModelVersion',
+ 'test-volume-group-name', 'test-volume-group-id', 'vfModuleInputParams']
+
+ logDebug('Begin input: ', isDebugLogEnabled)
+ input.each {
+ logDebug(it + ': ' + execution.getVariable(it), isDebugLogEnabled)
+ }
+ logDebug('End input.', isDebugLogEnabled)
+ }
+
+
+ /**
+ * Define and set rollbackdata object
+ * @param execution
+ * @param isDebugEnabled
+ */
+ public void setRollbackData(Execution execution, isDebugEnabled) {
+ def rollbackData = execution.getVariable("rollbackData")
+ if (rollbackData == null) {
+ rollbackData = new RollbackData()
+ }
+ def volumeGroupName = execution.getVariable('volumeGroupName')
+ rollbackData.put("DCVFMODULEVOL", "volumeGroupName", volumeGroupName)
+ execution.setVariable("rollbackData", rollbackData)
+ }
+
+
+ /**
+ * validate getServiceInstance response
+ * @param execution
+ * @param isDebugEnabled
+ */
+ public void validateGetServiceInstanceCall(Execution execution, isDebugEnabled) {
+ def found = execution.getVariable('GENGS_FoundIndicator')
+ def success = execution.getVariable('GENGS_SuccessIndicator')
+ def serviceInstanceId = execution.getVariable('serviceInstanceId')
+ utils.log("DEBUG", "getServiceInstance success: " + success, isDebugEnabled)
+ utils.log("DEBUG", "getServiceInstance found: " + found, isDebugEnabled)
+ if(!found || !success) {
+ String errorMessage = "Service instance id not found in AAI: ${serviceInstanceId}."
+ utils.log("DEBUG", errorMessage, isDebugEnabled)
+ (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, errorMessage)
+ }
+
+ }
+
+ /**
+ * Get cloud region
+ * @param execution
+ * @param isDebugEnabled
+ */
+ public void callRESTQueryAAICloudRegion (Execution execution, isDebugEnabled) {
+
+ def cloudRegion = execution.getVariable("lcpCloudRegionId")
+ utils.log("DEBUG", 'Request cloud region is: ' + cloudRegion, isDebugEnabled)
+
+ AaiUtil aaiUtil = new AaiUtil(this)
+ String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+ String queryCloudRegionRequest = aaiEndpoint + '/' + cloudRegion
+
+ utils.logAudit(queryCloudRegionRequest)
+
+ cloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion)
+
+ def aaiCloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "AAI", cloudRegion)
+ if ((aaiCloudRegion != "ERROR")) {
+ execution.setVariable("lcpCloudRegionId", aaiCloudRegion)
+ utils.log("DEBUG", "AIC Cloud Region for AAI: " + aaiCloudRegion, isDebugEnabled)
+ } else {
+ String errorMessage = "AAI Query Cloud Region Unsuccessful. Return Code: " + execution.getVariable(prefix+"queryCloudRegionReturnCode")
+ utils.log("DEBUG", errorMessage, isDebugEnabled)
+ (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, errorMessage)
+ }
+
+ def poCloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion)
+ if ((poCloudRegion != "ERROR")) {
+ execution.setVariable("poLcpCloudRegionId", poCloudRegion)
+ utils.log("DEBUG", "AIC Cloud Region for PO: " + poCloudRegion, isDebugEnabled)
+ } else {
+ String errorMessage = "AAI Query Cloud Region Unsuccessful. Return Code: " + execution.getVariable(prefix+"queryCloudRegionReturnCode")
+ utils.log("DEBUG", errorMessage, isDebugEnabled)
+ (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, errorMessage)
+ }
+
+ def rollbackData = execution.getVariable("rollbackData")
+ rollbackData.put("DCVFMODULEVOL", "aiccloudregion", cloudRegion)
+ }
+
+
+ /**
+ * Query AAI volume group by name
+ * @param execution
+ * @param isDebugEnabled
+ */
+ public void callRESTQueryAAIVolGrpName(Execution execution, isDebugEnabled) {
+
+ def volumeGroupName = execution.getVariable('volumeGroupName')
+ def cloudRegion = execution.getVariable('lcpCloudRegionId')
+
+ // This is for stub testing
+ def testVolumeGroupName = execution.getVariable('test-volume-group-name')
+ if (testVolumeGroupName != null && testVolumeGroupName.length() > 0) {
+ volumeGroupName = testVolumeGroupName
+ }
+
+ AaiUtil aaiUtil = new AaiUtil(this)
+ String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+ String queryAAIVolumeNameRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups" + "?volume-group-name=" + UriUtils.encode(volumeGroupName, 'UTF-8')
+
+ utils.logAudit('Query AAI volume group by name: ' + queryAAIVolumeNameRequest)
+
+ APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVolumeNameRequest)
+
+ String returnCode = response.getStatusCode()
+ String aaiResponseAsString = response.getResponseBodyAsString()
+ aaiResponseAsString = StringEscapeUtils.unescapeXml(aaiResponseAsString)
+
+ utils.logAudit("AAI query volume group by name return code: " + returnCode)
+ utils.logAudit("AAI query volume group by name response: " + aaiResponseAsString)
+
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+ execution.setVariable(prefix+"queryAAIVolGrpNameResponse", aaiResponseAsString)
+ execution.setVariable(prefix+'AaiReturnCode', returnCode)
+
+ if (returnCode=='200') {
+ execution.setVariable(prefix+'queryAAIVolGrpNameResponse', aaiResponseAsString)
+ utils.log("DEBUG", "Volume Group Name $volumeGroupName exists in AAI.", isDebugEnabled)
+ } else {
+ if (returnCode=='404') {
+ utils.log("DEBUG", "Volume Group Name $volumeGroupName does not exist in AAI.", isDebugEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $volumeGroupName not found in AAI. Response code: 404")
+ } else {
+ WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+ throw new BpmnError("MSOWorkflowException")
+ }
+ }
+ }
+
+
+ /**
+ * Create a WorkflowException
+ * @param execution
+ * @param isDebugEnabled
+ */
+ public void buildWorkflowException(Execution execution, int errorCode, errorMessage, isDebugEnabled) {
+ utils.log("DEBUG", errorMessage, isDebugEnabled)
+ (new ExceptionUtil()).buildWorkflowException(execution, 2500, errorMessage)
+ }
+
+
+ /**
+ * Create a WorkflowException
+ * @param execution
+ * @param isDebugEnabled
+ */
+ public void handleError(Execution execution, isDebugEnabled) {
+ WorkflowException we = execution.getVariable('WorkflowException')
+ if (we == null) {
+ (new ExceptionUtil()).buildWorkflowException(execution, 2500, "Enexpected error encountered!")
+ }
+ throw new BpmnError("MSOWorkflowException")
+ }
+
+
+ /**
+ * Create volume group in AAI
+ * @param execution
+ * @param isDebugEnabled
+ */
+ public void callRESTCreateAAIVolGrpName(Execution execution, isDebugEnabled) {
+
+ def vnfId = execution.getVariable('vnfId')
+ def volumeGroupId = execution.getVariable('volumeGroupId')
+ def volumeName = execution.getVariable("volumeGroupName")
+ def modelCustomizationId = execution.getVariable("modelCustomizationId")
+ def vnfType = execution.getVariable("vnfType")
+ def tenantId = execution.getVariable("tenantId")
+ def cloudRegion = execution.getVariable('lcpCloudRegionId')
+
+ utils.log("DEBUG", "volumeGroupId: " + volumeGroupId, isDebugEnabled)
+
+ def testGroupId = execution.getVariable('test-volume-group-id')
+ if (testGroupId != null && testGroupId.trim() != '') {
+ utils.log("DEBUG", "test volumeGroupId is present: " + testGroupId, isDebugEnabled)
+ volumeGroupId = testGroupId
+ execution.setVariable("test-volume-group-name", "MSOTESTVOL101a-vSAMP12_base_vol_module-0")
+ }
+
+ utils.log("DEBUG", "volumeGroupId to be used: " + volumeGroupId, isDebugEnabled)
+
+ AaiUtil aaiUtil = new AaiUtil(this)
+ String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+ String createAAIVolumeGrpNameUrlRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups/volume-group/" + UriUtils.encode(volumeGroupId, "UTF-8")
+
+ String namespace = aaiUtil.getNamespaceFromUri(aaiUtil.getCloudInfrastructureCloudRegionUri(execution))
+ utils.log("DEBUG", "AAI namespace is: " + namespace, isDebugEnabled)
+
+ utils.logAudit("Request URL for PUT: " + createAAIVolumeGrpNameUrlRequest)
+
+ NetworkUtils networkUtils = new NetworkUtils()
+ String payload = networkUtils.createCloudRegionVolumeRequest(volumeGroupId, volumeName, vnfType, vnfId, tenantId, cloudRegion, namespace, modelCustomizationId)
+ String payloadXml = utils.formatXml(payload)
+ utils.logAudit("Request payload for PUT: " + payloadXml)
+
+ APIResponse response = aaiUtil.executeAAIPutCall(execution, createAAIVolumeGrpNameUrlRequest, payloadXml)
+
+ String returnCode = response.getStatusCode()
+ String aaiResponseAsString = response.getResponseBodyAsString()
+ aaiResponseAsString = StringEscapeUtils.unescapeXml(aaiResponseAsString)
+
+ utils.logAudit("AAI create volume group return code: " + returnCode)
+ utils.logAudit("AAI create volume group response: " + aaiResponseAsString)
+
+ execution.setVariable(prefix+"createAAIVolumeGrpNameReturnCode", returnCode)
+ execution.setVariable(prefix+"createAAIVolumeGrpNameResponse", aaiResponseAsString)
+
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+ if (returnCode =='201') {
+ RollbackData rollbackData = execution.getVariable("rollbackData")
+ rollbackData.put("DCVFMODULEVOL", "isAAIRollbackNeeded", "true")
+ } else {
+ execution.setVariable(prefix+"isErrorMessageException", true)
+ if (returnCode=='404') {
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Unable to create volume group in AAI. Response code: 404")
+ } else {
+ WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+ utils.log("DEBUG", " AAI Adapter Query Failed. WorkflowException - " + "\n" + aWorkflowException, isDebugEnabled)
+ throw new BpmnError("MSOWorkflowException")
+ }
+ }
+ }
+
+
+ /**
+ * Prepare VNF adapter create request XML
+ * @param execution
+ */
+ public void prepareVnfAdapterCreateRequest(Execution execution, isDebugEnabled) {
+
+ def aaiGenericVnfResponse = execution.getVariable(prefix+'AAIQueryGenericVfnResponse')
+ def vnfId = utils.getNodeText1(aaiGenericVnfResponse, 'vnf-id')
+ def vnfName = utils.getNodeText1(aaiGenericVnfResponse, 'vnf-name')
+ def vnfType = utils.getNodeText1(aaiGenericVnfResponse, "vnf-type")
+
+ def requestId = execution.getVariable('msoRequestId')
+ def serviceId = execution.getVariable('serviceInstanceId')
+ def cloudSiteId = execution.getVariable('poLcpCloudRegionId')
+ def tenantId = execution.getVariable('tenantId')
+ def volumeGroupId = execution.getVariable('volumeGroupId')
+ def volumeGroupnName = execution.getVariable('volumeGroupName')
+
+ def vnfVersion = execution.getVariable("asdcServiceModelVersion")
+ def vnfModuleType = execution.getVariable("modelName")
+
+ def modelCustomizationId = execution.getVariable("modelCustomizationId")
+
+ // for testing
+ utils.log("DEBUG", "volumeGroupId: " + volumeGroupId, isDebugEnabled)
+ def testGroupId = execution.getVariable('test-volume-group-id')
+ if (testGroupId != null && testGroupId.trim() != '') {
+ utils.log("DEBUG", "test volumeGroupId is present: " + testGroupId, isDebugEnabled)
+ volumeGroupId = testGroupId
+ execution.setVariable("test-volume-group-name", "MSOTESTVOL101a-vSAMP12_base_vol_module-0")
+ }
+ utils.log("DEBUG", "volumeGroupId to be used: " + volumeGroupId, isDebugEnabled)
+
+ // volume group parameters
+
+ String volumeGroupParams = ''
+ StringBuilder sbParams = new StringBuilder()
+ Map<String, String> paramsMap = execution.getVariable("vfModuleInputParams")
+ for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
+ String paramsXml
+ String paramName = entry.getKey();
+ String paramValue = entry.getValue()
+ paramsXml =
+ """ <entry>
+ <key>${paramName}</key>
+ <value>${paramValue}</value>
+ </entry>
+ """
+ sbParams.append(paramsXml)
+ }
+
+ volumeGroupParams = sbParams.toString()
+ utils.log("DEBUG", "volumeGroupParams: "+ volumeGroupParams, isDebugEnabled)
+
+ def backoutOnFailure = execution.getVariable(prefix+"backoutOnFailure")
+ utils.log("DEBUG", "backoutOnFailure: "+ backoutOnFailure, isDebugEnabled)
+
+ def failIfExists = execution.getVariable("failIfExists")
+ if(failIfExists == null) {
+ failIfExists = 'true'
+ }
+
+ String messageId = UUID.randomUUID()
+ utils.log("DEBUG", "messageId to be used is generated: " + messageId, isDebugEnabled)
+
+ def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+ def useQualifiedHostName = execution.getVariable("URN_mso_use_qualified_host")
+ if ('true'.equals(useQualifiedHostName)) {
+ notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+ }
+ utils.log("DEBUG", "CreateVfModuleVolume - notificationUrl: "+ notificationUrl, isDebugEnabled)
+
+ // build request
+ String vnfSubCreateWorkflowRequest =
+ """
+ <createVolumeGroupRequest>
+ <cloudSiteId>${cloudSiteId}</cloudSiteId>
+ <tenantId>${tenantId}</tenantId>
+ <vnfId>${vnfId}</vnfId>
+ <vnfName>${vnfName}</vnfName>
+ <volumeGroupId>${volumeGroupId}</volumeGroupId>
+ <volumeGroupName>${volumeGroupnName}</volumeGroupName>
+ <vnfType>${vnfType}</vnfType>
+ <vnfVersion>${vnfVersion}</vnfVersion>
+ <vfModuleType>${vnfModuleType}</vfModuleType>
+ <modelCustomizationUuid>${modelCustomizationId}</modelCustomizationUuid>
+ <volumeGroupParams>
+ <entry>
+ <key>vnf_id</key>
+ <value>${vnfId}</value>
+ </entry>
+ <entry>
+ <key>vnf_name</key>
+ <value>${vnfName}</value>
+ </entry>
+ <entry>
+ <key>vf_module_id</key>
+ <value>${volumeGroupId}</value>
+ </entry>
+ <entry>
+ <key>vf_module_name</key>
+ <value>${volumeGroupnName}</value>
+ </entry>
+ ${volumeGroupParams}
+ </volumeGroupParams>
+ <skipAAI>true</skipAAI>
+ <backout>${backoutOnFailure}</backout>
+ <failIfExists>${failIfExists}</failIfExists>
+ <msoRequest>
+ <requestId>${requestId}</requestId>
+ <serviceInstanceId>${serviceId}</serviceInstanceId>
+ </msoRequest>
+ <messageId>${messageId}</messageId>
+ <notificationUrl>${notificationUrl}</notificationUrl>
+ </createVolumeGroupRequest>
+ """
+
+ String vnfSubCreateWorkflowRequestAsString = utils.formatXml(vnfSubCreateWorkflowRequest)
+ utils.logAudit(vnfSubCreateWorkflowRequestAsString)
+ utils.log('DEBUG', vnfSubCreateWorkflowRequestAsString, isDebugEnabled)
+ execution.setVariable(prefix+"createVnfARequest", vnfSubCreateWorkflowRequestAsString)
+
+ // build rollback request for use later if needed
+
+ String vnfSubRollbackWorkflowRequest =
+ """<rollbackVolumeGroupRequest>
+ <cloudSiteId>${cloudSiteId}</cloudSiteId>
+ <tenantId>${tenantId}</tenantId>
+ <volumeGroupId>${volumeGroupId}</volumeGroupId>
+ <skipAAI>true</skipAAI>
+ <volumeGroupCreated>true</volumeGroupCreated>
+ <msoRequest>
+ <requestId>${requestId}</requestId>
+ <serviceInstanceId>${serviceId}</serviceInstanceId>
+ </msoRequest>
+ <messageId>${messageId}</messageId>
+ <notificationUrl>${notificationUrl}</notificationUrl>
+ </rollbackVolumeGroupRequest>"""
+
+ utils.log("DEBUG", "Sub Vnf flow rollback request: vnfSubRollbackWorkflowRequest " + "\n" + vnfSubRollbackWorkflowRequest, isDebugEnabled)
+
+ String vnfSubRollbackWorkflowRequestAsString = utils.formatXml(vnfSubRollbackWorkflowRequest)
+ execution.setVariable(prefix+"rollbackVnfARequest", vnfSubRollbackWorkflowRequestAsString)
+ }
+
+
+ /**
+ * Validate VNF adapter response
+ * @param execution
+ */
+ public void validateVnfResponse(Execution execution, isDebugEnabled) {
+ def vnfSuccess = execution.getVariable('VNFREST_SuccessIndicator')
+ utils.log("DEBUG", "vnfAdapterSuccessIndicator: "+ vnfSuccess, isDebugEnabled)
+ if(vnfSuccess==true) {
+ def vnfRollbackRequest = execution.getVariable(prefix+"rollbackVnfARequest")
+ utils.log("DEBUG", "vnfAdapter rollback request: "+ vnfRollbackRequest, isDebugEnabled)
+ RollbackData rollbackData = execution.getVariable("rollbackData")
+ rollbackData.put("DCVFMODULEVOL", "rollbackVnfARequest", vnfRollbackRequest)
+ rollbackData.put("DCVFMODULEVOL", "isCreateVnfRollbackNeeded", "true")
+ }
+
+ }
+
+
+ /**
+ * Update voulume group in AAI
+ * @TODO: Can we re-use the create method??
+ * @param execution
+ * @param isDebugEnabled
+ */
+ public void callRESTUpdateCreatedVolGrpName(Execution execution, isDebugEnabled) {
+
+ String requeryAAIVolGrpNameResponse = execution.getVariable(prefix+"queryAAIVolGrpNameResponse")
+ String volumeGroupId = utils.getNodeText1(requeryAAIVolGrpNameResponse, "volume-group-id")
+ String modelCustomizationId = execution.getVariable("modelCustomizationId")
+ String cloudRegion = execution.getVariable("lcpCloudRegionId")
+
+ AaiUtil aaiUtil = new AaiUtil(this)
+ String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+ String updateAAIVolumeGroupUrlRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups/volume-group/" + UriUtils.encode(volumeGroupId, 'UTF-8')
+
+ String namespace = aaiUtil.getNamespaceFromUri(aaiUtil.getCloudInfrastructureCloudRegionUri(execution))
+
+ utils.logAudit(updateAAIVolumeGroupUrlRequest)
+ utils.log("DEBUG", "updateAAIVolumeGroupUrlRequest - " + updateAAIVolumeGroupUrlRequest, isDebugEnabled)
+
+ String createVnfAResponse = execution.getVariable(prefix+"createVnfAResponse")
+ def heatStackID = utils.getNodeText1(createVnfAResponse, "volumeGroupStackId")
+
+ execution.setVariable(prefix+"heatStackId", heatStackID)
+
+ NetworkUtils networkUtils = new NetworkUtils()
+ String payload = networkUtils.updateCloudRegionVolumeRequest(requeryAAIVolGrpNameResponse, heatStackID, namespace, modelCustomizationId)
+ String payloadXml = utils.formatXml(payload)
+
+ utils.logAudit("Payload to Update Created VolumeGroupName - " + "\n" + payloadXml)
+
+ APIResponse response = aaiUtil.executeAAIPutCall(execution, updateAAIVolumeGroupUrlRequest, payloadXml)
+
+ String returnCode = response.getStatusCode()
+ String aaiResponseAsString = response.getResponseBodyAsString()
+ aaiResponseAsString = StringEscapeUtils.unescapeXml(aaiResponseAsString)
+
+ utils.logAudit("AAI create volume group return code: " + returnCode)
+ utils.logAudit("AAI create volume group response: " + aaiResponseAsString)
+
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+ if (returnCode =='200') {
+ execution.setVariable(prefix+"updateCreatedAAIVolumeGrpNameResponse", aaiResponseAsString)
+ execution.setVariable(prefix+"isPONR", true)
+ } else {
+ execution.setVariable(prefix+"isErrorMessageException", true)
+ if (returnCode=='404') {
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Unable to update volume group in AAI. Response code: 404")
+ } else {
+ WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+ utils.log("DEBUG", " AAI Adapter Query Failed. WorkflowException - " + "\n" + aWorkflowException, isDebugEnabled)
+ throw new BpmnError("MSOWorkflowException")
+ }
+ }
+ }
+
+
+ /**
+ * Query AAI Generic VNF
+ * @param execution
+ * @param isDebugEnabled
+ */
+ public void callRESTQueryAAIGenericVnf(Execution execution, isDebugEnabled) {
+
+ def vnfId = execution.getVariable('vnfId')
+
+ AaiUtil aaiUtil = new AaiUtil(this)
+ String aaiEndpoint = aaiUtil.getNetworkGenericVnfEndpoint(execution)
+ def String queryAAIRequest = aaiEndpoint + "/" + UriUtils.encode(vnfId, "UTF-8")
+
+ utils.logAudit("AAI query generic vnf request: " + queryAAIRequest)
+
+ APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIRequest)
+
+ String returnCode = response.getStatusCode()
+ String aaiResponseAsString = response.getResponseBodyAsString()
+ aaiResponseAsString = StringEscapeUtils.unescapeXml(aaiResponseAsString)
+
+ utils.logAudit("AAI query generic vnf return code: " + returnCode)
+ utils.logAudit("AAI query generic vnf response: " + aaiResponseAsString)
+
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+ if (returnCode=='200') {
+ utils.log("DEBUG", 'Generic vnf ' + vnfId + ' found in AAI.', isDebugEnabled)
+ execution.setVariable(prefix+'AAIQueryGenericVfnResponse', aaiResponseAsString)
+ } else {
+ if (returnCode=='404') {
+ def message = 'Generic vnf ' + vnfId + ' was not found in AAI. Return code: 404.'
+ utils.log("DEBUG", message, isDebugEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, message)
+ } else {
+ WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+ throw new BpmnError("MSOWorkflowException")
+ }
+ }
+ }
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnf.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnf.groovy index 8a6cac4a91..0fa08fdc4e 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnf.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnf.groovy @@ -23,12 +23,14 @@ import static org.apache.commons.lang3.StringUtils.* import org.openecomp.mso.bpmn.core.RollbackData import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.runtime.Execution +import org.springframework.web.util.UriUtils import org.openecomp.mso.bpmn.common.scripts.AaiUtil import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils import org.openecomp.mso.bpmn.common.scripts.VidUtils import org.openecomp.mso.bpmn.core.WorkflowException +import org.openecomp.mso.bpmn.core.domain.VnfResource import org.openecomp.mso.bpmn.core.json.JsonUtils @@ -64,7 +66,12 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { /*******************/ try{ - // Get Variables + // Get Variables + + def rollbackData = execution.getVariable("rollbackData") + if (rollbackData == null) { + rollbackData = new RollbackData() + } String vnfModelInfo = execution.getVariable("vnfModelInfo") String serviceModelInfo = execution.getVariable("serviceModelInfo") @@ -76,6 +83,7 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable("serviceInstanceId") execution.setVariable("DoCVNF_serviceInstanceId", serviceInstanceId) + rollbackData.put("VNF", "serviceInstanceId", serviceInstanceId) utils.log("DEBUG", "Incoming Service Instance Id is: " + serviceInstanceId, isDebugEnabled) String vnfType = execution.getVariable("vnfType") @@ -95,17 +103,18 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { String source = "VID" execution.setVariable("DoCVNF_source", source) + rollbackData.put("VNF", "source", source) utils.log("DEBUG", "Incoming Source is: " + source, isDebugEnabled) String suppressRollback = execution.getVariable("disableRollback") execution.setVariable("DoCVNF_suppressRollback", suppressRollback) utils.log("DEBUG", "Incoming Suppress Rollback is: " + suppressRollback, isDebugEnabled) - String modelInvariantId = jsonUtil.getJsonValue(vnfModelInfo, "modelInvariantId") + String modelInvariantId = jsonUtil.getJsonValue(vnfModelInfo, "modelInvariantUuid") execution.setVariable("DoCVNF_modelInvariantId", modelInvariantId) utils.log("DEBUG", "Incoming Invariant Id is: " + modelInvariantId, isDebugEnabled) - String modelVersionId = jsonUtil.getJsonValue(vnfModelInfo, "modelVersionId") + String modelVersionId = jsonUtil.getJsonValue(vnfModelInfo, "modelUuid") if (modelVersionId == null) { modelVersionId = "" } @@ -120,19 +129,21 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { execution.setVariable("DoCVNF_modelName", modelName) utils.log("DEBUG", "Incoming Model Name is: " + modelName, isDebugEnabled) - String modelCustomizationId = jsonUtil.getJsonValue(vnfModelInfo, "modelCustomizationId") - if (modelCustomizationId == null) { - modelCustomizationId = "" + String modelCustomizationId = jsonUtil.getJsonValue(vnfModelInfo, "modelCustomizationUuid") + if (modelCustomizationId == null) { + modelCustomizationId = "" } execution.setVariable("DoCVNF_modelCustomizationId", modelCustomizationId) utils.log("DEBUG", "Incoming Model Customization Id is: " + modelCustomizationId, isDebugEnabled) String cloudSiteId = execution.getVariable("lcpCloudRegionId") execution.setVariable("DoCVNF_cloudSiteId", cloudSiteId) + rollbackData.put("VNF", "cloudSiteId", cloudSiteId) utils.log("DEBUG", "Incoming Cloud Site Id is: " + cloudSiteId, isDebugEnabled) String tenantId = execution.getVariable("tenantId") execution.setVariable("DoCVNF_tenantId", tenantId) + rollbackData.put("VNF", "tenantId", tenantId) utils.log("DEBUG", "Incoming Tenant Id is: " + tenantId, isDebugEnabled) String globalSubscriberId = execution.getVariable("globalSubscriberId") @@ -186,15 +197,33 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg) } execution.setVariable("DoCVNF_sdncCallbackUrl", sdncCallbackUrl) + rollbackData.put("VNF", "sdncCallbackUrl", sdncCallbackUrl) utils.logAudit("SDNC Callback URL: " + sdncCallbackUrl) logDebug("SDNC Callback URL is: " + sdncCallbackUrl, isDebugEnabled) - def rollbackData = execution.getVariable("RollbackData") - if (rollbackData == null) { - rollbackData = new RollbackData() - } + VnfResource vnfResource = (VnfResource) execution.getVariable("vnfResourceDecomposition") + + String nfRole = vnfResource.getNfRole() + execution.setVariable("DoCVNF_nfRole", nfRole) + logDebug("NF Role is: " + nfRole, isDebugEnabled) - execution.setVariable("RollbackData", rollbackData) + String nfNamingCode = vnfResource.getNfNamingCode() + execution.setVariable("DoCVNF_nfNamingCode", nfNamingCode) + logDebug("NF Naming Code is: " + nfNamingCode, isDebugEnabled) + + String nfType = vnfResource.getNfType() + execution.setVariable("DoCVNF_nfType", nfType) + logDebug("NF Type is: " + nfType, isDebugEnabled) + + String nfFunction = vnfResource.getNfFunction() + execution.setVariable("DoCVNF_nfFunction", nfFunction) + logDebug("NF Function is: " + nfFunction, isDebugEnabled) + + rollbackData.put("VNF", "rollbackSDNCAssign", "false") + rollbackData.put("VNF", "rollbackSDNCActivate", "false") + rollbackData.put("VNF", "rollbackVnfCreate", "false") + + execution.setVariable("rollbackData", rollbackData) }catch(BpmnError b){ utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled) @@ -229,6 +258,10 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { def modelCustomizationId = execution.getVariable("DoCVNF_modelCustomizationId") // TODO: 1702 Variable def equipmentRole = execution.getVariable("DoCVNF_equipmentRole") + def nfType = execution.getVariable("DoCVNF_nfType") + def nfRole = execution.getVariable("DoCVNF_nfRole") + def nfFunction = execution.getVariable("DoCVNF_nfFunction") + def nfNamingCode = execution.getVariable("DoCVNF_nfNamingCode") //Get Service Instance Info def serviceInstanceId = execution.getVariable("DoCVNF_serviceInstanceId") @@ -240,6 +273,7 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { int serviceStart = siRelatedLink.indexOf("service-subscription/") int serviceEnd = siRelatedLink.indexOf("/service-instances/") String serviceType = siRelatedLink.substring(serviceStart + 21, serviceEnd) + serviceType = UriUtils.decode(serviceType,"UTF-8") //Get Namespace AaiUtil aaiUtil = new AaiUtil(this) @@ -257,6 +291,10 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { <model-invariant-id>${modelInvariantId}</model-invariant-id> <model-version-id>${modelVersionId}</model-version-id> <model-customization-id>${modelCustomizationId}</model-customization-id> + <nf-type>${nfType}</nf-type> + <nf-role>${nfRole}</nf-role> + <nf-function>${nfFunction}</nf-function> + <nf-naming-code>${nfNamingCode}</nf-naming-code> <relationship-list> <relationship> <related-to>service-instance</related-to> @@ -294,9 +332,10 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { try { //Get Vnf Info String vnfId = execution.getVariable("DoCVNF_vnfId") - def rollbackData = execution.getVariable("RollbackData") + def rollbackData = execution.getVariable("rollbackData") rollbackData.put("VNF", "vnfId", vnfId) - execution.setVariable("RollbackData", rollbackData) + rollbackData.put("VNF", "rollbackVnfCreate", "true") + execution.setVariable("rollbackData", rollbackData) }catch(Exception ex) { utils.log("DEBUG", "Error Occured in DoCreateVnf PostProcessCreateGenericVnf Process " + ex.getMessage(), isDebugEnabled) exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf PostProcessCreateGenericVnf Process") @@ -360,7 +399,7 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { String uuid = execution.getVariable('testReqId') // for junits if(uuid==null){ - uuid = execution.getVariable("mso-request-id") + "-" + System.currentTimeMillis() + uuid = execution.getVariable("DoCVNF_requestId") + "-" + System.currentTimeMillis() } def callbackURL = execution.getVariable("DoCVNF_sdncCallbackUrl") def requestId = execution.getVariable("DoCVNF_requestId") @@ -397,7 +436,7 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> <sdncadapter:RequestHeader> - <sdncadapter:RequestId>${requestId}</sdncadapter:RequestId> + <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId> <sdncadapter:SvcInstanceId>${svcInstId}</sdncadapter:SvcInstanceId> <sdncadapter:SvcAction>${action}</sdncadapter:SvcAction> <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> @@ -467,6 +506,15 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { execution.setVariable("vnfName", vnfName) execution.setVariable("DoCVNF_vnfName", vnfName) } + def rollbackData = execution.getVariable("rollbackData") + if (method.equals("assign")) { + rollbackData.put("VNF", "rollbackSDNCAssign", "true") + } + else if (method.equals("activate")) { + rollbackData.put("VNF", "rollbackSDNCActivate", "true") + } + execution.setVariable("rollbackData", rollbackData) + }else{ logDebug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.", isDebugLogEnabled) diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy index daae3d7dac..6ede7e932d 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy @@ -20,26 +20,26 @@ package org.openecomp.mso.bpmn.infrastructure.scripts import java.util.UUID; +import java.util.List import org.json.JSONObject; import org.json.JSONArray; - -import org.camunda.bpm.engine.delegate.BpmnError -import org.camunda.bpm.engine.runtime.Execution; - -import static org.apache.commons.lang3.StringUtils.*; - -import org.openecomp.mso.bpmn.core.json.JsonUtils import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil import org.openecomp.mso.bpmn.common.scripts.VidUtils import org.openecomp.mso.bpmn.core.RollbackData import org.openecomp.mso.bpmn.core.WorkflowException -import org.openecomp.mso.bpmn.core.decomposition.ModelInfo -import org.openecomp.mso.bpmn.core.decomposition.ModuleResource -import org.openecomp.mso.bpmn.core.decomposition.ServiceDecomposition -import org.openecomp.mso.bpmn.core.decomposition.VnfResource +import org.openecomp.mso.bpmn.core.domain.ModelInfo +import org.openecomp.mso.bpmn.core.domain.ModuleResource +import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition +import org.openecomp.mso.bpmn.core.domain.VnfResource +import org.openecomp.mso.bpmn.core.json.DecomposeJsonUtil +import org.openecomp.mso.bpmn.core.json.JsonUtils +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.runtime.Execution; + +import static org.apache.commons.lang3.StringUtils.*; @@ -54,6 +54,7 @@ class DoCreateVnfAndModules extends AbstractServiceTaskProcessor { JsonUtils jsonUtil = new JsonUtils() VidUtils vidUtils = new VidUtils(this) CatalogDbUtils cutils = new CatalogDbUtils() + DecomposeJsonUtil decomposeJsonUtil = new DecomposeJsonUtil() /** * This method gets and validates the incoming @@ -65,7 +66,8 @@ class DoCreateVnfAndModules extends AbstractServiceTaskProcessor { def isDebugEnabled = execution.getVariable("isDebugLogEnabled") execution.setVariable("prefix",Prefix) utils.log("DEBUG", " *** STARTED DoCreateVnfAndModules PreProcessRequest Process*** ", isDebugEnabled) - + + setBasicDBAuthHeader(execution, isDebugLogEnabled) try{ // Get Variables @@ -81,9 +83,6 @@ class DoCreateVnfAndModules extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable("serviceInstanceId") utils.log("DEBUG", "Incoming Service Instance Id is: " + serviceInstanceId, isDebugEnabled) - String vnfType = execution.getVariable("vnfType") - utils.log("DEBUG", "Incoming Vnf Type is: " + vnfType, isDebugEnabled) - String vnfName = execution.getVariable("vnfName") execution.setVariable("CREVI_vnfName", vnfName) utils.log("DEBUG", "Incoming Vnf Name is: " + vnfName, isDebugEnabled) @@ -117,15 +116,20 @@ class DoCreateVnfAndModules extends AbstractServiceTaskProcessor { } execution.setVariable("vnfId", vnfId) - def rollbackData = execution.getVariable("RollbackData") + def rollbackData = execution.getVariable("rollbackData") if (rollbackData == null) { rollbackData = new RollbackData() } - + + def isTest = execution.getVariable("isTest") + + if (isTest == null || isTest == false) { + execution.setVariable("isBaseVfModule", "true") + } execution.setVariable("numOfCreatedAddOnModules", 0) rollbackData.put("VNFANDMODULES", "numOfCreatedAddOnModules", "0") - execution.setVariable("RollbackData", rollbackData) + execution.setVariable("rollbackData", rollbackData) sleep (20000) @@ -148,6 +152,7 @@ class DoCreateVnfAndModules extends AbstractServiceTaskProcessor { utils.log("DEBUG", " *** STARTED DoCreateVnfAndModules QueryCatalogDB Process *** ", isDebugEnabled) try { + VnfResource vnf = null ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") // if serviceDecomposition is specified, get info from serviceDecomposition if (serviceDecomposition != null) { @@ -158,87 +163,77 @@ class DoCreateVnfAndModules extends AbstractServiceTaskProcessor { utils.log("DEBUG", "Error - vnfs are empty in serviceDecomposition object", isDebugEnabled) exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf queryCatalogDB, vnfs are empty") } - VnfResource vnf = vnfs[0] - utils.log("DEBUG", "Read vnfResource", isDebugEnabled) - if (vnf == null) { - utils.log("DEBUG", "Error - vnf is empty in serviceDecomposition object", isDebugEnabled) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf queryCatalogDB, vnf is null") - } - - List<ModuleResource> vfModules = vnf.getAllVfModuleObjects() - utils.log("DEBUG", "Read vfModules", isDebugEnabled) - if (vfModules == null) { - utils.log("DEBUG", "Error - vfModules are empty in serviceDecomposition object", isDebugEnabled) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf queryCatalogDB, vf modules are empty") - } - JSONArray addOnModules = new JSONArray() - - for (int i = 0; i < vfModules.size; i++) { - utils.log("DEBUG", "handling VF Module ", isDebugEnabled) - ModuleResource vfModule = vfModules[i] - boolean isBase = vfModule.getIsBase() - if (isBase) { - ModelInfo baseVfModuleModelInfoObject = vfModule.getModelInfo() - String baseVfModuleModelInfoWithRoot = baseVfModuleModelInfoObject.toString() - String baseVfModuleModelInfo = jsonUtil.getJsonValue(baseVfModuleModelInfoWithRoot, "modelInfo") - execution.setVariable("baseVfModuleModelInfo", baseVfModuleModelInfo) - String baseVfModuleLabel = vfModule.getVfModuleLabel() - execution.setVariable("baseVfModuleLabel", baseVfModuleLabel) - String basePersonaModelId = baseVfModuleModelInfoObject.getModelInvariantId() - execution.setVariable("basePersonaModelId", basePersonaModelId) - } - else { - addOnModules.put(vfModules[i]) - } - } - - execution.setVariable("addOnModules", addOnModules) - execution.setVariable("addOnModulesToDeploy", addOnModules.length()) - execution.setVariable("addOnModulesDeployed", 0) - + vnf = vnfs[0] + String serviceModelName = serviceDecomposition.getModelInfo().getModelName() + vnf.constructVnfType(serviceModelName) + String vnfType = vnf.getVnfType() + utils.log("DEBUG", "Incoming Vnf Type is: " + vnfType, isDebugEnabled) + execution.setVariable("vnfType", vnfType) } else { //Get Vnf Info String vnfModelInfo = execution.getVariable("vnfModelInfo") utils.log("DEBUG", "vnfModelInfo: " + vnfModelInfo, isDebugEnabled) - String vnfModelCustomizationUuid = jsonUtil.getJsonValueForKey(vnfModelInfo, "modelCustomizationId") + String vnfModelCustomizationUuid = jsonUtil.getJsonValueForKey(vnfModelInfo, "modelCustomizationUuid") if (vnfModelCustomizationUuid == null) { - vnfModelCustomizationUuid = jsonUtil.getJsonValueForKey(vnfModelInfo, "modelCustomizationUuid") + vnfModelCustomizationUuid = "" } utils.log("DEBUG", "querying Catalog DB by vnfModelCustomizationUuid: " + vnfModelCustomizationUuid, isDebugEnabled) - String catalogDbEndpoint = execution.getVariable("URN_mso_catalog_db_endpoint") - - JSONArray vnfs = cutils.getAllVnfsByVnfModelCustomizationUuid(catalogDbEndpoint, + + JSONArray vnfs = cutils.getAllVnfsByVnfModelCustomizationUuid(execution, vnfModelCustomizationUuid) utils.log("DEBUG", "obtained VNF list") // Only one match here - JSONObject vnf = vnfs[0] - JSONArray vfModules = vnf.getJSONArray("vfModules") - JSONArray addOnModules = new JSONArray() - - // Set up base Vf Module info - for (int i = 0; i < vfModules.length(); i++) { - utils.log("DEBUG", "handling VF Module ") - JSONObject vfModule = vfModules[i] - String isBase = jsonUtil.getJsonValueForKey(vfModule, "isBase") - if (isBase.equals("true")) { - JSONObject baseVfModuleModelInfoObject = vfModule.getJSONObject("modelInfo") - String baseVfModuleModelInfo = baseVfModuleModelInfoObject.toString() + JSONObject vnfObject = vnfs[0] + vnf = decomposeJsonUtil.JsonToVnfResource(vnfObject.toString()) + } + utils.log("DEBUG", "Read vnfResource", isDebugEnabled) + if (vnf == null) { + utils.log("DEBUG", "Error - vnf is empty in serviceDecomposition object", isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf queryCatalogDB, vnf is null") + } + execution.setVariable("vnfResourceDecomposition", vnf) + + List<ModuleResource> vfModules = vnf.getAllVfModuleObjects() + utils.log("DEBUG", "Read vfModules", isDebugEnabled) + if (vfModules == null) { + utils.log("DEBUG", "Error - vfModules are empty in serviceDecomposition object", isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf queryCatalogDB, vf modules are empty") + } + + ModuleResource baseVfModule = null + + for (int i = 0; i < vfModules.size; i++) { + utils.log("DEBUG", "handling VF Module ", isDebugEnabled) + ModuleResource vfModule = vfModules[i] + boolean isBase = vfModule.getIsBase() + if (isBase) { + ModelInfo baseVfModuleModelInfoObject = vfModule.getModelInfo() + String baseVfModuleModelInfoWithRoot = baseVfModuleModelInfoObject.toString() + String baseVfModuleModelInfo = jsonUtil.getJsonValue(baseVfModuleModelInfoWithRoot, "modelInfo") execution.setVariable("baseVfModuleModelInfo", baseVfModuleModelInfo) - String baseVfModuleLabel = jsonUtil.getJsonValueForKey(vfModule, "vfModuleLabel") + String baseVfModuleLabel = vfModule.getVfModuleLabel() execution.setVariable("baseVfModuleLabel", baseVfModuleLabel) - String basePersonaModelId = jsonUtil.getJsonValueForKey(baseVfModuleModelInfoObject, "modelInvariantId") + String basePersonaModelId = baseVfModuleModelInfoObject.getModelInvariantUuid() execution.setVariable("basePersonaModelId", basePersonaModelId) - } - else { - addOnModules.put(vfModules[i]) - } - } - - execution.setVariable("addOnModules", addOnModules) - execution.setVariable("addOnModulesToDeploy", addOnModules.length()) - execution.setVariable("addOnModulesDeployed", 0) - } + baseVfModule = vfModule + break + } + + } + + List<ModuleResource>addOnModules = vfModules - baseVfModule + + int addOnModulesToDeploy = 0 + if (addOnModules != null) { + addOnModulesToDeploy = addOnModules.size + } + + utils.log("DEBUG", "AddOnModulesToDeploy: " + addOnModulesToDeploy) + + execution.setVariable("addOnModules", addOnModules) + execution.setVariable("addOnModulesToDeploy", addOnModulesToDeploy) + execution.setVariable("addOnModulesDeployed", 0) }catch(Exception ex) { utils.log("DEBUG", "Error Occured in DoCreateVnfAndModules QueryCatalogDB Process " + ex.getMessage(), isDebugEnabled) @@ -254,7 +249,7 @@ class DoCreateVnfAndModules extends AbstractServiceTaskProcessor { execution.setVariable("vnfId", "skask") } - utils.log("DEBUG", "*** COMPLETED CreateVnfInfra PrepareCreateGenericVnf Process ***", isDebugEnabled) + utils.log("DEBUG", "*** COMPLETED DoCreateVnfAndModules QueryCatalogDB Process ***", isDebugEnabled) } public void preProcessAddOnModule(Execution execution){ @@ -263,25 +258,28 @@ class DoCreateVnfAndModules extends AbstractServiceTaskProcessor { logDebug(" ======== STARTED preProcessAddOnModule ======== ", isDebugLogEnabled) try { - JSONArray addOnModules = (JSONArray) execution.getVariable("addOnModules") + List<ModuleResource>addOnModules = execution.getVariable("addOnModules") int addOnIndex = (int) execution.getVariable("addOnModulesDeployed") - JSONObject addOnModule = addOnModules[addOnIndex] + ModuleResource addOnModule = addOnModules[addOnIndex] + + utils.log("DEBUG", "Got addon module", isDebugLogEnabled) def newVfModuleId = UUID.randomUUID().toString() execution.setVariable("addOnVfModuleId", newVfModuleId) + execution.setVariable("isBaseVfModule", "false") + + execution.setVariable("instancesOfThisModuleDeployed", 0) - execution.setVariable("instancesOfThisModelDeployed", 0) - - JSONObject addOnVfModuleModelInfoObject = jsonUtil.getJsonValueForKey(addOnModule, "modelInfo") - String addOnVfModuleModelInfoWithRoot = addOnVfModuleModelInfoObject.toString() + ModelInfo addOnVfModuleModelInfoObject = addOnModule.getModelInfo() + String addOnVfModuleModelInfoWithRoot = addOnVfModuleModelInfoObject.toString() String addOnVfModuleModelInfo = jsonUtil.getJsonValue(addOnVfModuleModelInfoWithRoot, "modelInfo") execution.setVariable("addOnVfModuleModelInfo", addOnVfModuleModelInfo) - String addOnVfModuleLabel = jsonUtil.getJsonValueForKey(addOnModule, "vfModuleLabel") + String addOnVfModuleLabel = addOnModule.getVfModuleLabel() execution.setVariable("addOnVfModuleLabel", addOnVfModuleLabel) - String addOnPersonaModelId = jsonUtil.getJsonValueForKey(addOnVfModuleModelInfoObject, "modelInvariantId") + String addOnPersonaModelId = addOnVfModuleModelInfoObject.getModelInvariantUuid() execution.setVariable("addOnPersonaModelId", addOnPersonaModelId) - String addOnInitialCount = jsonUtil.getJsonValueForKey(addOnModule, "initialCount") + int addOnInitialCount = addOnModule.getInitialCount() execution.setVariable("initialCount", addOnInitialCount) @@ -289,9 +287,25 @@ class DoCreateVnfAndModules extends AbstractServiceTaskProcessor { utils.log("ERROR", "Exception Occured Processing preProcessAddOnModule. Exception is:\n" + e, isDebugLogEnabled) exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessAddOnModule Method:\n" + e.getMessage()) } - logDebug("======== COMPLETED preProcessSDNCAssignRequest ======== ", isDebugLogEnabled) + logDebug("======== COMPLETED preProcessAddOnModule ======== ", isDebugLogEnabled) } + public void postProcessAddOnModule(Execution execution){ + def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + logDebug(" ======== STARTED postProcessAddOnModule ======== ", isDebugLogEnabled) + + try { + int addOnModulesDeployed = execution.getVariable("addOnModulesDeployed") + execution.setVariable("addOnModulesDeployed", addOnModulesDeployed + 1) + + }catch(Exception e){ + utils.log("ERROR", "Exception Occured Processing postProcessAddOnModule. Exception is:\n" + e, isDebugLogEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during postProcessAddOnModule Method:\n" + e.getMessage()) + } + logDebug("======== COMPLETED postProcessAddOnModule ======== ", isDebugLogEnabled) + } + public void validateBaseModule(Execution execution){ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled") execution.setVariable("prefix", Prefix) @@ -299,11 +313,11 @@ class DoCreateVnfAndModules extends AbstractServiceTaskProcessor { try { def baseRollbackData = execution.getVariable("DCVAM_baseRollbackData") - def rollbackData = execution.getVariable("RollbackData") + def rollbackData = execution.getVariable("rollbackData") def baseModuleMap = baseRollbackData.get("VFMODULE") baseModuleMap.each{ k, v -> rollbackData.put("VFMODULE_BASE", "${k}","${v}") } - execution.setVariable("RollbackData", rollbackData) + execution.setVariable("rollbackData", rollbackData) logDebug("addOnModulesDeployed: " + execution.getVariable("addOnModulesDeployed"), isDebugLogEnabled) logDebug("addOnModulesToDeploy: " + execution.getVariable("addOnModulesToDeploy"), isDebugLogEnabled) if (execution.getVariable("addOnModulesDeployed") < execution.getVariable("addOnModulesToDeploy")) { @@ -329,7 +343,7 @@ class DoCreateVnfAndModules extends AbstractServiceTaskProcessor { int instancesOfThisModuleDeployed = execution.getVariable("instancesOfThisModuleDeployed") int numOfCreatedAddOnModules = execution.getVariable("numOfCreatedAddOnModules") def addOnRollbackData = execution.getVariable("DCVAM_addOnRollbackData") - def rollbackData = execution.getVariable("RollbackData") + def rollbackData = execution.getVariable("rollbackData") def addOnModuleMap = addOnRollbackData.get("VFMODULE") numOfCreatedAddOnModules = numOfCreatedAddOnModules + 1 @@ -341,29 +355,55 @@ class DoCreateVnfAndModules extends AbstractServiceTaskProcessor { execution.setVariable("numOfCreatedAddOnModules", numOfCreatedAddOnModules) rollbackData.put("VNFANDMODULES", "numOfCreatedAddOnModules", "${numOfCreatedAddOnModules}") - execution.setVariable("RollbackData", rollbackData) + execution.setVariable("rollbackData", rollbackData) }catch(Exception e){ utils.log("ERROR", "Exception Occured Processing preProcessAddOnModule. Exception is:\n" + e, isDebugLogEnabled) exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessAddOnModule Method:\n" + e.getMessage()) } - logDebug("======== COMPLETED preProcessSDNCAssignRequest ======== ", isDebugLogEnabled) - } + logDebug("======== COMPLETED validateAddOnModule ======== ", isDebugLogEnabled) + } + + public void preProcessRollback (Execution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("DEBUG"," ***** preProcessRollback ***** ", isDebugEnabled) + try { + + Object workflowException = execution.getVariable("WorkflowException"); - public void finishProcessingInitialCountDeployment(Execution execution){ - def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled") - execution.setVariable("prefix", Prefix) - logDebug(" ======== STARTED finishProcessingInitialCountDeployment ======== ", isDebugLogEnabled) + if (workflowException instanceof WorkflowException) { + utils.log("DEBUG", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugEnabled) + execution.setVariable("prevWorkflowException", workflowException); + //execution.setVariable("WorkflowException", null); + } + } catch (BpmnError e) { + utils.log("DEBUG", "BPMN Error during preProcessRollback", isDebugEnabled) + } catch(Exception ex) { + String msg = "Exception in preProcessRollback. " + ex.getMessage() + utils.log("DEBUG", msg, isDebugEnabled) + } + utils.log("DEBUG"," *** Exit preProcessRollback *** ", isDebugEnabled) + } + public void postProcessRollback (Execution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("DEBUG"," ***** postProcessRollback ***** ", isDebugEnabled) + String msg = "" try { - int addOnModulesDeployed = execution.getVariable("addOnModulesDeployed") - execution.setVariable("addOnModulesDeployed", addOnModulesDeployed + 1) - }catch(Exception e){ - utils.log("ERROR", "Exception Occured Processing preProcessAddOnModule. Exception is:\n" + e, isDebugLogEnabled) - exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessAddOnModule Method:\n" + e.getMessage()) + Object workflowException = execution.getVariable("prevWorkflowException"); + if (workflowException instanceof WorkflowException) { + utils.log("DEBUG", "Setting prevException to WorkflowException: ", isDebugEnabled) + execution.setVariable("WorkflowException", workflowException); + } + execution.setVariable("rollbackData", null) + } catch (BpmnError b) { + utils.log("DEBUG", "BPMN Error during postProcessRollback", isDebugEnabled) + throw b; + } catch(Exception ex) { + msg = "Exception in postProcessRollback. " + ex.getMessage() + utils.log("DEBUG", msg, isDebugEnabled) } - logDebug("======== COMPLETED preProcessSDNCAssignRequest ======== ", isDebugLogEnabled) + utils.log("DEBUG"," *** Exit postProcessRollback *** ", isDebugEnabled) } - -} +}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy index 7b9bed3f7a..84546e11f2 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy @@ -31,8 +31,8 @@ import static org.apache.commons.lang3.StringUtils.*; import org.openecomp.mso.bpmn.core.json.JsonUtils
import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
-import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils
import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
import org.openecomp.mso.bpmn.common.scripts.VidUtils
import org.openecomp.mso.bpmn.core.RollbackData
import org.openecomp.mso.bpmn.core.WorkflowException
@@ -63,12 +63,46 @@ class DoCreateVnfAndModulesRollback extends AbstractServiceTaskProcessor { try{
// Get Rollback Variables
- def rollbackData = execution.getVariable("RollbackData")
+ def rollbackData = execution.getVariable("rollbackData")
utils.log("DEBUG", "Incoming RollbackData is: " + rollbackData.toString(), isDebugEnabled)
+ execution.setVariable("rolledBack", null)
+ execution.setVariable("rollbackError", null)
+
+ if (execution.getVariable("disableRollback").equals("true" ))
+ {
+ execution.setVariable("skipRollback", true)
+ }
+
String vnfId = rollbackData.get("VNF", "vnfId")
utils.log("DEBUG", "Rollback vnfId is: " + vnfId, isDebugEnabled)
execution.setVariable("DCVAMR_vnfId", vnfId)
+ execution.setVariable("mso-request-id", execution.getVariable("msoRequestId"))
+
+ execution.setVariable("DCVAMR_rollbackSDNCAssign", rollbackData.get("VNF", "rollbackSDNCAssign"))
+ execution.setVariable("DCVAMR_rollbackSDNCActivate", rollbackData.get("VNF", "rollbackSDNCActivate"))
+ execution.setVariable("DCVAMR_rollbackVnfCreate", rollbackData.get("VNF", "rollbackVnfCreate"))
+
+ String sdncCallbackUrl = rollbackData.get("VNF", "sdncCallbackUrl")
+ utils.log("DEBUG", "Rollback sdncCallbackUrl is: " + sdncCallbackUrl, isDebugEnabled)
+ execution.setVariable("DCVAMR_sdncCallbackUrl", sdncCallbackUrl)
+
+ String tenantId= rollbackData.get("VNF", "tenantId")
+ utils.log("DEBUG", "Rollback tenantId is: " + tenantId, isDebugEnabled)
+ execution.setVariable("DCVAMR_tenantId", tenantId)
+
+ String source= rollbackData.get("VNF", "source")
+ utils.log("DEBUG", "Rollback source is: " + source, isDebugEnabled)
+ execution.setVariable("DCVAMR_source", source)
+
+ String serviceInstanceId = rollbackData.get("VNF", "serviceInstanceId")
+ utils.log("DEBUG", "Rollback serviceInstanceId is: " + serviceInstanceId, isDebugEnabled)
+ execution.setVariable("DCVAMR_serviceInstanceId", serviceInstanceId)
+
+ String cloudSiteId = rollbackData.get("VNF", "cloudSiteId")
+ utils.log("DEBUG", "Rollback cloudSiteId is: " + cloudSiteId, isDebugEnabled)
+ execution.setVariable("DCVAMR_cloudSiteId", cloudSiteId)
+
def numOfAddOnModulesString = rollbackData.get("VNFANDMODULES", "numOfCreatedAddOnModules")
int numOfAddOnModules = 0
if (numOfAddOnModulesString != null) {
@@ -105,7 +139,7 @@ class DoCreateVnfAndModulesRollback extends AbstractServiceTaskProcessor { try {
- def rollbackData = execution.getVariable("RollbackData")
+ def rollbackData = execution.getVariable("rollbackData")
def vfModuleRollbackData = new RollbackData()
@@ -137,17 +171,193 @@ class DoCreateVnfAndModulesRollback extends AbstractServiceTaskProcessor { def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
execution.setVariable("prefix", Prefix)
logDebug(" ======== STARTED postProcessCreateVfModuleRollback ======== ", isDebugLogEnabled)
+ def rolledBack = false
- try {
+ try {
+ rolledBack = execution.getVariable("DCVM_rolledBack")
def numOfModulesToDelete = execution.getVariable("DCVAMR_numOfModulesToDelete")
execution.setVariable("DCVAMR_numOfModulesToDelete", numOfModulesToDelete - 1)
}catch(Exception e){
utils.log("ERROR", "Exception Occured Processing postProcessCreateVfModuleRollback. Exception is:\n" + e, isDebugLogEnabled)
exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during postProcessCreateVfModuleRollback Method:\n" + e.getMessage())
}
+ if (rolledBack == false) {
+ logDebug("Failure on DoCreateVfModuleRollback", isDebugLogEnabled)
+ utils.log("ERROR", "Unsuccessful rollback of DoCreateVfModule")
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during rollback of DoCreateVfModule")
+ }
logDebug("======== COMPLETED postProcessCreateVfModuleRollback ======== ", isDebugLogEnabled)
}
+ public void preProcessSDNCDeactivateRequest(Execution execution){
+ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+ execution.setVariable("prefix", Prefix)
+ logDebug(" ======== STARTED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
+ def vnfId = execution.getVariable("vnfId")
+ def serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+ try{
+ //Build SDNC Request
+
+ String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate")
+
+ deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest)
+ execution.setVariable(Prefix + "deactivateSDNCRequest", deactivateSDNCRequest)
+ logDebug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest, isDebugLogEnabled)
+ utils.logAudit("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest)
+
+ }catch(Exception e){
+ utils.log("ERROR", "Exception Occured Processing preProcessSDNCDeactivateRequest. Exception is:\n" + e, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage())
+ }
+ logDebug("======== COMPLETED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
+ }
+
+ public void preProcessSDNCUnassignRequest(Execution execution) {
+ def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+ execution.setVariable("prefix", Prefix)
+ logDebug(" ======== STARTED preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled)
+ try{
+ String vnfId = execution.getVariable("vnfId")
+ String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+ String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign")
+
+ execution.setVariable(Prefix + "unassignSDNCRequest", unassignSDNCRequest)
+ logDebug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest, isDebugLogEnabled)
+ utils.logAudit("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest)
+
+ }catch(Exception e){
+ log.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessSDNCUnassignRequest Method:\n" + e.getMessage())
+ }
+ logDebug("======== COMPLETED preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled)
+ }
+
+ public String buildSDNCRequest(Execution execution, String svcInstId, String action){
+
+ String uuid = execution.getVariable('testReqId') // for junits
+ if(uuid==null){
+ uuid = execution.getVariable("msoRequestId") + "-" + System.currentTimeMillis()
+ }
+ def callbackURL = execution.getVariable(Prefix + "sdncCallbackUrl")
+ def requestId = execution.getVariable("msoRequestId")
+ def tenantId = execution.getVariable(Prefix + "tenantId")
+ def source = execution.getVariable(Prefix + "source")
+ def vnfId = execution.getVariable(Prefix + "vnfId")
+ def serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
+ def cloudSiteId = execution.getVariable(Prefix + "cloudSiteId")
+
+ String sdncRequest =
+ """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>${svcInstId}</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>${callbackURL}</sdncadapter:CallbackUrl>
+ <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+ </sdncadapter:RequestHeader>
+ <sdncadapterworkflow:SDNCRequestData>
+ <request-information>
+ <request-id>${requestId}</request-id>
+ <request-action>DeleteVnfInstance</request-action>
+ <source>${source}</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id/>
+ <subscription-service-type/>
+ <service-instance-id>${serviceInstanceId}</service-instance-id>
+ <global-customer-id/>
+ </service-information>
+ <vnf-information>
+ <vnf-id>${vnfId}</vnf-id>
+ <vnf-type/>
+ </vnf-information>
+ <vnf-request-input>
+ <vnf-name/>
+ <tenant>${tenantId}</tenant>
+ <aic-cloud-region>${cloudSiteId}</aic-cloud-region>
+ </vnf-request-input>
+ </sdncadapterworkflow:SDNCRequestData>
+ </sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+ utils.logAudit("sdncRequest: " + sdncRequest)
+ return sdncRequest
+ }
+
+ public void validateSDNCResponse(Execution execution, String response, String method){
+ def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+ execution.setVariable("prefix",Prefix)
+ logDebug(" *** STARTED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+
+ WorkflowException workflowException = execution.getVariable("WorkflowException")
+ boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+ utils.logAudit("workflowException: " + workflowException)
+
+ SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+ sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+ utils.logAudit("SDNCResponse: " + response)
+
+ String sdncResponse = response
+ if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+ logDebug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + sdncResponse, isDebugLogEnabled)
+ }else{
+ logDebug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.", isDebugLogEnabled)
+ throw new BpmnError("MSOWorkflowException")
+ }
+ logDebug(" *** COMPLETED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+ }
+
+ public void setSuccessfulRollbackStatus (Execution execution){
+ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+ execution.setVariable("prefix", Prefix)
+ logDebug(" ======== STARTED setSuccessfulRollbackStatus ======== ", isDebugLogEnabled)
+
+ try{
+ // Set rolledBack to true, rollbackError to null
+ execution.setVariable("rolledBack", true)
+ execution.setVariable("rollbackError", null)
+
+ }catch(Exception e){
+ utils.log("ERROR", "Exception Occured Processing setSuccessfulRollbackStatus. Exception is:\n" + e, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setSuccessfulRollbackStatus Method:\n" + e.getMessage())
+ }
+ logDebug("======== COMPLETED setSuccessfulRollbackStatus ======== ", isDebugLogEnabled)
+ }
+
+ public void setFailedRollbackStatus (Execution execution){
+ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+ execution.setVariable("prefix", Prefix)
+ logDebug(" ======== STARTED setFailedRollbackStatus ======== ", isDebugLogEnabled)
+
+ try{
+ // Set rolledBack to false, rollbackError to actual value, rollbackData to null
+ execution.setVariable("rolledBack", false)
+ def rollbackError = execution.getVariable("rollbackError")
+ if (rollbackError == null) {
+ execution.setVariable("rollbackError", 'Caught exception in DoCreateVnfAndModulesRollback')
+ }
+ execution.setVariable("rollbackData", null)
+
+ }catch(Exception e){
+ utils.log("ERROR", "Exception Occured Processing setFailedRollbackStatus. Exception is:\n" + e, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setFailedRollbackStatus Method:\n" + e.getMessage())
+ }
+ logDebug("======== COMPLETED setFailedRollbackStatus ======== ", isDebugLogEnabled)
+ }
+
}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy index 2bf3e55301..72ee0d8a81 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy @@ -415,6 +415,8 @@ public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor { if (utils.nodeExists(networkRequest, "networkModelInfo")) { String networkModelInfo = utils.getNodeXml(networkRequest, "networkModelInfo", false).replace("tag0:","").replace(":tag0","") modelCustomizationUuid = utils.getNodeText1(networkModelInfo, "modelCustomizationUuid") + } else { + modelCustomizationUuid = utils.getNodeText1(networkRequest, "modelCustomizationId") } String deleteNetworkRequest = """ @@ -772,10 +774,10 @@ public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor { String serviceInstanceId = utils.getNodeText1(deleteNetworkInput, "service-instance-id") // 2. prepare rollback topology via SDNC Adapter SUBFLOW call - String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "activate", "ActivateNetworkInstance", cloudRegionId, networkId, null) + String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null) String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest) execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString) - utils.log("DEBUG", " Preparing request for RPC SDNC Topology 'activate-ActivateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyRollbackRpcRequestAsString, isDebugEnabled) + utils.log("DEBUG", " Preparing request for RPC SDNC Topology 'activate-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyRollbackRpcRequestAsString, isDebugEnabled) } catch (Exception ex) { @@ -892,7 +894,7 @@ public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor { try { - if (execution.getVariable("sdncVersion") == '1702') { + if (execution.getVariable("sdncVersion") != '1610') { prepareRpcSDNCDeactivateRollback(execution) prepareRpcSDNCUnassignRollback(execution) } else { diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy index 32197c1bc2..338b4cc7bc 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy @@ -27,7 +27,6 @@ import org.openecomp.mso.bpmn.core.json.JsonUtils import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils -import org.openecomp.mso.bpmn.common.scripts.VidUtils import org.openecomp.mso.bpmn.core.WorkflowException import org.openecomp.mso.rest.APIResponse; import org.openecomp.mso.rest.RESTClient @@ -60,6 +59,7 @@ import org.xml.sax.InputSource * @param - serviceInstanceName - O * @param - serviceModelInfo - O * @param - productFamilyId + * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM) * @param - sdncVersion * @param - failNotFound - TODO * @param - serviceInputParams - TODO @@ -74,7 +74,6 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { String Prefix="DDELSI_" ExceptionUtil exceptionUtil = new ExceptionUtil() JsonUtils jsonUtil = new JsonUtils() - VidUtils vidUtils = new VidUtils() public void preProcessRequest (Execution execution) { def isDebugEnabled = execution.getVariable("isDebugLogEnabled") @@ -117,6 +116,30 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) utils.log("DEBUG","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled) + StringBuilder sbParams = new StringBuilder() + Map<String, String> paramsMap = execution.getVariable("serviceInputParams") + if (paramsMap != null) + { + sbParams.append("<service-input-parameters>") + for (Map.Entry<String, String> entry : paramsMap.entrySet()) { + String paramsXml + String paramName = entry.getKey() + String paramValue = entry.getValue() + paramsXml = + """ <param> + <name>${paramName}</name> + <value>${paramValue}</value> + </param> + """ + sbParams.append(paramsXml) + } + sbParams.append("</service-input-parameters>") + } + String siParamsXml = sbParams.toString() + if (siParamsXml == null) + siParamsXml = "" + execution.setVariable("siParamsXml", siParamsXml) + } catch (BpmnError e) { throw e; } catch (Exception ex){ @@ -133,12 +156,6 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { String msg = "" try { - /* - String uuid = execution.getVariable('testReqId') // for junits - if(uuid==null){ - uuid = execution.getVariable("msoRequestId") + "-" + System.currentTimeMillis() - } - */ def serviceInstanceId = execution.getVariable("serviceInstanceId") def serviceInstanceName = execution.getVariable("serviceInstanceName") def callbackURL = execution.getVariable("sdncCallbackUrl") @@ -148,25 +165,25 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { def globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId String serviceModelInfo = execution.getVariable("serviceModelInfo") - def modelInvariantId = "" + def modelInvariantUuid = "" def modelVersion = "" - def modelUUId = "" + def modelUuid = "" def modelName = "" if (!isBlank(serviceModelInfo)) { - modelInvariantId = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantId") + modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid") modelVersion = jsonUtil.getJsonValue(serviceModelInfo, "modelVersion") - modelUUId = jsonUtil.getJsonValue(serviceModelInfo, "modelVersionId") + modelUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelUuid") modelName = jsonUtil.getJsonValue(serviceModelInfo, "modelName") - - if (modelInvariantId == null) { - modelInvariantId = "" + + if (modelInvariantUuid == null) { + modelInvariantUuid = "" } if (modelVersion == null) { modelVersion = "" } - if (modelUUId == null) { - modelUUId = "" + if (modelUuid == null) { + modelUuid = "" } if (modelName == null) { modelName = "" @@ -178,11 +195,18 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { if (serviceId == null) { serviceId = "" } - + + def siParamsXml = execution.getVariable("siParamsXml") + def serviceType = execution.getVariable("serviceType") + if (serviceType == null) + { + serviceType = "" + } + def sdncRequestId = UUID.randomUUID().toString() String sdncDelete = - """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1" + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1" xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> <sdncadapter:RequestHeader> @@ -191,6 +215,7 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { <sdncadapter:SvcAction>delete</sdncadapter:SvcAction> <sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation> <sdncadapter:CallbackUrl>${callbackURL}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>${serviceType}</sdncadapter:MsoAction> </sdncadapter:RequestHeader> <sdncadapterworkflow:SDNCRequestData> <request-information> @@ -205,8 +230,8 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { <service-id>${serviceId}</service-id> <subscription-service-type>${subscriptionServiceType}</subscription-service-type> <ecomp-model-information> - <model-invariant-uuid>${modelInvariantId}</model-invariant-uuid> - <model-uuid>${modelUUId}</model-uuid> + <model-invariant-uuid>${modelInvariantUuid}</model-invariant-uuid> + <model-uuid>${modelUuid}</model-uuid> <model-version>${modelVersion}</model-version> <model-name>${modelName}</model-name> </ecomp-model-information> @@ -216,6 +241,7 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { </service-information> <service-request-input> <service-instance-name>${serviceInstanceName}</service-instance-name> + ${siParamsXml} </service-request-input> </sdncadapterworkflow:SDNCRequestData> </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" @@ -249,7 +275,7 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") utils.log("DEBUG", "SDNCResponse: " + response, isDebugEnabled) utils.log("DEBUG", "workflowException: " + workflowException, isDebugEnabled) - + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) @@ -280,6 +306,7 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable("serviceInstanceId") boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator") + String serviceType = "" if(foundInAAI == true){ utils.log("DEBUG","Found Service-instance in AAI", isDebugEnabled) @@ -304,18 +331,18 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { } //Extract Service Type if not provided on request - String serviceType = execution.getVariable("subscriptionServiceType") - if(isBlank(serviceType)){ + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + if(isBlank(subscriptionServiceType)){ int serviceStart = siRelatedLink.indexOf("service-subscription/") int serviceEnd = siRelatedLink.indexOf("/service-instances/") String serviceTypeEncoded = siRelatedLink.substring(serviceStart + 21, serviceEnd) - serviceType = UriUtils.decode(serviceTypeEncoded, "UTF-8") - execution.setVariable("subscriptionServiceType", serviceType) + subscriptionServiceType = UriUtils.decode(serviceTypeEncoded, "UTF-8") + execution.setVariable("subscriptionServiceType", subscriptionServiceType) } - if (isBlank(globalSubscriberId) || isBlank(serviceType)) + if (isBlank(globalSubscriberId) || isBlank(subscriptionServiceType)) { - msg = "Could not retrive global-customer-id & service-type from AAI to delete id:" + serviceInstanceId + msg = "Could not retrive global-customer-id & subscription-service-type from AAI to delete id:" + serviceInstanceId utils.log("DEBUG", msg, isDebugEnabled) exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) } @@ -332,6 +359,11 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { else { utils.log("DEBUG", "SI Data" + siData, isDebugEnabled) + serviceType = utils.getNodeText1(siData,"service-type") + execution.setVariable("serviceType", serviceType) + execution.setVariable("serviceRole", utils.getNodeText1(siData,"service-role")) + String orchestrationStatus = utils.getNodeText1(siData,"orchestration-status") + //Confirm there are no related service instances (vnf/network or volume) if (utils.nodeExists(siData, "relationship-list")) { utils.log("DEBUG", "SI Data relationship-list exists:", isDebugEnabled) @@ -346,8 +378,8 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { if (node.getNodeType() == Node.ELEMENT_NODE) { Element eElement = (Element) node def e = eElement.getElementsByTagName("related-to").item(0).getTextContent() - if(e.equals("generic-vnf") || e.equals("l3-network")){ - utils.log("DEBUG", "ServiceInstance still has relationship(s) to generic-vnfs or l3-networks", isDebugEnabled) + if(e.equals("generic-vnf") || e.equals("l3-network") || e.equals("allotted-resource") ){ + utils.log("DEBUG", "ServiceInstance still has relationship(s) to generic-vnfs, l3-networks or allotted-resources", isDebugEnabled) execution.setVariable("siInUse", true) //there are relationship dependencies to this Service Instance msg = " Stopped deleting Service Instance, it has dependencies. Service instance id: " + serviceInstanceId @@ -359,6 +391,21 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { } } } + + if ("TRANSPORT".equalsIgnoreCase(serviceType)) + { + if ("PendingDelete".equals(orchestrationStatus)) + { + execution.setVariable("skipDeactivate", true) + } + else + { + msg = "ServiceInstance of type TRANSPORT must in PendingDelete status to allow Delete. Orchestration-status:" + orchestrationStatus + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + } } }else{ boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator") @@ -376,6 +423,7 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) } } + utils.log("DEBUG","Service-instance NOT found in AAI. Silent Success", isDebugEnabled) } } catch (BpmnError e) { @@ -387,7 +435,7 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { } utils.log("DEBUG"," *** Exit postProcessAAIGET *** ", isDebugEnabled) } - + public void postProcessAAIDEL(Execution execution) { def isDebugEnabled=execution.getVariable("isDebugLogEnabled") utils.log("DEBUG"," ***** postProcessAAIDEL ***** ", isDebugEnabled) diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy index cd9c798c09..afb09839b4 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy @@ -36,6 +36,8 @@ import org.springframework.web.util.UriUtils import org.w3c.dom.Document import org.w3c.dom.Element import org.xml.sax.InputSource +import org.w3c.dom.Node +import org.w3c.dom.NodeList; /* Subflow for Delete VF Module. When no DoDeleteVfModuleRequest is specified on input, @@ -51,6 +53,7 @@ import org.xml.sax.InputSource * @param - vfModuleModelInfo * @param - cloudConfiguration* * @param - sdncVersion ("1610") +* @param - retainResources * * Outputs: * @param - WorkflowException @@ -114,7 +117,12 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{ //vfModuleModelName def vfModuleModelName = jsonUtil.getJsonValue(vfModuleModelInfo, "modelName") execution.setVariable("vfModuleModelName", vfModuleModelName) - + // retainResources + def retainResources = execution.getVariable("retainResources") + if (retainResources == null) { + retainResources = false + } + execution.setVariable("retainResources", retainResources) } else { @@ -179,6 +187,11 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{ public void prepSDNCAdapterRequest(Execution execution, String action) { def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("requestId") + "-" + System.currentTimeMillis() + } + def srvInstId = execution.getVariable("srvInstId") def callbackUrl = execution.getVariable("URN_mso_workflow_sdncadapter_callback") String requestId = execution.getVariable("requestId") @@ -198,11 +211,16 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{ } String vfModuleModelName = execution.getVariable("vfModuleModelName") String cloudSiteId = execution.getVariable("cloudSiteId") + boolean retainResources = execution.getVariable("retainResources") + String requestSubActionString = "" + if (retainResources) { + requestSubActionString = "<request-sub-action>RetainResource</request-sub-action>" + } String request = """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1" xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> <sdncadapter:RequestHeader> - <sdncadapter:RequestId>${requestId}</sdncadapter:RequestId> + <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId> <sdncadapter:SvcInstanceId>${vfModuleId}</sdncadapter:SvcInstanceId> <sdncadapter:SvcAction>${action}</sdncadapter:SvcAction> <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> @@ -212,6 +230,7 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{ <request-information> <request-id>${requestId}</request-id> <request-action>DisconnectVNFRequest</request-action> + ${requestSubActionString} <source>${source}</source> <notification-url/> <order-number/> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy new file mode 100644 index 0000000000..41663434db --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy @@ -0,0 +1,613 @@ +package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import javax.xml.parsers.DocumentBuilder
+import javax.xml.parsers.DocumentBuilderFactory
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
+import org.openecomp.mso.bpmn.common.scripts.VfModule
+import org.openecomp.mso.bpmn.common.scripts.VfModuleBase
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.rest.APIResponse
+import org.openecomp.mso.rest.RESTClient
+import org.openecomp.mso.rest.RESTConfig
+import org.springframework.web.util.UriUtils
+import org.w3c.dom.Document
+import org.w3c.dom.Element
+import org.xml.sax.InputSource
+
+public class DoDeleteVfModuleFromVnf extends VfModuleBase {
+
+ def Prefix="DDVFMV_"
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+ JsonUtils jsonUtil = new JsonUtils()
+
+ public void initProcessVariables(Execution execution) {
+ execution.setVariable("prefix",Prefix)
+ execution.setVariable("DDVFMV_contrailNetworkPolicyFqdnList", null)
+ }
+
+ // parse the incoming request
+ public void preProcessRequest(Execution execution) {
+ def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+ initProcessVariables(execution)
+
+ try {
+
+ // Building Block-type request
+
+ // Set mso-request-id to request-id for VNF Adapter interface
+ String requestId = execution.getVariable("msoRequestId")
+ execution.setVariable("mso-request-id", requestId)
+ execution.setVariable("requestId", requestId)
+ utils.log("DEBUG", "msoRequestId: " + requestId, isDebugEnabled)
+ String tenantId = execution.getVariable("tenantId")
+ utils.log("DEBUG", "tenantId: " + tenantId, isDebugEnabled)
+ String cloudSiteId = execution.getVariable("lcpCloudRegionId")
+ execution.setVariable("cloudSiteId", cloudSiteId)
+ utils.log("DEBUG", "cloudSiteId: " + cloudSiteId, isDebugEnabled)
+ // Source is HARDCODED
+ String source = "VID"
+ execution.setVariable("source", source)
+ // isVidRequest is hardcoded to "true"
+ execution.setVariable("isVidRequest", "true")
+ // SrvInstId is hardcoded to empty
+ execution.setVariable("srvInstId", "")
+ // ServiceId is hardcoded to empty
+ execution.setVariable("serviceId", "")
+ String serviceInstanceId = execution.getVariable("serviceInstanceId")
+ utils.log("DEBUG", "serviceInstanceId: " + serviceInstanceId, isDebugEnabled)
+ String vnfId = execution.getVariable("vnfId")
+ utils.log("DEBUG", "vnfId: " + vnfId, isDebugEnabled)
+ String vfModuleId = execution.getVariable("vfModuleId")
+ utils.log("DEBUG", "vfModuleId: " + vfModuleId, isDebugEnabled)
+ if (serviceInstanceId == null || serviceInstanceId.isEmpty()) {
+ execution.setVariable(Prefix + "serviceInstanceIdToSdnc", vfModuleId)
+ }
+ else {
+ execution.setVariable(Prefix + "serviceInstanceIdToSdnc", serviceInstanceId)
+ }
+
+ String sdncVersion = execution.getVariable("sdncVersion")
+ if (sdncVersion == null) {
+ sdncVersion = "1707"
+ }
+ execution.setVariable(Prefix + "sdncVersion", sdncVersion)
+ utils.log("DEBUG", "Incoming Sdnc Version is: " + sdncVersion, isDebugEnabled)
+
+ String sdncCallbackUrl = (String) execution.getVariable('URN_mso_workflow_sdncadapter_callback')
+ if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) {
+ def msg = 'Required variable \'URN_mso_workflow_sdncadapter_callback\' is missing'
+ logError(msg)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
+ }
+ execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+ utils.logAudit("SDNC Callback URL: " + sdncCallbackUrl)
+ utils.log("DEBUG:", "SDNC Callback URL is: " + sdncCallbackUrl, isDebugEnabled)
+
+
+
+ }catch(BpmnError b){
+ throw b
+ }catch(Exception e){
+ utils.log("DEBUG", "Exception is: " + e.getMessage(), isDebugEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error encountered in PreProcess method!")
+ }
+ }
+
+ public void queryAAIForVfModule(Execution execution) {
+ def method = getClass().getSimpleName() + '.queryAAIForVfModule(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ def vnfId = execution.getVariable('vnfId')
+
+ AaiUtil aaiUriUtil = new AaiUtil(this)
+ def aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution)
+ logDebug('AAI URI is: ' + aai_uri, isDebugLogEnabled)
+
+ String endPoint = execution.getVariable("URN_aai_endpoint") + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + "?depth=1"
+
+ utils.logAudit("DoDeleteVfModuleFromVnf: AAI endPoint : " + endPoint)
+
+ try {
+ RESTConfig config = new RESTConfig(endPoint);
+ def responseData = ''
+ def aaiRequestId = UUID.randomUUID().toString()
+ RESTClient client = new RESTClient(config).
+ addHeader('X-TransactionId', aaiRequestId).
+ addHeader('X-FromAppId', 'MSO').
+ addHeader('Content-Type', 'application/xml').
+ addHeader('Accept','application/xml');
+ logDebug('sending GET to AAI endpoint \'' + endPoint + '\'', isDebugLogEnabled)
+ APIResponse response = client.httpGet()
+ utils.logAudit("DoDeleteVfModuleFromVnf: - invoking httpGet to AAI")
+
+ responseData = response.getResponseBodyAsString()
+ execution.setVariable('DDVMFV_getVnfResponseCode', response.getStatusCode())
+ execution.setVariable('DDVMFV_getVnfResponse', responseData)
+
+ utils.logAudit("DoDeleteVfModuleFromVnf: AAI Response : " + responseData)
+ utils.logAudit("DoDeleteVfModuleFromVnf: AAI ResponseCode : " + response.getStatusCode())
+
+ logDebug('Response code:' + response.getStatusCode(), isDebugLogEnabled)
+ logDebug('Response:' + System.lineSeparator() + responseData, isDebugLogEnabled)
+
+ } catch (Exception ex) {
+ ex.printStackTrace()
+ logDebug('Exception occurred while executing AAI GET:' + ex.getMessage(), isDebugLogEnabled)
+ execution.setVariable('DDVMFV_getVnfResponseCode', 500)
+ execution.setVariable('DDVFMV_getVnfResponse', 'AAI GET Failed:' + ex.getMessage())
+ }
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIForVfModule(): ' + e.getMessage())
+ }
+ }
+
+ /**
+ * Validate the VF Module. That is, confirm that a VF Module with the input VF Module ID
+ * exists in the retrieved Generic VNF. Then, check to make sure that if that VF Module
+ * is the base VF Module and it's not the only VF Module for this Generic VNF, that we're not
+ * attempting to delete it.
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void validateVfModule(Execution execution) {
+ def method = getClass().getSimpleName() + '.validateVfModule(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ def genericVnf = execution.getVariable('DDVMFV_getVnfResponse')
+ def vnfId = execution.getVariable('_vnfId')
+ def vfModuleId = execution.getVariable('vfModuleId')
+ def VfModule vfModule = findVfModule(genericVnf, vfModuleId)
+ if (vfModule == null) {
+ def String msg = 'VF Module \'' + vfModuleId + '\' does not exist in Generic VNF \'' + vnfId + '\''
+ logDebug(msg, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, msg)
+ } else {
+
+ if (isDebugLogEnabled) {
+ logDebug('VF Module \'' + vfModuleId + '\': isBaseVfModule=' + vfModule.isBaseVfModule() +
+ ', isOnlyVfModule=' + vfModule.isOnlyVfModule(),
+ isDebugLogEnabled)
+ }
+ if (vfModule.isBaseVfModule() && !vfModule.isOnlyVfModule()) {
+ def String msg = 'Cannot delete VF Module \'' + vfModuleId +
+ '\'since it is the base VF Module and it\'s not the only VF Module in Generic VNF \'' + vnfId + '\''
+ logDebug("Received a BAD Response from VNF Adapter for CREATE_VF_MODULE Call.", isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error")
+ }
+
+ def heatStackId = vfModule.getElementText('heat-stack-id')
+ execution.setVariable('DDVMFV_heatStackId', heatStackId)
+ logDebug('VF Module heatStackId retrieved from AAI: ' + heatStackId, isDebugLogEnabled)
+ }
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in validateVfModule(): ' + e.getMessage())
+ }
+ }
+
+
+ public void preProcessSDNCDeactivateRequest(Execution execution){
+ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+ execution.setVariable("prefix", Prefix)
+ logDebug(" ======== STARTED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
+
+ def serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+ try{
+ //Build SDNC Request
+
+ String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate")
+
+ deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest)
+ execution.setVariable("DDVMFV_deactivateSDNCRequest", deactivateSDNCRequest)
+ logDebug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest, isDebugLogEnabled)
+ utils.logAudit("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest)
+
+ }catch(Exception e){
+ utils.log("ERROR", "Exception Occured Processing preProcessSDNCDeactivateRequest. Exception is:\n" + e, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage())
+ }
+ logDebug("======== COMPLETED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
+ }
+
+ public void preProcessSDNCUnassignRequest(Execution execution) {
+ def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+ execution.setVariable("prefix", Prefix)
+ logDebug(" ======== STARTED preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled)
+ try{
+ String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+ String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign")
+
+ execution.setVariable("DDVMFV_unassignSDNCRequest", unassignSDNCRequest)
+ logDebug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest, isDebugLogEnabled)
+ utils.logAudit("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest)
+
+ }catch(Exception e){
+ log.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessSDNCUnassignRequest Method:\n" + e.getMessage())
+ }
+ logDebug("======== COMPLETED preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled)
+ }
+
+ public String buildSDNCRequest(Execution execution, String svcInstId, String action){
+
+ String uuid = execution.getVariable('testReqId') // for junits
+ if(uuid==null){
+ uuid = execution.getVariable("msoRequestId") + "-" + System.currentTimeMillis()
+ }
+ def callbackURL = execution.getVariable("sdncCallbackUrl")
+ def requestId = execution.getVariable("msoRequestId")
+ def serviceId = execution.getVariable("serviceId")
+ def serviceInstanceId = execution.getVariable("serviceInstanceId")
+ def vfModuleId = execution.getVariable("vfModuleId")
+ def source = execution.getVariable("source")
+ def vnfId = execution.getVariable("vnfId")
+
+ def sdncVersion = execution.getVariable(Prefix + "sdncVersion")
+
+ String sdncRequest =
+ """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>${svcInstId}</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>vf-module-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>${callbackURL}</sdncadapter:CallbackUrl>
+ <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+ </sdncadapter:RequestHeader>
+ <sdncadapterworkflow:SDNCRequestData>
+ <request-information>
+ <request-id>${requestId}</request-id>
+ <request-action>DeleteVfModuleInstance</request-action>
+ <source>${source}</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id/>
+ <subscription-service-type/>
+ <service-instance-id>${serviceInstanceId}</service-instance-id>
+ <global-customer-id/>
+ </service-information>
+ <vnf-information>
+ <vnf-id>${vnfId}</vnf-id>
+ <vnf-type/>
+ </vnf-information>
+ <vf-module-information>
+ <vf-module-id>${vfModuleId}</vf-module-id>
+ </vf-module-information>
+ <vf-module-request-input/>
+ </sdncadapterworkflow:SDNCRequestData>
+ </sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+ utils.logAudit("sdncRequest: " + sdncRequest)
+ return sdncRequest
+ }
+
+ public void validateSDNCResponse(Execution execution, String response, String method){
+ def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+ execution.setVariable("prefix",Prefix)
+ logDebug(" *** STARTED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+
+ WorkflowException workflowException = execution.getVariable("WorkflowException")
+ boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+ utils.logAudit("workflowException: " + workflowException)
+
+ SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+ sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+ utils.logAudit("SDNCResponse: " + response)
+
+ String sdncResponse = response
+ if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+ logDebug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + sdncResponse, isDebugLogEnabled)
+ }else{
+ logDebug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.", isDebugLogEnabled)
+ throw new BpmnError("MSOWorkflowException")
+ }
+ logDebug(" *** COMPLETED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+ }
+
+
+ // parse the incoming DELETE_VF_MODULE request
+ // and formulate the outgoing VnfAdapterDeleteV1 request
+ public void prepVNFAdapterRequest(Execution execution) {
+ def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+ def requestId = UUID.randomUUID().toString()
+ def origRequestId = execution.getVariable('requestId')
+ def srvInstId = execution.getVariable("serviceInstanceId")
+ def aicCloudRegion = execution.getVariable("cloudSiteId")
+ def vnfId = execution.getVariable("vnfId")
+ def vfModuleId = execution.getVariable("vfModuleId")
+ def vfModuleStackId = execution.getVariable('DDVMFV_heatStackId')
+ def tenantId = execution.getVariable("tenantId")
+ def messageId = execution.getVariable('requestId') + '-' +
+ System.currentTimeMillis()
+ def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+ def useQualifiedHostName = execution.getVariable("URN_mso_use_qualified_host")
+ if ('true'.equals(useQualifiedHostName)) {
+ notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+ }
+
+ String request = """
+ <deleteVfModuleRequest>
+ <cloudSiteId>${aicCloudRegion}</cloudSiteId>
+ <tenantId>${tenantId}</tenantId>
+ <vnfId>${vnfId}</vnfId>
+ <vfModuleId>${vfModuleId}</vfModuleId>
+ <vfModuleStackId>${vfModuleStackId}</vfModuleStackId>
+ <skipAAI>true</skipAAI>
+ <msoRequest>
+ <requestId>${origRequestId}</requestId>
+ <serviceInstanceId>${srvInstId}</serviceInstanceId>
+ </msoRequest>
+ <messageId>${messageId}</messageId>
+ <notificationUrl>${notificationUrl}</notificationUrl>
+ </deleteVfModuleRequest>
+ """ as String
+
+ utils.log("DEBUG", "vnfAdapterRestV1Request: " + request, isDebugEnabled)
+ utils.logAudit("deleteVfModuleRequest: " + request)
+ execution.setVariable("vnfAdapterRestV1Request", request)
+ }
+
+
+ // generates a WorkflowException if
+ // -
+ public void handleDoDeleteVfModuleFailure(Execution execution) {
+ def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+ utils.log("ERROR", "AAI error occurred deleting the Generic Vnf: "
+ + execution.getVariable("DDVFMV_deleteGenericVnfResponse"), isDebugEnabled)
+ String processKey = getProcessKey(execution);
+ WorkflowException exception = new WorkflowException(processKey, 5000,
+ execution.getVariable("DDVFMV_deleteGenericVnfResponse"))
+ execution.setVariable("WorkflowException", exception)
+ }
+
+ public void postProcessVNFAdapterRequest(Execution execution) {
+ def method = getClass().getSimpleName() + '.postProcessVNFAdapterRequest(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+ execution.setVariable("prefix",Prefix)
+ try{
+ logDebug(" *** STARTED postProcessVNFAdapterRequest Process*** ", isDebugLogEnabled)
+
+ String vnfResponse = execution.getVariable("DDVMFV_doDeleteVfModuleResponse")
+ logDebug("VNF Adapter Response is: " + vnfResponse, isDebugLogEnabled)
+ utils.logAudit("deleteVnfAResponse is: \n" + vnfResponse)
+
+ if(vnfResponse != null){
+
+ if(vnfResponse.contains("deleteVfModuleResponse")){
+ logDebug("Received a Good Response from VNF Adapter for DELETE_VF_MODULE Call.", isDebugLogEnabled)
+ execution.setVariable("DDVFMV_vnfVfModuleDeleteCompleted", true)
+
+ // Parse vnfOutputs for contrail network polcy FQDNs
+ if (vnfResponse.contains("vfModuleOutputs")) {
+ def vfModuleOutputsXml = utils.getNodeXml(vnfResponse, "vfModuleOutputs")
+ InputSource source = new InputSource(new StringReader(vfModuleOutputsXml));
+ DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+ docFactory.setNamespaceAware(true)
+ DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
+ Document outputsXml = docBuilder.parse(source)
+
+ NodeList entries = outputsXml.getElementsByTagNameNS("*", "entry")
+ List contrailNetworkPolicyFqdnList = []
+ for (int i = 0; i< entries.getLength(); i++) {
+ Node node = entries.item(i)
+ if (node.getNodeType() == Node.ELEMENT_NODE) {
+ Element element = (Element) node
+ String key = element.getElementsByTagNameNS("*", "key").item(0).getTextContent()
+ if (key.endsWith("contrail_network_policy_fqdn")) {
+ String contrailNetworkPolicyFqdn = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
+ logDebug("Obtained contrailNetworkPolicyFqdn: " + contrailNetworkPolicyFqdn, isDebugLogEnabled)
+ contrailNetworkPolicyFqdnList.add(contrailNetworkPolicyFqdn)
+ }
+ else if (key.equals("oam_management_v4_address")) {
+ String oamManagementV4Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
+ logDebug("Obtained oamManagementV4Address: " + oamManagementV4Address, isDebugLogEnabled)
+ execution.setVariable(Prefix + "oamManagementV4Address", oamManagementV4Address)
+ }
+ else if (key.equals("oam_management_v6_address")) {
+ String oamManagementV6Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
+ logDebug("Obtained oamManagementV6Address: " + oamManagementV6Address, isDebugLogEnabled)
+ execution.setVariable(Prefix + "oamManagementV6Address", oamManagementV6Address)
+ }
+
+ }
+ }
+ if (!contrailNetworkPolicyFqdnList.isEmpty()) {
+ logDebug("Setting the fqdn list", isDebugLogEnabled)
+ execution.setVariable("DDVFMV_contrailNetworkPolicyFqdnList", contrailNetworkPolicyFqdnList)
+ }
+ }
+ }else{
+ logDebug("Received a BAD Response from VNF Adapter for DELETE_VF_MODULE Call.", isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error")
+ }
+ }else{
+ logDebug("Response from VNF Adapter is Null for DELETE_VF_MODULE Call.", isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Empty response from VNF Adapter")
+ }
+
+ }catch(BpmnError b){
+ throw b
+ }catch(Exception e){
+ logDebug("Internal Error Occured in PostProcess Method", isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Internal Error Occured in PostProcess Method")
+ }
+ logDebug(" *** COMPLETED postProcessVnfAdapterResponse Process*** ", isDebugLogEnabled)
+ }
+
+ public void deleteNetworkPoliciesFromAAI(Execution execution) {
+ def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+ execution.setVariable("prefix", Prefix)
+ logDebug(" ======== STARTED deleteNetworkPoliciesFromAAI ======== ", isDebugLogEnabled)
+
+ try {
+ // get variables
+ List fqdnList = execution.getVariable("DDVFMV_contrailNetworkPolicyFqdnList")
+ if (fqdnList == null) {
+ logDebug("No network policies to delete", isDebugLogEnabled)
+ return
+ }
+ int fqdnCount = fqdnList.size()
+
+ execution.setVariable("DDVFMV_networkPolicyFqdnCount", fqdnCount)
+ logDebug("DDVFMV_networkPolicyFqdnCount - " + fqdnCount, isDebugLogEnabled)
+
+ String aai_endpoint = execution.getVariable("URN_aai_endpoint")
+ AaiUtil aaiUriUtil = new AaiUtil(this)
+ String aai_uri = aaiUriUtil.getNetworkPolicyUri(execution)
+
+ if (fqdnCount > 0) {
+ // AII loop call over contrail network policy fqdn list
+ for (i in 0..fqdnCount-1) {
+
+ int counting = i+1
+ String fqdn = fqdnList[i]
+
+ // Query AAI for this network policy FQDN
+
+ String queryNetworkPolicyByFqdnAAIRequest = "${aai_endpoint}${aai_uri}?network-policy-fqdn=" + UriUtils.encode(fqdn, "UTF-8")
+ utils.logAudit("AAI request endpoint: " + queryNetworkPolicyByFqdnAAIRequest)
+ logDebug("AAI request endpoint: " + queryNetworkPolicyByFqdnAAIRequest, isDebugLogEnabled)
+
+ APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkPolicyByFqdnAAIRequest)
+ int returnCode = response.getStatusCode()
+ execution.setVariable("DCVFM_aaiQueryNetworkPolicyByFqdnReturnCode", returnCode)
+ logDebug(" ***** AAI query network policy Response Code, NetworkPolicy #" + counting + " : " + returnCode, isDebugLogEnabled)
+
+ String aaiResponseAsString = response.getResponseBodyAsString()
+
+ if (isOneOf(returnCode, 200, 201)) {
+ logDebug("The return code is: " + returnCode, isDebugLogEnabled)
+ // This network policy FQDN exists in AAI - need to delete it now
+ utils.logAudit(aaiResponseAsString)
+ execution.setVariable("DDVFMV_queryNetworkPolicyByFqdnAAIResponse", aaiResponseAsString)
+ logDebug("QueryAAINetworkPolicyByFQDN Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsString, isDebugLogEnabled)
+ // Retrieve the network policy id for this FQDN
+ def networkPolicyId = utils.getNodeText1(aaiResponseAsString, "network-policy-id")
+ logDebug("Deleting network-policy with network-policy-id " + networkPolicyId, isDebugLogEnabled)
+
+ // Retrieve the resource version for this network policy
+ def resourceVersion = utils.getNodeText1(aaiResponseAsString, "resource-version")
+ logDebug("Deleting network-policy with resource-version " + resourceVersion, isDebugLogEnabled)
+
+ String delNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + UriUtils.encode(networkPolicyId, "UTF-8") +
+ "?resource-version=" + UriUtils.encode(resourceVersion, "UTF-8")
+ utils.logAudit("AAI request endpoint: " + delNetworkPolicyAAIRequest)
+ logDebug("AAI request endpoint: " + delNetworkPolicyAAIRequest, isDebugLogEnabled)
+
+ logDebug("invoking DELETE call to AAI", isDebugLogEnabled)
+ utils.logAudit("Sending DELETE call to AAI with Endpoint /n" + delNetworkPolicyAAIRequest)
+ APIResponse responseDel = aaiUriUtil.executeAAIDeleteCall(execution, delNetworkPolicyAAIRequest)
+ int returnCodeDel = responseDel.getStatusCode()
+ execution.setVariable("DDVFMV_aaiDeleteNetworkPolicyReturnCode", returnCodeDel)
+ logDebug(" ***** AAI delete network policy Response Code, NetworkPolicy #" + counting + " : " + returnCodeDel, isDebugLogEnabled)
+
+ if (isOneOf(returnCodeDel, 200, 201, 204)) {
+ logDebug("The return code from deleting network policy is: " + returnCodeDel, isDebugLogEnabled)
+ // This network policy was deleted from AAI successfully
+ logDebug(" DelAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : ", isDebugLogEnabled)
+
+ } else {
+ // aai all errors
+ String delErrorMessage = "Unable to delete network-policy to AAI deleteNetworkPoliciesFromAAI - " + returnCodeDel
+ logDebug(delErrorMessage, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, delErrorMessage)
+ }
+ } else if (returnCode == 404) {
+ // This network policy FQDN is not in AAI. No need to delete.
+ logDebug("The return code is: " + returnCode, isDebugLogEnabled)
+ logDebug("This network policy FQDN is not in AAI: " + fqdn, isDebugLogEnabled)
+ utils.logAudit("Network policy FQDN is not in AAI")
+ } else {
+ if (aaiResponseAsString.contains("RESTFault")) {
+ WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+ execution.setVariable("WorkflowException", exceptionObject)
+ throw new BpmnError("MSOWorkflowException")
+
+ } else {
+ // aai all errors
+ String dataErrorMessage = "Unexpected Response from deleteNetworkPoliciesFromAAI - " + returnCode
+ logDebug(dataErrorMessage, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+ }
+ }
+
+
+
+ } // end loop
+
+
+ } else {
+ logDebug("No contrail network policies to query/create", isDebugLogEnabled)
+
+ }
+
+ } catch (BpmnError e) {
+ throw e;
+
+ } catch (Exception ex) {
+ String exceptionMessage = "Bpmn error encountered in DoDeletVfModule flow. deleteNetworkPoliciesFromAAI() - " + ex.getMessage()
+ logDebug(exceptionMessage, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+ }
+
+ }
+
+ // and formulate the outgoing DeleteAAIVfModuleRequest request
+ public void prepDeleteAAIVfModule(Execution execution) {
+ def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+ def vnfId = execution.getVariable("vnfId")
+ def vfModuleId = execution.getVariable("vfModuleId")
+ // formulate the request for UpdateAAIVfModule
+ String request = """<DeleteAAIVfModuleRequest>
+ <vnf-id>${vnfId}</vnf-id>
+ <vf-module-id>${vfModuleId}</vf-module-id>
+ </DeleteAAIVfModuleRequest>""" as String
+ utils.log("DEBUG", "DeleteAAIVfModuleRequest :" + request, isDebugEnabled)
+ utils.logAudit("DeleteAAIVfModuleRequest: " + request)
+ execution.setVariable("DeleteAAIVfModuleRequest", request)
+ }
+}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy new file mode 100644 index 0000000000..c2952ad0f4 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy @@ -0,0 +1,358 @@ +/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.bpmn.infrastructure.scripts
+
+import groovy.json.JsonSlurper
+import groovy.util.XmlParser;
+
+import java.util.concurrent.ExecutionException;
+
+import org.springframework.web.util.UriUtils
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.rest.APIResponse
+import org.apache.commons.lang3.*
+
+class DoDeleteVfModuleVolumeV2 extends AbstractServiceTaskProcessor {
+
+ String prefix="DDVMV_"
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+ XmlParser xmlParser = new XmlParser()
+ JsonUtils jsonUtil = new JsonUtils()
+
+ @Override
+ public void preProcessRequest(Execution execution) {
+ def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+ preProcessRequest(execution, isDebugEnabled)
+ }
+
+ /**
+ * Set default variable values
+ * @param execution
+ * @param isDebugLogEnabled
+ */
+ public void preProcessRequest (Execution execution, isDebugEnabled) {
+
+ //Input:
+ // msoRequestId
+ // isDebugLogEnabled
+ // failIfNotFound (Optional)
+ // serviceInstanceId (Optional)
+ // vnfId (Optional)
+ // volumeGroupId
+ // vfModuleModelInfo (Optional)
+ // lcpCloudRegionId (Optional) @TODO: this is actually required
+ // tenantId (Optional) @TODO: this is actually required
+ // cloudConfiguration @TODO: temporary solution? this contains lcpCloudregion and tenantId
+ //
+ //Output:
+ // workflowException @TODO: actual variable name is WorkflowException
+ // rolledBack
+ // wasDeleted
+
+ execution.setVariable('prefix', prefix)
+ execution.setVariable('wasDeleted', 'false')
+
+ def tenantId = execution.getVariable("tenantId")
+ def cloudSiteId = execution.getVariable("lcpCloudRegionId")
+
+ // if tenantId or lcpCloudregionId is not passed, get it from cloudRegionConfiguration variable
+ if(!tenantId || !cloudSiteId) {
+ def cloudConfiguration = execution.getVariable("cloudConfiguration")
+ utils.log("DEBUG", "Using cloudConfiguration variable to get tenantId and lcpCloudRegionId - " + cloudConfiguration, isDebugEnabled)
+ tenantId = jsonUtil.getJsonValue(cloudConfiguration, "tenantId")
+ execution.setVariable("tenantId", tenantId)
+ cloudSiteId = jsonUtil.getJsonValue(cloudConfiguration, "lcpCloudRegionId")
+ execution.setVariable("lcpCloudRegionId", cloudSiteId)
+ }
+ }
+
+
+ /**
+ * Set out 'wasDeleted' variable to 'true'
+ * @param execution
+ * @param isDebugLogEnabled
+ */
+ public void postProcess(Execution execution, isDebugLogEnabled) {
+ execution.setVariable('wasDeleted', 'true')
+ }
+
+
+ /**
+ * Query and set cloud region to use for AAI calls
+ * Output variables: prefix+'aicCloudRegion', prefix+'cloudRegion'
+ * @param execution
+ * @param isDebugEnabled
+ */
+ public void callRESTQueryAAICloudRegion(Execution execution, isDebugEnabled) {
+
+ String cloudRegion = execution.getVariable('lcpCloudRegionId')
+ String aai_endpoint = execution.getVariable("URN_aai_endpoint")
+ AaiUtil aaiUtil = new AaiUtil(this)
+ String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution)
+ String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion
+ utils.logAudit(queryCloudRegionRequest)
+ utils.log("DEBUG", "AAI query cloud region URI - " + queryCloudRegionRequest, isDebugEnabled)
+
+ cloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion)
+
+ if ((cloudRegion != "ERROR")) {
+ if(execution.getVariable(prefix+"queryCloudRegionReturnCode") == "404") {
+ execution.setVariable(prefix+"aicCloudRegion", "AAIAIC25")
+ }
+ else{
+ execution.setVariable(prefix+"aicCloudRegion", cloudRegion)
+ }
+ }
+ else {
+ utils.log("DEBUG", "AAI Query Cloud Region Unsuccessful.", isDebugEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "AAI Query Cloud Region Unsuccessful. Return Code: " + execution.getVariable(prefix+"queryCloudRegionReturnCode"))
+ }
+ }
+
+
+ /**
+ * Query AAI Volume Group
+ * Output variables: prefix+'queryAAIVolGrpResponse'; prefix+'volumeGroupHeatStackId'
+ * @param execution
+ * @param isDebugLogEnabled
+ */
+ public void callRESTQueryAAIForVolumeGroup(Execution execution, isDebugLogEnabled) {
+
+ def tenantId = execution.getVariable('tenantId')
+ def volumeGroupId = execution.getVariable('volumeGroupId')
+ if(volumeGroupId == null) {
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, 'volumeGroupId is not provided in the request')
+ throw new Exception('volume-group-id is not provided in the request')
+ }
+ String cloudRegion = execution.getVariable(prefix+'aicCloudRegion')
+
+ AaiUtil aaiUtil = new AaiUtil(this)
+ String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+ String queryAAIVolumeGroupRequest = aaiEndpoint + '/' + URLEncoder.encode(cloudRegion, "UTF-8") + "/volume-groups/volume-group/" + UriUtils.encode(volumeGroupId, "UTF-8")
+
+ utils.logAudit('Query AAI volume group by ID: ' + queryAAIVolumeGroupRequest)
+ logDebug('Query AAI volume group by ID: ' + queryAAIVolumeGroupRequest, isDebugLogEnabled)
+
+ APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVolumeGroupRequest)
+
+ String returnCode = response.getStatusCode()
+ String aaiResponseAsString = response.getResponseBodyAsString()
+ aaiResponseAsString = StringEscapeUtils.unescapeXml(aaiResponseAsString)
+
+ utils.logAudit("AAI query volume group by id return code: " + returnCode)
+ utils.logAudit("AAI query volume group by id response: " + aaiResponseAsString)
+ logDebug('AAI query volume group by id return code: ' + returnCode, isDebugLogEnabled)
+ logDebug('AAI query volume group by id response: ' + aaiResponseAsString, isDebugLogEnabled)
+
+ execution.setVariable(prefix+"queryAAIVolGrpResponse", aaiResponseAsString)
+
+ if (returnCode=='200' || returnCode == '204') {
+
+ def heatStackId = getNodeTextForce(aaiResponseAsString, 'heat-stack-id')
+ execution.setVariable(prefix+'volumeGroupHeatStackId', heatStackId)
+
+ logDebug('Heat stack id from AAI response: ' + heatStackId, isDebugLogEnabled)
+
+ if(hasVfModuleRelationship(aaiResponseAsString)){
+ utils.log("DEBUG", 'Volume Group ' + volumeGroupId + ' currently in use', isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume Group ${volumeGroupId} currently in use - found vf-module relationship.")
+ }
+
+ def volumeGroupTenantId = getTenantIdFromVolumeGroup(aaiResponseAsString)
+ logDebug('Tenant ID from AAI response: ' + volumeGroupTenantId, isDebugLogEnabled)
+
+ if (volumeGroupTenantId == null) {
+ utils.log("DEBUG", "Could not find Tenant Id element in Volume Group with Volume Group Id ${volumeGroupId}", isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Could not find Tenant Id element in Volume Group with Volume Group Id ${volumeGroupId}")
+ }
+
+ if (volumeGroupTenantId != tenantId) {
+ def String errorMessage = 'TenantId ' + tenantId + ' in incoming request does not match Tenant Id ' + volumeGroupTenantId + ' retrieved from AAI for Volume Group Id ' + volumeGroupId
+ utils.log("DEBUG", "Error in DeleteVfModuleVolume: " + errorMessage, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 5000, errorMessage)
+ }
+ logDebug('Received Tenant Id ' + volumeGroupTenantId + ' from AAI for Volume Group with Volume Group Id ' + volumeGroupId , isDebugLogEnabled)
+ }
+ else {
+ if (returnCode=='404') {
+ utils.log("DEBUG", "Volume Group ${volumeGroupId} not found in AAI", isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume Group ${volumeGroupId} not found in AAI. Response code: 404")
+ }
+ else {
+ WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+ throw new BpmnError("MSOWorkflowException")
+ }
+ }
+ }
+
+ /**
+ * Format VNF Adapter subflow request XML
+ * Variables: prefix+'deleteVnfARequest'
+ * @param execution
+ * @param isDebugLogEnabled
+ */
+ public void prepareVnfAdapterDeleteRequest(Execution execution, isDebugLogEnabled) {
+ def cloudRegion = execution.getVariable(prefix+'aicCloudRegion')
+ def tenantId = execution.getVariable('tenantId') // input parameter (optional) - see preProcessRequest
+ def volumeGroupId = execution.getVariable('volumeGroupId') // input parameter (required)
+ def volumeGroupHeatStackId = execution.getVariable(prefix+'volumeGroupHeatStackId') // from AAI query volume group
+ def requestId = execution.getVariable('msoRequestId') // input parameter (required)
+ def serviceId = execution.getVariable('serviceInstanceId') // imput parameter (optional)
+
+ def messageId = UUID.randomUUID().toString()
+ def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+ def useQualifiedHostName = execution.getVariable("URN_mso_use_qualified_host")
+ if ('true'.equals(useQualifiedHostName)) {
+ notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+ }
+
+ String vnfAdapterRestRequest = """
+ <deleteVolumeGroupRequest>
+ <cloudSiteId>${cloudRegion}</cloudSiteId>
+ <tenantId>${tenantId}</tenantId>
+ <volumeGroupId>${volumeGroupId}</volumeGroupId>
+ <volumeGroupStackId>${volumeGroupHeatStackId}</volumeGroupStackId>
+ <skipAAI>true</skipAAI>
+ <msoRequest>
+ <requestId>${requestId}</requestId>
+ <serviceInstanceId>${serviceId}</serviceInstanceId>
+ </msoRequest>
+ <messageId>${messageId}</messageId>
+ <notificationUrl>${notificationUrl}</notificationUrl>
+ </deleteVolumeGroupRequest>
+ """
+ vnfAdapterRestRequest = utils.formatXml(vnfAdapterRestRequest)
+ execution.setVariable(prefix+'deleteVnfARequest', vnfAdapterRestRequest)
+ logDebug('Request for VNFAdapter Rest:\n' + vnfAdapterRestRequest, isDebugLogEnabled)
+ }
+
+
+ /**
+ * Delete volume group in AAI
+ * @param execution
+ * @param isDebugEnabled
+ */
+ public void callRESTDeleteAAIVolumeGroup(Execution execution, isDebugEnabled) {
+
+ // get variables
+ String queryAAIVolGrpIdResponse = execution.getVariable(prefix+"queryAAIVolGrpResponse")
+ String groupId = utils.getNodeText(queryAAIVolGrpIdResponse, "volume-group-id")
+ String resourceVersion = utils.getNodeText(queryAAIVolGrpIdResponse, "resource-version")
+
+ String messageId = UUID.randomUUID().toString()
+ String cloudRegion = execution.getVariable(prefix+'aicCloudRegion')
+
+ AaiUtil aaiUtil = new AaiUtil(this)
+ String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+ String deleteAAIVolumeGrpIdRequest = aaiEndpoint + '/' + URLEncoder.encode(cloudRegion, "UTF-8") + "/volume-groups/volume-group/" + UriUtils.encode(groupId, "UTF-8")
+
+ if(resourceVersion !=null){
+ deleteAAIVolumeGrpIdRequest = deleteAAIVolumeGrpIdRequest +'?resource-version=' + UriUtils.encode(resourceVersion, 'UTF-8')
+ }
+
+ utils.logAudit('Delete AAI volume group : ' + deleteAAIVolumeGrpIdRequest)
+ utils.log("DEBUG", "Delete AAI volume group : " + deleteAAIVolumeGrpIdRequest, isDebugEnabled)
+
+ APIResponse response = aaiUtil.executeAAIDeleteCall(execution, deleteAAIVolumeGrpIdRequest)
+
+ String returnCode = response.getStatusCode()
+ String aaiResponseAsString = response.getResponseBodyAsString()
+ aaiResponseAsString = StringEscapeUtils.unescapeXml(aaiResponseAsString)
+
+ utils.logAudit("AAI delete volume group return code: " + returnCode)
+ utils.logAudit("AAI delete volume group response: " + aaiResponseAsString)
+ utils.log("DEBUG", "AAI delete volume group return code: " + returnCode, isDebugEnabled)
+ utils.log("DEBUG", "AAI delete volume group response: " + aaiResponseAsString, isDebugEnabled)
+
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+ if (returnCode=='200' || (returnCode == '204')) {
+ utils.log("DEBUG", "Volume group $groupId deleted.", isDebugEnabled)
+ } else {
+ if (returnCode=='404') {
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $groupId not found for delete in AAI Response code: 404")
+ } else {
+ WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+ throw new BpmnError("MSOWorkflowException")
+ }
+ }
+ }
+
+
+ /**
+ * Check if volume group has a relationship to vf-module
+ * @param volumeGroupXml
+ * @return
+ */
+ private boolean hasVfModuleRelationship(String volumeGroupXml) {
+ def Node volumeGroupNode = xmlParser.parseText(volumeGroupXml)
+ def Node relationshipList = utils.getChildNode(volumeGroupNode, 'relationship-list')
+ if (relationshipList != null) {
+ def NodeList relationships = utils.getIdenticalChildren(relationshipList, 'relationship')
+ for (Node relationship in relationships) {
+ def Node relatedTo = utils.getChildNode(relationship, 'related-to')
+ if ((relatedTo != null) && (relatedTo.text().equals('vf-module'))) {
+ def Node relatedLink = utils.getChildNode(relationship, 'related-link')
+ if (relatedLink !=null && relatedLink.text() != null){
+ return true
+ }
+ }
+ }
+ }
+ return false
+ }
+
+
+ /**
+ * Extract the Tenant Id from the Volume Group information returned by AAI.
+ * @param volumeGroupXml Volume Group XML returned by AAI.
+ * @return the Tenant Id extracted from the Volume Group information. 'null' is returned if
+ * the Tenant Id is missing or could not otherwise be extracted.
+ */
+ private String getTenantIdFromVolumeGroup(String volumeGroupXml) {
+ def Node volumeGroupNode = xmlParser.parseText(volumeGroupXml)
+ def Node relationshipList = utils.getChildNode(volumeGroupNode, 'relationship-list')
+ if (relationshipList != null) {
+ def NodeList relationships = utils.getIdenticalChildren(relationshipList, 'relationship')
+ for (Node relationship in relationships) {
+ def Node relatedTo = utils.getChildNode(relationship, 'related-to')
+ if ((relatedTo != null) && (relatedTo.text().equals('tenant'))) {
+ def NodeList relationshipDataList = utils.getIdenticalChildren(relationship, 'relationship-data')
+ for (Node relationshipData in relationshipDataList) {
+ def Node relationshipKey = utils.getChildNode(relationshipData, 'relationship-key')
+ if ((relationshipKey != null) && (relationshipKey.text().equals('tenant.tenant-id'))) {
+ def Node relationshipValue = utils.getChildNode(relationshipData, 'relationship-value')
+ if (relationshipValue != null) {
+ return relationshipValue.text()
+ }
+ }
+ }
+ }
+ }
+ }
+ return null
+ }
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy index 208caa790d..23f036896f 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy @@ -23,7 +23,6 @@ import java.util.UUID; import org.json.JSONObject; import org.json.JSONArray; - import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.runtime.Execution; @@ -35,12 +34,12 @@ import org.openecomp.mso.rest.RESTClient import org.openecomp.mso.rest.RESTConfig import org.openecomp.mso.bpmn.common.scripts.AaiUtil import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor -import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils import org.openecomp.mso.bpmn.common.scripts.VidUtils import org.openecomp.mso.bpmn.core.RollbackData import org.openecomp.mso.bpmn.core.WorkflowException +import org.springframework.web.util.UriUtils; /** * This class supports the macro VID Flow @@ -69,7 +68,8 @@ class DoDeleteVnfAndModules extends AbstractServiceTaskProcessor { try{ // Get Variables - String cloudConfiguration = execution.getVariable("cloudConfiguration") + String cloudConfiguration = execution.getVariable("cloudConfiguration") + utils.log("DEBUG", "Cloud Configuration: " + cloudConfiguration, isDebugEnabled) String requestId = execution.getVariable("msoRequestId") execution.setVariable("requestId", requestId) @@ -86,6 +86,8 @@ class DoDeleteVnfAndModules extends AbstractServiceTaskProcessor { execution.setVariable("DDVAM_source", source) utils.log("DEBUG", "Incoming Source is: " + source, isDebugEnabled) + execution.setVariable("DDVAM_isVidRequest", "true") + String sdncVersion = execution.getVariable("sdncVersion") if (sdncVersion == null) { sdncVersion = "1702" @@ -165,7 +167,7 @@ class DoDeleteVnfAndModules extends AbstractServiceTaskProcessor { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf PreProcessRequest") } - utils.log("DEBUG", "*** COMPLETED DoCreateVnfAndModules PreProcessRequest Process ***", isDebugEnabled) + utils.log("DEBUG", "*** COMPLETED DoDeleteVnfAndModules PreProcessRequest Process ***", isDebugEnabled) } @@ -191,7 +193,7 @@ class DoDeleteVnfAndModules extends AbstractServiceTaskProcessor { execution.setVariable("addOnVfModuleModelInfo", addOnVfModuleModelInfo) String addOnVfModuleLabel = jsonUtil.getJsonValueForKey(addOnModule, "vfModuleLabel") execution.setVariable("addOnVfModuleLabel", addOnVfModuleLabel) - String addOnPersonaModelId = jsonUtil.getJsonValueForKey(addOnVfModuleModelInfoObject, "modelInvariantId") + String addOnPersonaModelId = jsonUtil.getJsonValueForKey(addOnVfModuleModelInfoObject, "modelInvariantUuid") execution.setVariable("addOnPersonaModelId", addOnPersonaModelId) String addOnInitialCount = jsonUtil.getJsonValueForKey(addOnModule, "initialCount") execution.setVariable("initialCount", addOnInitialCount) @@ -389,7 +391,7 @@ class DoDeleteVnfAndModules extends AbstractServiceTaskProcessor { String uuid = execution.getVariable('testReqId') // for junits if(uuid==null){ - uuid = execution.getVariable("mso-request-id") + "-" + System.currentTimeMillis() + uuid = execution.getVariable("msoRequestId") + "-" + System.currentTimeMillis() } def callbackURL = execution.getVariable("sdncCallbackUrl") def requestId = execution.getVariable("msoRequestId") @@ -399,7 +401,7 @@ class DoDeleteVnfAndModules extends AbstractServiceTaskProcessor { def vnfId = execution.getVariable("vnfId") def serviceInstanceId = execution.getVariable("serviceInstanceId") def cloudSiteId = execution.getVariable("DDVAM_cloudSiteId") - def modelCustomizationId = execution.getVariable("DDVAM_modelCustomizationId") + def modelCustomizationId = execution.getVariable("DDVAM_modelCustomizationId") //def serviceModelInfo = execution.getVariable("serviceModelInfo") //def vnfModelInfo = execution.getVariable("vnfModelInfo") //String serviceEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(serviceModelInfo) @@ -412,7 +414,7 @@ class DoDeleteVnfAndModules extends AbstractServiceTaskProcessor { xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> <sdncadapter:RequestHeader> - <sdncadapter:RequestId>${requestId}</sdncadapter:RequestId> + <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId> <sdncadapter:SvcInstanceId>${svcInstId}</sdncadapter:SvcInstanceId> <sdncadapter:SvcAction>${action}</sdncadapter:SvcAction> <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy index 5bd9f96bc6..7feafcc421 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy @@ -539,9 +539,9 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { if (aai_uri == null || aai_uri == "") { // using value of 'related-link' from response if (vpnBindingUri[i].charAt(vpnBindingUri[i].length()-1) == '/') { - queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i].substring(0, vpnBindingUri[i].length()-1) + queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i].substring(0, vpnBindingUri[i].length()-1) + "?depth=all" } else { - queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i] + queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i] + "?depth=all" } } else { @@ -550,7 +550,7 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { if (vpnBindingId.charAt(vpnBindingId.length()-1) == '/') { vpnBindingId = vpnBindingId.substring(0, vpnBindingId.length()-1) } - queryVpnBindingAAIRequest = "${aai_endpoint}${aai_uri}/" + vpnBindingId + queryVpnBindingAAIRequest = "${aai_endpoint}${aai_uri}/" + vpnBindingId + "?depth=all" } utils.logAudit(queryVpnBindingAAIRequest) @@ -673,9 +673,9 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { if (aai_uri == null || aai_uri == "") { // using value of 'related-link' from response if (networkPolicyUriList[i].charAt(networkPolicyUriList[i].length()-1) == '/') { - queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i].substring(0, networkPolicyUriList[i].length()-1) + queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i].substring(0, networkPolicyUriList[i].length()-1) + "?depth=all" } else { - queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i] + queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i] + "?depth=all" } } else { // using uri value in URN mapping @@ -684,7 +684,7 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { if (networkPolicyId.charAt(networkPolicyId.length()-1) == '/') { networkPolicyId = networkPolicyId.substring(0, networkPolicyId.length()-1) } - queryNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + networkPolicyId + queryNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + networkPolicyId + "?depth=all" } @@ -809,9 +809,9 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { if (aai_uri == null || aai_uri == "") { // using value of 'related-link' from response if (networkTableRefUriList[i].charAt(networkTableRefUriList[i].length()-1) == '/') { - queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i].substring(0, networkTableRefUriList[i].length()-1) + queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i].substring(0, networkTableRefUriList[i].length()-1) + "?depth=all" } else { - queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i] + queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i] + "?depth=all" } } else { // using uri value in URN mapping @@ -820,7 +820,7 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { if (networkTableRefId.charAt(networkTableRefId.length()-1) == '/') { networkTableRefId = networkTableRefId.substring(0, networkTableRefId.length()-1) } - queryNetworkTableRefAAIRequest = "${aai_endpoint}${aai_uri}/" + networkTableRefId + queryNetworkTableRefAAIRequest = "${aai_endpoint}${aai_uri}/" + networkTableRefId + "?depth=all" } @@ -1308,7 +1308,7 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { try { - if (execution.getVariable("sdncVersion") == '1702') { + if (execution.getVariable("sdncVersion") != '1610') { // skip: 1702 for 'changeassign' or equivalent not yet defined in SNDC, so no rollback. } else { prepareSDNCRollbackRequest(execution) diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy index f07bb0df49..87a6a73fb0 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy @@ -36,6 +36,7 @@ import org.springframework.web.util.UriUtils public class DoUpdateVfModule extends VfModuleBase { ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() /** * Initialize the flow's variables. @@ -62,6 +63,7 @@ public class DoUpdateVfModule extends VfModuleBase { execution.setVariable('DOUPVfMod_aicCloudRegion', null) execution.setVariable('DOUPVfMod_tenantId', null) execution.setVariable('DOUPVfMod_volumeGroupId', null) + execution.setVariable("DOUPVfMod_volumeGroupStackId", "") execution.setVariable('DOUPVfMod_vfModule', null) execution.setVariable('DOUPVfMod_vnfParams', null) execution.setVariable("DOUPVfMod_baseVfModuleId", "") @@ -110,18 +112,16 @@ public class DoUpdateVfModule extends VfModuleBase { //tenantId - def tenantId = jsonUtil.getJsonValue(cloudConfiguration, "cloudConfiguration.tenantId") + def tenantId = execution.getVariable("tenantId") execution.setVariable("DOUPVfMod_tenantId", tenantId) //volumeGroupId def volumeGroupId = execution.getVariable("volumeGroupId") execution.setVariable("DOUPVfMod_volumeGroupId", volumeGroupId) - //volumeGroupName - def volumeGroupName = execution.getVariable("volumeGroupName") - execution.setVariable("DOUPVfMod_volumeGroupName", volumeGroupName) + //cloudSiteId - def cloudSiteId = jsonUtil.getJsonValue(cloudConfiguration, "cloudConfiguration.lcpCloudRegionId") - execution.setVariable("DOUPVfMod_cloudSiteId", cloudSiteId) + def cloudSiteId = execution.getVariable("lcpCloudRegionId") + execution.setVariable("DOUPVfMod_aicCloudRegion", cloudSiteId) logDebug("cloudSiteId: " + cloudSiteId, isDebugLogEnabled) //vnfType @@ -150,7 +150,10 @@ public class DoUpdateVfModule extends VfModuleBase { logDebug("vfModuleModelName: " + vfModuleModelName, isDebugLogEnabled) //modelCustomizationUuid - def modelCustomizationUuid = jsonUtil.getJsonValue(vfModuleModelInfo, "modelCustomizationId") + def modelCustomizationUuid = jsonUtil.getJsonValue(vfModuleModelInfo, "modelCustomizationUuid") + if (modelCustomizationUuid == null) { + modelCustomizationUuid = "" + } execution.setVariable("DOUPVfMod_modelCustomizationUuid", modelCustomizationUuid) logDebug("modelCustomizationUuid: " + modelCustomizationUuid, isDebugLogEnabled) @@ -158,7 +161,7 @@ public class DoUpdateVfModule extends VfModuleBase { def vfModuleId = execution.getVariable("vfModuleId") execution.setVariable("DOUPVfMod_vfModuleId", vfModuleId) logDebug("vfModuleId: " + vfModuleId, isDebugLogEnabled) - def requestId = execution.getVariable("requestId") + def requestId = execution.getVariable("msoRequestId") execution.setVariable("DOUPVfMod_requestId", requestId) logDebug("requestId: " + requestId, isDebugLogEnabled) // Set mso-request-id to request-id for VNF Adapter interface @@ -194,7 +197,7 @@ public class DoUpdateVfModule extends VfModuleBase { execution.setVariable("DOUPVfMod_asdcServiceModelVersion", asdcServiceModelVersion) logDebug("asdcServiceModelVersion: " + asdcServiceModelVersion, isDebugLogEnabled) //personaModelId - execution.setVariable("DOUPVfMod_personaModelId", jsonUtil.getJsonValue(vfModuleModelInfo, "modelInvariantId")) + execution.setVariable("DOUPVfMod_personaModelId", jsonUtil.getJsonValue(vfModuleModelInfo, "modelInvariantUuid")) //personaModelVersion execution.setVariable("DOUPVfMod_personaModelVersion", jsonUtil.getJsonValue(vfModuleModelInfo, "modelVersion")) //Get or Generate UUID @@ -211,6 +214,10 @@ public class DoUpdateVfModule extends VfModuleBase { if (isVidRequest == null || isVidRequest.isEmpty()) { execution.setVariable("isVidRequest", "true") } + //usePreload + def usePreload = execution.getVariable("usePreload") + execution.setVariable("DOUPVfMod_usePreload", usePreload) + logDebug("usePreload: " + usePreload, isDebugLogEnabled) //globalSubscriberId String globalSubscriberId = execution.getVariable("globalSubscriberId") execution.setVariable("DOUPVfMod_globalSubscriberId", globalSubscriberId) @@ -323,8 +330,8 @@ public class DoUpdateVfModule extends VfModuleBase { } /** - * Prepare a Request for invoking the ConfirmVolumeGroupTenant subflow. Currently, - * there is really nothing to do, so we just log that we're passing through. + * Prepare a Request for invoking the ConfirmVolumeGroupTenant subflow. + * Determine cloud region id for the volume group. * * @param execution The flow's execution instance. */ @@ -332,21 +339,54 @@ public class DoUpdateVfModule extends VfModuleBase { def method = getClass().getSimpleName() + '.prepConfirmVolumeGroupTenant(' + 'execution=' + execution.getId() + ')' + + def prefix = execution.getVariable("prefix") def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') logDebug('Entered ' + method, isDebugLogEnabled) try { - // Nothing to do - just log that we're passing through here + String cloudRegion = execution.getVariable(prefix + "aicCloudRegion") - logDebug('Exited ' + method, isDebugLogEnabled) - } catch (BpmnError e) { - throw e; - } catch (Exception e) { - logError('Caught exception in ' + method, e) - exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepConfirmVolumeGroupTenant(): ' + e.getMessage()) + // Prepare AA&I url + String aai_endpoint = execution.getVariable("URN_aai_endpoint") + AaiUtil aaiUtil = new AaiUtil(this) + String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution) + String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion + utils.logAudit("CloudRegion Request: " + queryCloudRegionRequest) + + execution.setVariable(prefix + "queryCloudRegionRequest", queryCloudRegionRequest) + utils.log("DEBUG", prefix + "queryCloudRegionRequest - " + "\n" + queryCloudRegionRequest, isDebugLogEnabled) + + cloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "AAI", cloudRegion) + + if ((cloudRegion != "ERROR")) { + if(execution.getVariable(prefix + "queryCloudRegionReturnCode") == "404"){ + execution.setVariable(prefix + "cloudRegionForVolume", "AAIAIC25") + }else{ + execution.setVariable(prefix + "cloudRegionForVolume", cloudRegion) + } + execution.setVariable(prefix + "isCloudRegionGood", true) + } else { + String errorMessage = "AAI Query Cloud Region Unsuccessful. AAI Response Code: " + execution.getVariable(prefix + "queryCloudRegionReturnCode") + utils.log("DEBUG", errorMessage, isDebugLogEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage) + execution.setVariable(prefix + "isCloudRegionGood", false) + } + utils.log("DEBUG", " is Cloud Region Good: " + execution.getVariable(prefix + "isCloudRegionGood"), isDebugLogEnabled) + + } catch(BpmnError b){ + utils.log("ERROR", "Rethrowing MSOWorkflowException", isDebugLogEnabled) + throw b + }catch (Exception e) { + // try error + String errorMessage = "Bpmn error encountered in CreateVfModule flow. Unexpected Response from AAI - " + e.getMessage() + utils.log("ERROR", " AAI Query Cloud Region Failed. Exception - " + "\n" + errorMessage, isDebugLogEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception occured during prepConfirmVolumeGroupTenant(): " + e.getMessage()) } + logDebug('Exited ' + method, isDebugLogEnabled) + } - + /** * Prepare a Request for invoking the SDNC Adapter subflow to perform * a VNF topology 'changeassign' operation. @@ -362,6 +402,10 @@ public class DoUpdateVfModule extends VfModuleBase { try { def requestId = execution.getVariable('DOUPVfMod_requestId') + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("DOUPVfMod_requestId") + "-" + System.currentTimeMillis() + } def serviceInstanceId = execution.getVariable('DOUPVfMod_serviceInstanceId') def callbackUrl = (String) execution.getVariable('URN_mso_workflow_sdncadapter_callback') def serviceId = execution.getVariable('DOUPVfMod_serviceId') @@ -373,6 +417,13 @@ public class DoUpdateVfModule extends VfModuleBase { def vfModuleName = vfModule.getElementText('vf-module-name') def tenantId = execution.getVariable('DOUPVfMod_tenantId') def aicCloudRegion = execution.getVariable('DOUPVfMod_aicCloudRegion') + boolean usePreload = execution.getVariable("DOUPVfMod_usePreload") + String usePreloadToSDNC = usePreload ? "Y" : "N" + def modelCustomizationUuid = execution.getVariable("DoUPVfMod_modelCustomizationUuid") + def modelCustomizationUuidString = "" + if (!usePreload) { + modelCustomizationUuidString = "<modelCustomizationUuid>" + modelCustomizationUuid + "</modelCustomizationUuid>" + } // Retrieve vnf name from AAI response def vnfName = execution.getVariable('DOUPVfMod_vnfNameFromAAI') @@ -386,7 +437,7 @@ public class DoUpdateVfModule extends VfModuleBase { xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> <sdncadapter:RequestHeader> - <sdncadapter:RequestId>${requestId}</sdncadapter:RequestId> + <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId> <sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId> <sdncadapter:SvcAction>changeassign</sdncadapter:SvcAction> <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> @@ -415,6 +466,8 @@ public class DoUpdateVfModule extends VfModuleBase { <generic-vnf-type>${vnfType}</generic-vnf-type> <tenant>${tenantId}</tenant> <aic-cloud-region>${aicCloudRegion}</aic-cloud-region> + ${modelCustomizationUuidString} + <use-preload>${usePreloadToSDNC}</use-preload> ${vnfNetworks} </vnf-request-information> </sdncadapterworkflow:SDNCRequestData> @@ -448,6 +501,10 @@ public class DoUpdateVfModule extends VfModuleBase { logDebug('Entered ' + method, isDebugLogEnabled) try { + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("DOUPVfMod_requestId") + "-" + System.currentTimeMillis() + } def requestId = execution.getVariable('DOUPVfMod_requestId') def serviceInstanceId = execution.getVariable('DOUPVfMod_serviceInstanceId') def callbackUrl = (String) execution.getVariable('URN_mso_workflow_sdncadapter_callback') @@ -469,7 +526,7 @@ public class DoUpdateVfModule extends VfModuleBase { xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> <sdncadapter:RequestHeader> - <sdncadapter:RequestId>${requestId}</sdncadapter:RequestId> + <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId> <sdncadapter:SvcInstanceId>${svcInstId}</sdncadapter:SvcInstanceId> <sdncadapter:SvcAction>query</sdncadapter:SvcAction> <sdncadapter:SvcOperation>/VNF-API:vnfs/vnf-list/${vfModuleId}</sdncadapter:SvcOperation> @@ -513,6 +570,7 @@ public class DoUpdateVfModule extends VfModuleBase { def vnfInputs = execution.getVariable('DOUPVfMod_vnfInputs') def tenantId = execution.getVariable('DOUPVfMod_tenantId') def volumeGroupId = execution.getVariable('DOUPVfMod_volumeGroupId') + def volumeGroupStackId = execution.getVariable('DOUPVfMod_volumeGroupStackId') def VfModule vfModule = (VfModule) execution.getVariable('DOUPVfMod_vfModule') def heatStackId = vfModule.getElementText('heat-stack-id') def cloudId = execution.getVariable('DOUPVfMod_aicCloudRegion') @@ -552,6 +610,7 @@ public class DoUpdateVfModule extends VfModuleBase { <modelCustomizationUuid>${modelCustomizationUuid}</modelCustomizationUuid> <vfModuleType>${vfModuleModelName}</vfModuleType> <volumeGroupId>${volumeGroupId}</volumeGroupId> + <volumeGroupStackId>${volumeGroupStackId}</volumeGroupStackId> <baseVfModuleId>${baseVfModuleId}</baseVfModuleId> <baseVfModuleStackId>${baseVfModuleStackId}</baseVfModuleStackId> <skipAAI>true</skipAAI> @@ -671,7 +730,7 @@ public class DoUpdateVfModule extends VfModuleBase { def personaModelCustomizationIdElement = '' def modelCustomizationId = execution.getVariable('DOUPVfMod_modelCustomizationUuid') if (modelCustomizationId != null) { - personaModelCustomizationIdElement = '<persona-model-customization-id>' + modelCustomizationId + '</persona-model-customization-id>' + personaModelCustomizationIdElement = '<model-customization-id>' + modelCustomizationId + '</model-customization-id>' } String updateAAIVfModuleRequest = """ @@ -716,6 +775,10 @@ public class DoUpdateVfModule extends VfModuleBase { logDebug('Entered ' + method, isDebugLogEnabled) try { + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("DOUPVfMod_requestId") + "-" + System.currentTimeMillis() + } def requestId = execution.getVariable('DOUPVfMod_requestId') def serviceInstanceId = execution.getVariable('DOUPVfMod_serviceInstanceId') def callbackUrl = (String) execution.getVariable('URN_mso_workflow_sdncadapter_callback') @@ -730,6 +793,14 @@ public class DoUpdateVfModule extends VfModuleBase { def tenantId = execution.getVariable('DOUPVfMod_tenantId') def aicCloudRegion = execution.getVariable('DOUPVfMod_aicCloudRegion') + boolean usePreload = execution.getVariable("DOUPVfMod_usePreload") + String usePreloadToSDNC = usePreload ? "Y" : "N" + def modelCustomizationUuid = execution.getVariable("DoUPVfMod_modelCustomizationUuid") + def modelCustomizationUuidString = "" + if (!usePreload) { + modelCustomizationUuidString = "<modelCustomizationUuid>" + modelCustomizationUuid + "</modelCustomizationUuid>" + } + def vnfParamsXml = execution.getVariable('DOUPVfMod_vnfParams') def vnfNetworks = transformNetworkParamsToVnfNetworks(vnfParamsXml) @@ -738,7 +809,7 @@ public class DoUpdateVfModule extends VfModuleBase { xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> <sdncadapter:RequestHeader> - <sdncadapter:RequestId>${requestId}</sdncadapter:RequestId> + <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId> <sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId> <sdncadapter:SvcAction>activate</sdncadapter:SvcAction> <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> @@ -767,6 +838,8 @@ public class DoUpdateVfModule extends VfModuleBase { <generic-vnf-type>${vnfType}</generic-vnf-type> <tenant>${tenantId}</tenant> <aic-cloud-region>${aicCloudRegion}</aic-cloud-region> + ${modelCustomizationUuidString} + <use-preload>${usePreloadToSDNC}</use-preload> </vnf-request-information> </sdncadapterworkflow:SDNCRequestData> </sdncadapterworkflow:SDNCAdapterWorkflowRequest> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy new file mode 100644 index 0000000000..7d7505f307 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy @@ -0,0 +1,391 @@ +/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.bpmn.infrastructure.scripts
+
+import java.io.ObjectInputStream.BlockDataInputStream
+import java.util.UUID;
+
+import org.json.JSONObject;
+import org.json.JSONArray;
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution;
+import org.hibernate.jpa.criteria.predicate.IsEmptyPredicate
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.rest.APIResponse
+import org.openecomp.mso.rest.RESTClient
+import org.openecomp.mso.rest.RESTConfig
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.core.domain.ModelInfo
+import org.openecomp.mso.bpmn.core.domain.ModuleResource
+import org.openecomp.mso.bpmn.core.domain.VnfResource
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.springframework.web.util.UriUtils;
+
+/**
+ * This class supports the VID Flow
+ * with the update of a generic vnf and related VF modules.
+ */
+class DoUpdateVnfAndModules extends AbstractServiceTaskProcessor {
+
+ String Prefix="DUVAM_"
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+ JsonUtils jsonUtil = new JsonUtils()
+
+ /**
+ * This method gets and validates the incoming
+ * request.
+ *
+ * @param - execution
+ *
+ */
+ public void preProcessRequest(Execution execution) {
+ def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+ execution.setVariable("prefix",Prefix)
+ utils.log("DEBUG", " *** STARTED DoUpdateVnfAndModules PreProcessRequest Process*** ", isDebugEnabled)
+
+ try{
+ // Get Variables
+
+ String requestId = execution.getVariable("msoRequestId")
+ execution.setVariable("requestId", requestId)
+ execution.setVariable("mso-request-id", requestId)
+ utils.log("DEBUG", "Incoming Request Id is: " + requestId, isDebugEnabled)
+
+ String serviceInstanceId = execution.getVariable("serviceInstanceId")
+ utils.log("DEBUG", "Incoming Service Instance Id is: " + serviceInstanceId, isDebugEnabled)
+
+ String vnfId = execution.getVariable("vnfId")
+ utils.log("DEBUG", "Incoming Vnf Id is: " + vnfId, isDebugEnabled)
+
+ String source = "VID"
+ execution.setVariable("DUVAM_source", source)
+ utils.log("DEBUG", "Incoming Source is: " + source, isDebugEnabled)
+
+ String sdncVersion = execution.getVariable("sdncVersion")
+ if (sdncVersion == null) {
+ sdncVersion = "1702"
+ }
+ execution.setVariable("DUVAM_sdncVersion", sdncVersion)
+ utils.log("DEBUG", "Incoming Sdnc Version is: " + sdncVersion, isDebugEnabled)
+
+ VnfResource vnfResource = (VnfResource) execution.getVariable("vnfResourceDecomposition")
+
+ String vnfModelInfo = execution.getVariable("vnfModelInfo")
+ String serviceModelInfo = execution.getVariable("serviceModelInfo")
+
+ String serviceId = execution.getVariable("productFamilyId")
+ execution.setVariable("DUVAM_serviceId", serviceId)
+ utils.log("DEBUG", "Incoming Service Id is: " + serviceId, isDebugEnabled)
+
+ String modelUuid = jsonUtil.getJsonValue(vnfModelInfo, "modelUuid")
+ execution.setVariable("DUVAM_modelUuid", modelUuid)
+ utils.log("DEBUG", "Incoming modelUuid is: " + modelUuid, isDebugEnabled)
+
+ String modelCustomizationUuid = jsonUtil.getJsonValue(vnfModelInfo, "modelCustomizationUuid")
+ execution.setVariable("DUVAM_modelCustomizationUuid", modelCustomizationUuid)
+ utils.log("DEBUG", "Incoming Model Customization Uuid is: " + modelCustomizationUuid, isDebugEnabled)
+
+ String cloudSiteId = execution.getVariable("lcpCloudRegionId")
+ execution.setVariable("DUVAM_cloudSiteId", cloudSiteId)
+ utils.log("DEBUG", "Incoming Cloud Site Id is: " + cloudSiteId, isDebugEnabled)
+
+ String tenantId = execution.getVariable("tenantId")
+ execution.setVariable("DUVAM_tenantId", tenantId)
+ utils.log("DEBUG", "Incoming Tenant Id is: " + tenantId, isDebugEnabled)
+
+ String globalSubscriberId = execution.getVariable("globalSubscriberId")
+ if (globalSubscriberId == null) {
+ globalSubscriberId = ""
+ }
+ execution.setVariable("DUVAM_globalSubscriberId", globalSubscriberId)
+ utils.log("DEBUG", "Incoming Global Subscriber Id is: " + globalSubscriberId, isDebugEnabled)
+
+ execution.setVariable("DUVAM_moduleCount", 0)
+ execution.setVariable("DUVAM_nextModule", 0)
+
+
+ }catch(BpmnError b){
+ utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+ throw b
+ }catch(Exception e){
+ utils.log("DEBUG", " Error Occured in DoUpdateVnfAndModules PreProcessRequest method!" + e.getMessage(), isDebugEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoUpdateVnfAndModules PreProcessRequest")
+
+ }
+ utils.log("DEBUG", "*** COMPLETED DoUpdateVnfAndModules PreProcessRequest Process ***", isDebugEnabled)
+ }
+
+ /**
+ * Using the received vnfId and vfModuleId, query AAI to get the corresponding VNF info.
+ * A 200 response is expected with the VNF info in the response body. Will find out the base module info.
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void queryAAIVfModule(Execution execution) {
+ def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+ def method = getClass().getSimpleName() + '.queryAAIVfModule(' +
+ 'execution=' + execution.getId() +
+ ')'
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ def vnfId = execution.getVariable('vnfId')
+
+ AaiUtil aaiUriUtil = new AaiUtil(this)
+ String aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution)
+ logDebug('AAI URI is: ' + aai_uri, isDebugLogEnabled)
+
+ String endPoint = execution.getVariable("URN_aai_endpoint") + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + "?depth=1"
+ utils.logAudit("AAI endPoint: " + endPoint)
+
+ try {
+ RESTConfig config = new RESTConfig(endPoint);
+ def responseData = ''
+ def aaiRequestId = UUID.randomUUID().toString()
+ RESTClient client = new RESTClient(config).
+ addHeader('X-TransactionId', aaiRequestId).
+ addHeader('X-FromAppId', 'MSO').
+ addHeader('Content-Type', 'application/xml').
+ addHeader('Accept','application/xml');
+ logDebug('sending GET to AAI endpoint \'' + endPoint + '\'', isDebugLogEnabled)
+ APIResponse response = client.httpGet()
+ utils.logAudit("createVfModule - invoking httpGet() to AAI")
+
+ responseData = response.getResponseBodyAsString()
+ if (responseData != null) {
+ logDebug("Received generic VNF data: " + responseData, isDebugLogEnabled)
+
+ }
+
+ utils.logAudit("createVfModule - queryAAIVfModule Response: " + responseData)
+ utils.logAudit("createVfModule - queryAAIVfModule ResponseCode: " + response.getStatusCode())
+
+ execution.setVariable('DUVAM_queryAAIVfModuleResponseCode', response.getStatusCode())
+ execution.setVariable('DUVAM_queryAAIVfModuleResponse', responseData)
+ logDebug('Response code:' + response.getStatusCode(), isDebugLogEnabled)
+ logDebug('Response:' + System.lineSeparator() + responseData, isDebugLogEnabled)
+ //Map<String, String>[] vfModules = new HashMap<String,String>[]
+ def vfModulesList = new ArrayList<Map<String,String>>()
+ def vfModules = null
+ def vfModuleBaseEntry = null
+ if (response.getStatusCode() == 200) {
+ // Parse the VNF record from A&AI to find base module info
+ logDebug('Parsing the VNF data to find base module info', isDebugLogEnabled)
+ if (responseData != null) {
+ def vfModulesText = utils.getNodeXml(responseData, "vf-modules")
+ logDebug("vModulesText: " + vfModulesText, isDebugLogEnabled)
+ if (vfModulesText != null && !vfModulesText.trim().isEmpty()) {
+ def xmlVfModules= new XmlSlurper().parseText(vfModulesText)
+ vfModules = xmlVfModules.'**'.findAll {it.name() == "vf-module"}
+ execution.setVariable("DUVAM_moduleCount", vfModules.size())
+ int vfModulesSize = 0
+ for (i in 0..vfModules.size()-1) {
+ def vfModuleXml = groovy.xml.XmlUtil.serialize(vfModules[i])
+
+ Map<String, String> vfModuleEntry = new HashMap<String, String>()
+ def vfModuleId = utils.getNodeText1(vfModuleXml, "vf-module-id")
+ vfModuleEntry.put("vfModuleId", vfModuleId)
+ def vfModuleName = utils.getNodeText1(vfModuleXml, "vf-module-name")
+ vfModuleEntry.put("vfModuleName", vfModuleName)
+ def modelInvariantUuid = utils.getNodeText1(vfModuleXml, "model-invariant-id")
+ vfModuleEntry.put("modelInvariantUuid", modelInvariantUuid)
+ def modelUuid = utils.getNodeText1(vfModuleXml, "model-version-id")
+ vfModuleEntry.put("modelUuid", modelUuid)
+ def modelCustomizationUuid = utils.getNodeText1(vfModuleXml, "model-customization-id")
+ vfModuleEntry.put("modelCustomizationUuid", modelCustomizationUuid)
+
+ def isBaseVfModule = utils.getNodeText(vfModuleXml, "is-base-vf-module")
+ vfModuleEntry.put("isBaseVfModule", isBaseVfModule)
+ // Save base vf module to add it to the start of the list later
+ if (isBaseVfModule == "true") {
+ vfModuleBaseEntry = vfModuleEntry
+ }
+ else {
+ vfModulesList.add(vfModuleEntry)
+ }
+ }
+ // Start the list with the base module if any
+ if (vfModuleBaseEntry != null) {
+ vfModulesList.add(0, vfModuleBaseEntry)
+ }
+ }
+
+ }
+ }
+ else {
+ logDebug('Response code from AAI GET is: ' + response.getStatusCode(), isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Response code from AAI GET is: ' + response.getStatusCode())
+ }
+ execution.setVariable("DUVAM_vfModules", vfModulesList)
+ } catch (Exception ex) {
+ ex.printStackTrace()
+ logDebug('Exception occurred while executing AAI GET:' + ex.getMessage(),isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage())
+ }
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModule(): ' + e.getMessage())
+ }
+ }
+
+ public void prepareNextModuleToUpdate(Execution execution){
+ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+ execution.setVariable("prefix", Prefix)
+ logDebug(" ======== STARTED prepareNextModuleToUpdate ======== ", isDebugLogEnabled)
+
+ try {
+ int i = execution.getVariable("DUVAM_nextModule")
+ def vfModules = execution.getVariable("DUVAM_vfModules")
+ def vfModule = vfModules[i]
+
+ def vfModuleId = vfModule.get("vfModuleId")
+ execution.setVariable("DUVAM_vfModuleId", vfModuleId)
+
+ def vfModuleName = vfModule.get("vfModuleName")
+ execution.setVariable("DUVAM_vfModuleName", vfModuleName)
+
+ def isBaseVfModule = vfModule.get("isBaseVfModule")
+ execution.setVariable("DUVAM_isBaseVfModule", isBaseVfModule)
+
+ String modelInvariantUuid = vfModule.get("modelInvariantUuid")
+ logDebug("ModelInvariantUuid: " + modelInvariantUuid, isDebugLogEnabled)
+
+ execution.setVariable("DUVAM_volumeGroupId", "")
+ execution.setVariable("DUVAM_volumeGroupName", "")
+
+ VnfResource vnfResource = (VnfResource) execution.getVariable("vnfResourceDecomposition")
+ List<ModuleResource> moduleResources = vnfResource.getVfModules()
+
+ for (j in 0..moduleResources.size()-1) {
+ ModelInfo modelInfo = moduleResources[j].getModelInfo()
+ String modelInvariantUuidFromDecomposition = modelInfo.getModelInvariantUuid()
+ logDebug("modelInvariantUuidFromDecomposition: " + modelInvariantUuidFromDecomposition, isDebugLogEnabled)
+
+ if (modelInvariantUuid.equals(modelInvariantUuidFromDecomposition)) {
+ String vfModuleModelInfo = modelInfo.toJsonString()
+ String vfModuleModelInfoValue = jsonUtil.getJsonValue(vfModuleModelInfo, "modelInfo")
+ execution.setVariable("DUVAM_vfModuleModelInfo", vfModuleModelInfoValue)
+ logDebug("vfModuleModelInfo: " + vfModuleModelInfoValue, isDebugLogEnabled)
+ break
+ }
+
+ }
+
+ }catch(Exception e){
+ utils.log("ERROR", "Exception Occured Processing preProcessAddOnModule. Exception is:\n" + e, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during prepareNextModuleToUpdate Method:\n" + e.getMessage())
+ }
+ logDebug("======== COMPLETED prepareNextModuleToUpdate ======== ", isDebugLogEnabled)
+ }
+
+
+ /**
+ * Prepare a Request for invoking the UpdateAAIGenericVnf subflow.
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void prepUpdateAAIGenericVnf(Execution execution) {
+ def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ def vnfId = execution.getVariable('vnfId')
+ VnfResource vnfResource = (VnfResource) execution.getVariable("vnfResourceDecomposition")
+ ModelInfo vnfDecompModelInfo = vnfResource.getModelInfo()
+ String vnfModelInfo = execution.getVariable("vnfModelInfo")
+ String modelUuid = execution.getVariable("DUVAM_modelUuid")
+ if (modelUuid == null || modelUuid.isEmpty()) {
+ modelUuid = vnfDecompModelInfo.getModelUuid()
+ }
+ String modelCustomizationUuid = execution.getVariable("DUVAM_modelCustomizationUuid")
+ if (modelCustomizationUuid == null || modelCustomizationUuid.isEmpty()) {
+ modelCustomizationUuid = vnfDecompModelInfo.getModelCustomizationUuid()
+ }
+ String nfType = vnfResource.getNfType()
+ String nfTypeString = ''
+ if (nfType != null && !nfType.isEmpty()) {
+ nfTypeString = "<nf-type>" + nfType + "</nf-type>"
+ }
+ String nfRole = vnfResource.getNfRole()
+ String nfRoleString = ''
+ if (nfRole != null && !nfRole.isEmpty()) {
+ nfRoleString = "<nf-role>" + nfRole + "</nf-role>"
+ }
+ String nfFunction = vnfResource.getNfFunction()
+ String nfFunctionString = ''
+ if (nfFunction != null && !nfFunction.isEmpty()) {
+ nfFunctionString = "<nf-function>" + nfFunction + "</nf-function>"
+ }
+ String nfNamingCode = vnfResource.getNfNamingCode()
+ String nfNamingCodeString = ''
+ if (nfNamingCode != null && !nfNamingCode.isEmpty()) {
+ nfNamingCodeString = "<nf-naming-code>" + nfNamingCode + "</nf-naming-code>"
+ }
+
+ String updateAAIGenericVnfRequest = """
+ <UpdateAAIGenericVnfRequest>
+ <vnf-id>${vnfId}</vnf-id>
+ <model-version-id>${modelUuid}</model-version-id>
+ <model-customization-id>${modelCustomizationUuid}</model-customization-id>
+ ${nfTypeString}
+ ${nfRoleString}
+ ${nfFunctionString}
+ ${nfNamingCodeString}
+ </UpdateAAIGenericVnfRequest>
+ """
+ updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest)
+ execution.setVariable('DUVAM_updateAAIGenericVnfRequest', updateAAIGenericVnfRequest)
+ utils.logAudit("updateAAIGenericVnfRequest : " + updateAAIGenericVnfRequest)
+ logDebug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest, isDebugLogEnabled)
+
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIGenericVnf(): ' + e.getMessage())
+ }
+ }
+
+ /**
+ * APP-C Call - placeholder.
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void callAppCf(Execution execution) {
+ def method = getClass().getSimpleName() + '.callAppC(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+ }
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ReplaceVnfInfra.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ReplaceVnfInfra.groovy new file mode 100644 index 0000000000..7dbd7a9c57 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ReplaceVnfInfra.groovy @@ -0,0 +1,694 @@ +/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.bpmn.infrastructure.scripts
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+import groovy.util.Node
+import groovy.util.XmlParser;
+import groovy.xml.QName
+
+import java.io.Serializable;
+import java.util.UUID;
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.impl.cmd.AbstractSetVariableCmd
+import org.camunda.bpm.engine.runtime.Execution
+import org.openecomp.mso.rest.APIResponse
+import org.openecomp.mso.rest.RESTClient
+import org.openecomp.mso.rest.RESTConfig
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor;
+import org.openecomp.mso.bpmn.common.scripts.VidUtils;
+import org.openecomp.mso.bpmn.core.RollbackData
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.bpmn.core.domain.ModelInfo
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
+import org.openecomp.mso.bpmn.core.domain.VnfResource
+import org.openecomp.mso.client.aai.*
+
+import org.openecomp.mso.client.appc.ApplicationControllerClient;
+import org.openecomp.mso.client.appc.ApplicationControllerSupport;
+import org.openecomp.appc.client.lcm.model.Action;
+import org.openecomp.appc.client.lcm.model.ActionIdentifiers;
+import org.openecomp.appc.client.lcm.model.LockInput
+import org.openecomp.appc.client.lcm.model.UnlockInput
+import org.openecomp.appc.client.lcm.model.HealthCheckInput
+import org.openecomp.appc.client.lcm.model.StartInput
+import org.openecomp.appc.client.lcm.model.StopInput
+import org.openecomp.appc.client.lcm.model.Flags
+import org.openecomp.appc.client.lcm.model.Status
+
+
+
+public class ReplaceVnfInfra extends AbstractServiceTaskProcessor {
+
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+ JsonUtils jsonUtils = new JsonUtils()
+ ApplicationControllerClient appcClient = new ApplicationControllerClient()
+ def prefix = "RPLVnfI_"
+
+ /**
+ * Initialize the flow's variables.
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void initProcessVariables(Execution execution) {
+ execution.setVariable('prefix', 'RPLVnfI_')
+ execution.setVariable('RPLVnfI_Request', null)
+ execution.setVariable('RPLVnfI_requestInfo', null)
+ execution.setVariable('RPLVnfI_requestId', null)
+ execution.setVariable('RPLVnfI_source', null)
+ execution.setVariable('RPLVnfI_vnfInputs', null)
+ execution.setVariable('RPLVnfI_vnfId', null)
+ execution.setVariable('RPLVnfI_tenantId', null)
+ execution.setVariable('RPLVnfI_vnfParams', null)
+ execution.setVariable('RPLVnfI_cloudConfiguration', null)
+ execution.setVariable('ReplaceVnfSuccessIndicator', false)
+ execution.setVariable('RPLVnfI_serviceType', null)
+ execution.setVariable('RPLVnfI_nfRole', null)
+ execution.setVariable('RPLVnfI_currentActivity', 'RPLVnfI')
+ execution.setVariable('RPLVnfI_workStep', null)
+ execution.setVariable('RPLVnfI_failedActivity', null)
+ execution.setVariable('RPLVnfI_errorCode', "0")
+ execution.setVariable('RPLVnfI_errorText', null)
+ execution.setVariable('RPLVnfI_healthCheckIndex', 1)
+ }
+
+ /**
+ * Check for missing elements in the received request.
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void preProcessRequest(Execution execution) {
+ def method = getClass().getSimpleName() + '.preProcessRequest(' +
+ 'execution=' + execution.getId() +
+ ')'
+ initProcessVariables(execution)
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ initProcessVariables(execution)
+
+ def incomingRequest = execution.getVariable('bpmnRequest')
+
+ utils.log("DEBUG", "Incoming Infra Request: " + incomingRequest, isDebugLogEnabled)
+ try {
+ def jsonSlurper = new JsonSlurper()
+ def jsonOutput = new JsonOutput()
+ Map reqMap = jsonSlurper.parseText(incomingRequest)
+ utils.log("DEBUG", " Request is in JSON format.", isDebugLogEnabled)
+
+ def serviceInstanceId = execution.getVariable('serviceInstanceId')
+ def vnfId = execution.getVariable('vnfId')
+
+ execution.setVariable(prefix + 'serviceInstanceId', serviceInstanceId)
+ execution.setVariable(prefix + 'vnfId', vnfId)
+ execution.setVariable("isVidRequest", "true")
+
+ def asdcServiceModelVersion = ''
+ def serviceModelInfo = null
+
+ def relatedInstanceList = reqMap.requestDetails?.relatedInstanceList
+
+ if (relatedInstanceList != null) {
+ relatedInstanceList.each {
+ if (it.relatedInstance.modelInfo?.modelType == 'service') {
+ utils.log("DEBUG", "PROCESSING SERVICE INFO", isDebugLogEnabled)
+ asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion
+ serviceModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo)
+ utils.log("DEBUG", "ServiceModelInfo: " + serviceModelInfo, isDebugLogEnabled)
+ def modelInvariant = jsonUtils.getJsonValue(serviceModelInfo, "modelInvariantUuid")
+ utils.log("DEBUG", "modelInvariant: " + modelInvariant, isDebugLogEnabled)
+ }
+
+ }
+ }
+
+ execution.setVariable(prefix + 'asdcServiceModelVersion', asdcServiceModelVersion)
+ execution.setVariable(prefix + 'serviceModelInfo', serviceModelInfo)
+ def vnfModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo)
+ execution.setVariable(prefix + 'vnfModelInfo', vnfModelInfo)
+ def vnfModelInvariantUuid = jsonUtils.getJsonValue(vnfModelInfo, "modelInvariantUuid")
+ execution.setVariable(prefix + 'vnfModelInvariantUuid', vnfModelInvariantUuid)
+ logDebug("vnfModelInvariantUuid: " + vnfModelInvariantUuid, isDebugLogEnabled)
+
+ def vnfType = execution.getVariable('vnfType')
+ execution.setVariable(prefix + 'vnfType', vnfType)
+
+ def userParams = reqMap.requestDetails?.requestParameters?.userParams
+
+ Map<String, String> userParamsMap = [:]
+ if (userParams != null) {
+ userParams.each { userParam ->
+ userParamsMap.put(userParam.name, userParam.value)
+ }
+ }
+
+ utils.log("DEBUG", 'Processed user params: ' + userParamsMap, isDebugLogEnabled)
+
+ execution.setVariable(prefix + 'vfModuleInputParams', userParamsMap)
+
+ def requestId = execution.getVariable("mso-request-id")
+ execution.setVariable(prefix + 'requestId', requestId)
+
+
+ def vnfName = reqMap.requestDetails?.requestInfo?.instanceName ?: null
+ execution.setVariable(prefix + 'vnfName', vnfName)
+
+ def requestorId = reqMap.requestDetails?.requestInfo?.requestorId ?: null
+ execution.setVariable(prefix + 'requestorId', requestorId)
+
+ def usePreload = reqMap.requestDetails?.requestParameters?.usePreload
+ execution.setVariable(prefix + 'usePreload', usePreload)
+
+ def cloudConfiguration = jsonOutput.toJson(reqMap.requestDetails?.cloudConfiguration)
+ execution.setVariable(prefix + 'cloudConfiguration', cloudConfiguration)
+ def lcpCloudRegionId = jsonUtils.getJsonValue(cloudConfiguration, "lcpCloudRegionId")
+ execution.setVariable(prefix + 'lcpCloudRegionId', lcpCloudRegionId)
+ def tenantId = jsonUtils.getJsonValue(cloudConfiguration, "tenantId")
+ execution.setVariable(prefix + 'tenantId', tenantId)
+
+ def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: ''
+ execution.setVariable(prefix + 'globalSubscriberId', globalSubscriberId)
+
+ execution.setVariable(prefix + 'sdncVersion', '1702')
+
+ execution.setVariable("ReplaceVnfInfraSuccessIndicator", false)
+
+ execution.setVariable("isDebugLogEnabled", isDebugLogEnabled)
+
+ def source = reqMap.requestDetails?.requestInfo?.source
+ execution.setVariable(prefix + "source", source)
+
+ //For Completion Handler & Fallout Handler
+ String requestInfo =
+ """<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-id>${requestId}</request-id>
+ <action>REPLACE</action>
+ <source>${source}</source>
+ </request-info>"""
+
+ execution.setVariable(prefix + "requestInfo", requestInfo)
+
+ logDebug('RequestInfo: ' + execution.getVariable(prefix + "requestInfo"), isDebugLogEnabled)
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+
+ }
+ catch(groovy.json.JsonException je) {
+ utils.log("DEBUG", " Request is not in JSON format.", isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format")
+
+ }
+ catch(Exception e) {
+ String restFaultMessage = e.getMessage()
+ utils.log("ERROR", " Exception Encountered - " + "\n" + restFaultMessage, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage)
+ }
+ }
+
+ /**
+ * Prepare and send the sychronous response for this flow.
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void sendSynchResponse(Execution execution) {
+ def method = getClass().getSimpleName() + '.sendSynchResponse(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+
+ try {
+ def requestInfo = execution.getVariable('RPLVnfI_requestInfo')
+ def requestId = execution.getVariable('RPLVnfI_requestId')
+ def source = execution.getVariable('RPLVnfI_source')
+ def progress = getNodeTextForce(requestInfo, 'progress')
+ if (progress.isEmpty()) {
+ progress = '0'
+ }
+ def startTime = getNodeTextForce(requestInfo, 'start-time')
+ if (startTime.isEmpty()) {
+ startTime = System.currentTimeMillis()
+ }
+
+ // RESTResponse (for API Handler (APIH) Reply Task)
+ def vnfId = execution.getVariable("vnfId")
+ String synchResponse = """{"requestReferences":{"instanceId":"${vnfId}","requestId":"${requestId}"}}""".trim()
+
+ sendWorkflowResponse(execution, 200, synchResponse)
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage())
+ }
+ }
+
+
+
+ /**
+ * Get VnfResource decomposition object for this VNF.
+ *
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void getVnfResourceDecomposition(Execution execution) {
+ def method = getClass().getSimpleName() + '.getVnfResourceDecomposition(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+ String vnfModelInvariantUuid = execution.getVariable(prefix + 'vnfModelInvariantUuid')
+ logDebug("vnfModelInvariantUuid: " + vnfModelInvariantUuid, isDebugLogEnabled)
+ List<VnfResource> vnfResources = serviceDecomposition.getServiceVnfs()
+
+ for (i in 0..vnfResources.size()-1) {
+ ModelInfo modelInfo = vnfResources[i].getModelInfo()
+ String modelInvariantUuidFromDecomposition = modelInfo.getModelInvariantUuid()
+ logDebug("modelInvariantUuidFromDecomposition: " + modelInvariantUuidFromDecomposition, isDebugLogEnabled)
+
+ if (vnfModelInvariantUuid.equals(modelInvariantUuidFromDecomposition)) {
+ VnfResource vnfResourceDecomposition = vnfResources[i]
+ execution.setVariable(prefix + 'vnfResourceDecomposition', vnfResourceDecomposition)
+ def nfRole = vnfResourceDecomposition.getNfRole()
+ execution.setVariable(prefix + 'nfRole', nfRole)
+ logDebug("vnfResourceDecomposition: " + vnfResourceDecomposition.toJsonString(), isDebugLogEnabled)
+ break
+ }
+ else {
+ //exception!
+ }
+
+ }
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in getVnfResourceDecomposition(): ' + e.getMessage())
+ }
+ }
+
+ /**
+ * Check if this VNF is already in maintenance in A&AI.
+ *
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void checkIfVnfInMaintInAAI(Execution execution) {
+ def method = getClass().getSimpleName() + '.checkIfVnfInMaintInAAI(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ execution.setVariable(prefix + 'errorCode', "0")
+ execution.setVariable(prefix + "workStep", "checkIfVnfInMaintInAAI")
+ execution.setVariable("failedActivity", "AAI")
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ def transactionLoggingUuid = UUID.randomUUID().toString()
+ AAIRestClientImpl client = new AAIRestClientImpl()
+ AAIValidatorImpl aaiValidator = new AAIValidatorImpl()
+ aaiValidator.setClient(client)
+ def vnfId = execution.getVariable("vnfId")
+ boolean isInMaint = aaiValidator.isVNFLocked(vnfId, transactionLoggingUuid)
+ logDebug("isInMaint result: " + isInMaint, isDebugLogEnabled)
+ execution.setVariable(prefix + 'isVnfInMaintenance', isInMaint)
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ execution.setVariable(prefix + "errorCode", "1002")
+ execution.setVariable(prefix + "errorText", e.getMessage())
+ //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage())
+ }
+ }
+
+
+ /**
+ * Check if this VNF's pservers are locked in A&AI.
+ *
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void checkIfPserversInMaintInAAI(Execution execution) {
+ def method = getClass().getSimpleName() + '.checkIfPserversInMaintInAAI(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ execution.setVariable(prefix + 'errorCode', "0")
+ logDebug('Entered ' + method, isDebugLogEnabled)
+ execution.setVariable(prefix + "workStep", "checkIfPserversInMaintInAAI")
+ execution.setVariable("failedActivity", "AAI")
+
+ try {
+ def transactionLoggingUuid = UUID.randomUUID().toString()
+ AAIRestClientImpl client = new AAIRestClientImpl()
+ AAIValidatorImpl aaiValidator = new AAIValidatorImpl()
+ aaiValidator.setClient(client)
+ def vnfId = execution.getVariable("vnfId")
+ boolean areLocked = aaiValidator.isPhysicalServerLocked(vnfId, transactionLoggingUuid)
+ logDebug("areLocked result: " + areLocked, isDebugLogEnabled)
+ execution.setVariable(prefix + 'arePserversLocked', areLocked)
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ execution.setVariable(prefix + "errorCode", "1002")
+ execution.setVariable(prefix + "errorText", e.getMessage())
+ //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfPserversInMaintInAAI(): ' + e.getMessage())
+ }
+ }
+
+ /**
+ * Set inMaint flag for this VNF to the specified value in A&AI.
+ *
+ *
+ * @param execution The flow's execution instance.
+ * @param inMaint The boolean value of the flag to set
+ */
+ public void setVnfInMaintFlagInAAI(Execution execution, boolean inMaint) {
+ def method = getClass().getSimpleName() + '.setVnfInMaintFlagInAAI(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ execution.setVariable(prefix + 'errorCode', "0")
+ logDebug('Entered ' + method, isDebugLogEnabled)
+ if (inMaint) {
+ execution.setVariable(prefix + "workStep", "setVnfInMaintFlagInAAI")
+ }
+ else {
+ execution.setVariable(prefix + "workStep", "unsetVnfInMaintFlagInAAI")
+ }
+ execution.setVariable("failedActivity", "AAI")
+
+ try {
+ def transactionLoggingUuid = UUID.randomUUID().toString()
+ AAIRestClientImpl client = new AAIRestClientImpl()
+ AAIUpdatorImpl aaiUpdator = new AAIUpdatorImpl()
+ aaiUpdator.setClient(client)
+ def vnfId = execution.getVariable("vnfId")
+ if (inMaint) {
+ aaiUpdator.updateVnfToLocked(vnfId, transactionLoggingUuid)
+ }
+ else {
+ aaiUpdator.updateVnfToUnLocked(vnfId, transactionLoggingUuid)
+ }
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ execution.setVariable(prefix + "errorCode", "1002")
+ execution.setVariable(prefix + "errorText", e.getMessage())
+ //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in setVnfInMaintFlagInAAI(): ' + e.getMessage())
+ }
+ }
+
+ /**
+ * Call APP-C client to execute specified APP-C command for this VNF.
+ *
+ *
+ * @param execution The flow's execution instance.
+ * @param action The action to take in APP-C.
+ */
+ public void runAppcCommand(Execution execution, Action action) {
+ def method = getClass().getSimpleName() + '.runAppcCommand(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ execution.setVariable(prefix + 'errorCode', "0")
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ logDebug("Running APP-C action: " + action.toString(), isDebugLogEnabled)
+ String vnfId = execution.getVariable('vnfId')
+ String msoRequestId = execution.getVariable(prefix + 'requestId')
+ execution.setVariable('msoRequestId', msoRequestId)
+ execution.setVariable(prefix + "failedActivity", "APP-C")
+
+ ApplicationControllerSupport support = new ApplicationControllerSupport()
+ appcClient.appCSupport=support
+ org.springframework.test.util.ReflectionTestUtils.setField(support, "lcmModelPackage", "org.openecomp.appc.client.lcm.model");
+ Flags flags = new Flags();
+ ActionIdentifiers actionIdentifiers = new ActionIdentifiers();
+ actionIdentifiers.setVnfId(vnfId);
+ Status appcStatus
+ switch(action) {
+ case Action.Lock:
+ execution.setVariable(prefix + 'workStep', "LockVNF")
+ appcStatus = appcClient.runCommand(Action.Lock,actionIdentifiers,flags,null,msoRequestId)
+ break
+ case Action.Unlock:
+ execution.setVariable(prefix + 'workStep', "UnlockVNF")
+ appcStatus = appcClient.runCommand(Action.Unlock,actionIdentifiers,flags,null,msoRequestId)
+ break
+ case Action.HealthCheck:
+ def healthCheckIndex = execution.getVariable(prefix + 'healthCheckIndex')
+ execution.setVariable(prefix + 'workStep', "HealthCheckVNF" + healthCheckIndex)
+ execution.setVariable(prefix + 'healthCheckIndex', healthCheckIndex + 1)
+ appcStatus = appcClient.runCommand(Action.HealthCheck,actionIdentifiers,flags,null,msoRequestId)
+ break
+ case Action.Start:
+ execution.setVariable(prefix + 'workStep', "StartVNF")
+ appcStatus = appcClient.runCommand(Action.Start,actionIdentifiers,flags,null,msoRequestId)
+ break
+ case Action.Stop:
+ execution.setVariable(prefix + 'workStep', "StopVNF")
+ appcStatus = appcClient.runCommand(Action.Stop,actionIdentifiers,flags,null,msoRequestId)
+ break
+ default:
+ break
+ }
+ logDebug("Completed AppC request", isDebugLogEnabled)
+ int appcCode = appcStatus.getCode()
+ logDebug("AppC status code is: " + appcCode, isDebugLogEnabled)
+ logDebug("AppC status message is: " + appcStatus.getMessage(), isDebugLogEnabled)
+ if (support.getCategoryOf(appcStatus) == ApplicationControllerSupport.StatusCategory.ERROR) {
+ execution.setVariable(prefix + "errorCode", Integer.toString(appcCode))
+ execution.setVariable(prefix + "errorText", appcStatus.getMessage())
+ }
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ logError('Caught exception in ' + method, e)
+ execution.setVariable(prefix + "errorCode", "1002")
+ execution.setVariable(prefix + "errorText", e.getMessage())
+ //throw e;
+ } catch (java.lang.NoSuchMethodError e) {
+ logError('Caught exception in ' + method, e)
+ execution.setVariable(prefix + "errorCode", "1002")
+ execution.setVariable(prefix + "errorText", e.getMessage())
+ //throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ execution.setVariable(prefix + "errorCode", "1002")
+ execution.setVariable(prefix + "errorText", e.getMessage())
+
+ //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in ' + method + ': ' + e.getMessage())
+ }
+ }
+
+
+
+
+ /**
+ * Builds a "CompletionHandler" request and stores it in the specified execution variable.
+ *
+ * @param execution the execution
+ * @param resultVar the execution variable in which the result will be stored
+ */
+ public void completionHandlerPrep(Execution execution, String resultVar) {
+ def method = getClass().getSimpleName() + '.completionHandlerPrep(' +
+ 'execution=' + execution.getId() +
+ ', resultVar=' + resultVar +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ def requestInfo = getVariable(execution, 'RPLVnfI_requestInfo')
+
+ appcClient.shutdownclient()
+
+ String content = """
+ <sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:reqtype="http://org.openecomp/mso/request/types/v1">
+ ${requestInfo}
+ <sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name>
+ </sdncadapterworkflow:MsoCompletionRequest>
+ """
+
+ content = utils.formatXml(content)
+ logDebug(resultVar + ' = ' + System.lineSeparator() + content, isDebugLogEnabled)
+ execution.setVariable(resultVar, content)
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error')
+ }
+ }
+
+ /**
+ * Prepare DoDeleteVnfAndModules call.
+ *
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void prepDoDeleteVnfAndModules(Execution execution) {
+ def method = getClass().getSimpleName() + '.prepDoDeleteVnfAndModules(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ execution.setVariable(prefix + 'errorCode', "0")
+ logDebug('Entered ' + method, isDebugLogEnabled)
+ execution.setVariable(prefix + "workStep", "doDeleteVnfAndModules")
+ execution.setVariable("failedActivity", "MSO Delete VNF")
+ logDebug('Exited ' + method, isDebugLogEnabled)
+
+ }
+
+ /**
+ * Prepare DoCreateVnfAndModules call.
+ *
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void prepDoCreateVnfAndModules(Execution execution) {
+ def method = getClass().getSimpleName() + '.prepDoReplaceVnfAndModules(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ execution.setVariable(prefix + 'errorCode', "0")
+ logDebug('Entered ' + method, isDebugLogEnabled)
+ execution.setVariable(prefix + "workStep", "doReplaceVnfAndModules")
+ execution.setVariable("failedActivity", "MSO Replace VNF")
+ logDebug('Exited ' + method, isDebugLogEnabled)
+
+ }
+
+ /**
+ * Builds a "FalloutHandler" request and stores it in the specified execution variable.
+ *
+ * @param execution the execution
+ * @param resultVar the execution variable in which the result will be stored
+ */
+ public void falloutHandlerPrep(Execution execution, String resultVar) {
+ def method = getClass().getSimpleName() + '.falloutHandlerPrep(' +
+ 'execution=' + execution.getId() +
+ ', resultVar=' + resultVar +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ def prefix = execution.getVariable('prefix')
+ def request = getVariable(execution, prefix+'Request')
+ def requestInformation = execution.getVariable(prefix + "requestInfo")
+
+ appcClient.shutdownclient()
+
+ def WorkflowException workflowException = execution.getVariable("WorkflowException")
+ def errorResponseCode = workflowException.getErrorCode()
+ def errorResponseMsg = workflowException.getErrorMessage()
+ def encErrorResponseMsg = ""
+ if (errorResponseMsg != null) {
+ encErrorResponseMsg = errorResponseMsg.replace("&", "&").replace("<", "<").replace(">", ">")
+ }
+
+ String content = """
+ <sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:reqtype="http://org.openecomp/mso/request/types/v1"
+ xmlns:msoservtypes="http://org.openecomp/mso/request/types/v1"
+ xmlns:structuredtypes="http://org.openecomp/mso/structured/types/v1">
+ ${requestInformation}
+ <sdncadapterworkflow:WorkflowException>
+ <sdncadapterworkflow:ErrorMessage>${encErrorResponseMsg}</sdncadapterworkflow:ErrorMessage>
+ <sdncadapterworkflow:ErrorCode>${errorResponseCode}</sdncadapterworkflow:ErrorCode>
+ </sdncadapterworkflow:WorkflowException>
+ </sdncadapterworkflow:FalloutHandlerRequest>
+ """
+ content = utils.formatXml(content)
+ logDebug(resultVar + ' = ' + System.lineSeparator() + content, isDebugLogEnabled)
+ execution.setVariable(resultVar, content)
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ exceptionUtil.buildWorkflowException(execution, 2000, 'Internal Error')
+ }
+ }
+
+ /**
+ * Handle Abort disposition from RainyDayHandler
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void abortProcessing(Execution execution) {
+ def method = getClass().getSimpleName() + '.abortProcessing(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ def errorText = execution.getVariable(prefix + "errorText")
+ def errorCode = execution.getVariable(prefix + "errorCode")
+
+ exceptionUtil.buildAndThrowWorkflowException(execution, errorCode as Integer, errorText)
+ }
+
+ /**
+ * Handle Manual disposition from RainyDayHandler
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void manualProcessing(Execution execution) {
+ def method = getClass().getSimpleName() + '.manualProcessing(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ def taskId = execution.getVariable("RPLVnfI_taskId")
+
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Processing halted - manual task created: " + taskId)
+ }
+
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstance.groovy index 68b0e58b57..c1a32c7bf9 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstance.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstance.groovy @@ -102,7 +102,6 @@ public class UpdateNetworkInstance extends AbstractServiceTaskProcessor { utils.log("DEBUG", " 'disableRollback' : " + execution.getVariable("disableRollback") , isDebugEnabled) } - // get/set 'msoRequestId' and 'mso-request-id' String requestId = execution.getVariable("msoRequestId") if (requestId != null) { execution.setVariable("mso-request-id", requestId) @@ -184,15 +183,12 @@ public class UpdateNetworkInstance extends AbstractServiceTaskProcessor { try { - // "networkModelInfo" is expected to be sent - String networkModelInfo = execution.getVariable("networkModelInfo") - utils.log("DEBUG", " networkModelInfo - " + networkModelInfo, isDebugEnabled) - - // "serviceModelInfo" is expected to be sent - String serviceModelInfo = execution.getVariable("serviceModelInfo") - utils.log("DEBUG", " serviceModelInfo - " + serviceModelInfo, isDebugEnabled) - - + // For Ala-Carte (sdnc = 1610): + // 1. the Network ModelInfo is expected to be sent + // via requestDetails.modelInfo (modelType = network), ex: modelCustomizationId + // 2. the Service ModelInfo is expected to be sent but will be IGNORE + // via requestDetails.relatedInstanceList.relatedInstance.modelInfo (modelType = service) + } catch (Exception ex) { sendSyncError(execution) String exceptionMessage = "Bpmn error encountered in UpdateNetworkInstance flow. getNetworkModelInfo() - " + ex.getMessage() @@ -233,6 +229,9 @@ public class UpdateNetworkInstance extends AbstractServiceTaskProcessor { try { utils.log("DEBUG", " ***** Inside prepareDBRequestError() of UpdateNetworkInstance ***** ", isDebugEnabled) + // set DB Header Authorization + setBasicDBAuthHeader(execution, isDebugEnabled) + String statusMessage = "" WorkflowException wfe = null if (execution.getVariable("WorkflowException") instanceof WorkflowException) { @@ -378,12 +377,16 @@ public class UpdateNetworkInstance extends AbstractServiceTaskProcessor { def isDebugEnabled=execution.getVariable("isDebugLogEnabled") execution.setVariable("prefix", Prefix) + utils.log("DEBUG", "DB updateInfraRequest ResponseCode: " + execution.getVariable(Prefix + "dbReturnCode"), isDebugEnabled) + utils.log("DEBUG", "DB updateInfraRequest Response: " + execution.getVariable(Prefix + "createDBResponse"), isDebugEnabled) + utils.log("DEBUG", " ***** Prepare for FalloutHandler. FAILURE - prepare request for sub-process FalloutHandler. *****", isDebugEnabled) - + String falloutHandlerRequest = "" String requestId = execution.getVariable("mso-request-id") try { + WorkflowException wfe = execution.getVariable("WorkflowException") String errorCode = String.valueOf(wfe.getErrorCode()) String errorMessage = wfe.getErrorMessage() @@ -407,8 +410,8 @@ public class UpdateNetworkInstance extends AbstractServiceTaskProcessor { utils.log("DEBUG", " Overall Error Response going to FalloutHandler: " + "\n" + falloutHandlerRequest, isDebugEnabled) } catch (Exception ex) { - String errorException = " Bpmn error encountered in UpdateNetworkInstance flow. FalloutHandlerRequest, buildErrorResponse() - " + ex.getMessage() - utils.log("DEBUG", errorException, isDebugEnabled) + String errorException = " Bpmn error encountered in UpdateNetworkInstance flow. FalloutHandlerRequest, buildErrorResponse() - " + utils.log("DEBUG", "Exception error in UpdateNetworkInstance flow, buildErrorResponse(): " + ex.getMessage(), isDebugEnabled) falloutHandlerRequest = """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1" xmlns:ns="http://org.openecomp/mso/request/types/v1" diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfra.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfra.groovy index d0949ae4d1..7389ff0916 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfra.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfra.groovy @@ -20,6 +20,7 @@ package org.openecomp.mso.bpmn.infrastructure.scripts +import groovy.json.JsonOutput import groovy.json.JsonSlurper import groovy.util.Node import groovy.util.XmlParser; @@ -69,40 +70,148 @@ public class UpdateVfModuleInfra extends AbstractServiceTaskProcessor { * @param execution The flow's execution instance. */ public void preProcessRequest(Execution execution) { + def method = getClass().getSimpleName() + '.preProcessRequest(' + - 'execution=' + execution.getId() + - ')' + 'execution=' + execution.getId() + + ')' def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') logDebug('Entered ' + method, isDebugLogEnabled) initProcessVariables(execution) - def prefix = "UPDVfModI_" - - execution.setVariable("isVidRequest", "false") + def prefix = "UPDVfModI_" def incomingRequest = execution.getVariable('bpmnRequest') utils.log("DEBUG", "Incoming Infra Request: " + incomingRequest, isDebugLogEnabled) - - // check if request is xml or json try { def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() Map reqMap = jsonSlurper.parseText(incomingRequest) utils.log("DEBUG", " Request is in JSON format.", isDebugLogEnabled) def serviceInstanceId = execution.getVariable('serviceInstanceId') def vnfId = execution.getVariable('vnfId') - - def vidUtils = new VidUtils(this) - - String requestInXmlFormat = vidUtils.createXmlVfModuleRequest(execution, reqMap, 'UPDATE_VF_MODULE', serviceInstanceId) - - utils.log("DEBUG", " Request in XML format: " + requestInXmlFormat, isDebugLogEnabled) - - execution.setVariable(prefix + 'Request', requestInXmlFormat) + + execution.setVariable(prefix + 'serviceInstanceId', serviceInstanceId) execution.setVariable(prefix+'vnfId', vnfId) execution.setVariable("isVidRequest", "true") + + def vnfName = '' + def asdcServiceModelVersion = '' + def serviceModelInfo = null + def vnfModelInfo = null + + def relatedInstanceList = reqMap.requestDetails?.relatedInstanceList + + if (relatedInstanceList != null) { + relatedInstanceList.each { + if (it.relatedInstance.modelInfo?.modelType == 'service') { + asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion + serviceModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo) + + } + if (it.relatedInstance.modelInfo.modelType == 'vnf') { + vnfName = it.relatedInstance.instanceName ?: '' + vnfModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo) + } + } + } + + execution.setVariable(prefix + 'vnfName', vnfName) + execution.setVariable(prefix + 'asdcServiceModelVersion', asdcServiceModelVersion) + execution.setVariable(prefix + 'serviceModelInfo', serviceModelInfo) + execution.setVariable(prefix + 'vnfModelInfo', vnfModelInfo) + + def vnfType = execution.getVariable('vnfType') + execution.setVariable(prefix + 'vnfType', vnfType) + def vfModuleId = execution.getVariable('vfModuleId') + execution.setVariable(prefix + 'vfModuleId', vfModuleId) + def volumeGroupId = execution.getVariable('volumeGroupId') + execution.setVariable(prefix + 'volumeGroupId', volumeGroupId) + def userParams = reqMap.requestDetails?.requestParameters?.userParams + + Map<String, String> userParamsMap = [:] + if (userParams != null) { + userParams.each { userParam -> + userParamsMap.put(userParam.name, userParam.value) + } + } + + utils.log("DEBUG", 'Processed user params: ' + userParamsMap, isDebugLogEnabled) + + execution.setVariable(prefix + 'vfModuleInputParams', userParamsMap) + + def isBaseVfModule = "false" + if (execution.getVariable('isBaseVfModule') == true) { + isBaseVfModule = "true" + } + + execution.setVariable(prefix + 'isBaseVfModule', isBaseVfModule) + + def requestId = execution.getVariable("mso-request-id") + execution.setVariable(prefix + 'requestId', requestId) + + def vfModuleModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo) + execution.setVariable(prefix + 'vfModuleModelInfo', vfModuleModelInfo) + + def suppressRollback = reqMap.requestDetails?.requestInfo?.suppressRollback + + + def backoutOnFailure = "" + if(suppressRollback != null){ + if ( suppressRollback == true) { + backoutOnFailure = "false" + } else if ( suppressRollback == false) { + backoutOnFailure = "true" + } + } + + execution.setVariable('disableRollback', suppressRollback) + + def vfModuleName = reqMap.requestDetails?.requestInfo?.instanceName ?: null + execution.setVariable(prefix + 'vfModuleName', vfModuleName) + + def serviceId = reqMap.requestDetails?.requestParameters?.serviceId ?: '' + execution.setVariable(prefix + 'serviceId', serviceId) + + def usePreload = reqMap.requestDetails?.requestParameters?.usePreload + execution.setVariable(prefix + 'usePreload', usePreload) + + def cloudConfiguration = reqMap.requestDetails?.cloudConfiguration + def lcpCloudRegionId = cloudConfiguration.lcpCloudRegionId + execution.setVariable(prefix + 'lcpCloudRegionId', lcpCloudRegionId) + def tenantId = cloudConfiguration.tenantId + execution.setVariable(prefix + 'tenantId', tenantId) + + def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: '' + execution.setVariable(prefix + 'globalSubscriberId', globalSubscriberId) + + execution.setVariable(prefix + 'sdncVersion', '1702') + + execution.setVariable("UpdateVfModuleInfraSuccessIndicator", false) + + execution.setVariable("isDebugLogEnabled", isDebugLogEnabled) + + + def source = reqMap.requestDetails?.requestInfo?.source + execution.setVariable(prefix + "source", source) + + //For Completion Handler & Fallout Handler + String requestInfo = + """<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1"> + <request-id>${requestId}</request-id> + <action>UPDATE</action> + <source>${source}</source> + </request-info>""" + + execution.setVariable(prefix + "requestInfo", requestInfo) + + //backoutOnFailure + + logDebug('RequestInfo: ' + execution.getVariable(prefix + "requestInfo"), isDebugLogEnabled) + + logDebug('Exited ' + method, isDebugLogEnabled) } catch(groovy.json.JsonException je) { @@ -114,35 +223,7 @@ public class UpdateVfModuleInfra extends AbstractServiceTaskProcessor { String restFaultMessage = e.getMessage() utils.log("ERROR", " Exception Encountered - " + "\n" + restFaultMessage, isDebugLogEnabled) exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage) - } - - - try { - - String request = validateInfraRequest(execution) - - def requestInfo = getRequiredNodeXml(execution, request, 'request-info') - execution.setVariable('UPDVfModI_requestInfo', requestInfo) - execution.setVariable('UPDVfModI_requestId', getRequiredNodeText(execution, requestInfo, 'request-id')) - execution.setVariable('UPDVfModI_source', getNodeTextForce(requestInfo, 'source')) - - def vnfInputs = getRequiredNodeXml(execution, request, 'vnf-inputs') - execution.setVariable('UPDVfModI_vnfInputs', vnfInputs) - execution.setVariable('UPDVfModI_vnfId', getRequiredNodeText(execution, vnfInputs, 'vnf-id')) - execution.setVariable('UPDVfModI_vfModuleId', getRequiredNodeText(execution, vnfInputs, 'vf-module-id')) - execution.setVariable('UPDVfModI_tenantId', getRequiredNodeText(execution, vnfInputs, 'tenant-id')) - execution.setVariable('UPDVfModI_volumeGroupId', getNodeTextForce(vnfInputs, 'volume-group-id')) - - def vnfParams = utils.getNodeXml(request, 'vnf-params') - execution.setVariable('UPDVfModI_vnfParams', vnfParams) - - logDebug('Exited ' + method, isDebugLogEnabled) - } catch (BpmnError e) { - throw e; - } catch (Exception e) { - logError('Caught exception in ' + method, e) - exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessRequest(): ' + e.getMessage()) - } + } } /** @@ -322,7 +403,7 @@ public class UpdateVfModuleInfra extends AbstractServiceTaskProcessor { try { def prefix = execution.getVariable('prefix') def request = getVariable(execution, prefix+'Request') - def requestInformation = utils.getNodeXml(request, 'request-info', false) + def requestInformation = execution.getVariable(prefix + "requestInfo") def WorkflowException workflowException = execution.getVariable("WorkflowException") def errorResponseCode = workflowException.getErrorCode() diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfraV2.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfraV2.groovy new file mode 100644 index 0000000000..eefe33d725 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfraV2.groovy @@ -0,0 +1,473 @@ +/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.bpmn.infrastructure.scripts
+
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+import groovy.util.Node
+import groovy.util.XmlParser;
+import groovy.xml.QName
+import inventory.aai.att.com.v10.GenericVnf
+import inventory.aai.att.com.v10.GenericVnfs
+import inventory.aai.att.com.v10.Pserver
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.impl.cmd.AbstractSetVariableCmd
+import org.camunda.bpm.engine.runtime.Execution
+
+import java.io.Serializable;
+import java.util.List
+
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.rest.APIResponse
+import org.openecomp.mso.rest.RESTClient
+import org.openecomp.mso.rest.RESTConfig
+import org.springframework.beans.factory.annotation.Autowired
+
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.common.scripts.VidUtils
+import org.openecomp.mso.bpmn.core.RollbackData
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.client.aai.AAIValidatorImpl
+import org.openecomp.mso.client.aai.AAIUpdatorImpl
+import org.openecomp.mso.client.appc.ApplicationControllerClient
+import org.openecomp.mso.client.sdno.SDNOValidatorImpl
+
+
+
+public class UpdateVfModuleInfraV2 {
+
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+ boolean preProcessRequestCheck = true;
+ boolean sendSynchResponseCheck = true;
+ boolean checkPserverFlagCheck = true;
+ boolean vfFlagCheckSetCheck = true;
+ boolean lockAppCCheck = true;
+ boolean healthDiagnosticSDNOCheck = true;
+ boolean healthCheckAppCCheck = true;
+ boolean stopVfModuleControllerCheck = true;
+ boolean healthCheckControllerCheck = true;
+ boolean doUpdateVfModulePrepCheck = true;
+ boolean completionHandlerPrepCheck = true;
+ boolean startVfModuleControllerCheck = true;
+ boolean vFFlagUnsetCheck = true;
+ boolean unlockAppCCheck = true;
+ boolean postUpgradeHealthCheckControllerCheck = true;
+
+
+
+ public void initProcessVariables(Execution execution) {
+ execution.setVariable('prefix', 'UPDVfModI_')
+ execution.setVariable('UPDVfModI_Request', null)
+ execution.setVariable('UPDVfModI_requestInfo', null)
+ execution.setVariable('UPDVfModI_requestId', null)
+ execution.setVariable('UPDVfModI_source', null)
+ execution.setVariable('UPDVfModI_vnfInputs', null)
+ execution.setVariable('UPDVfModI_vnfId', null)
+ execution.setVariable('UPDVFModI_moduleUuid', null)
+ execution.setVariable('UPDVfModI_vfModuleId', null)
+ execution.setVariable('UPDVfModI_tenantId', null)
+ execution.setVariable('UPDVfModI_volumeGroupId', null)
+ execution.setVariable('UPDVfModI_vnfParams', null)
+ execution.setVariable('UPDVfModI_updateInfraRequest', null)
+ execution.setVariable('UpdateVfModuleSuccessIndicator', false)
+ }
+
+ /**
+ * Check for missing elements in the received request.
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void preProcessRequest(Execution execution) {
+ System.out.print("*****************************PreProcessRequest**************************")
+
+ def method = getClass().getSimpleName() + '.preProcessRequest(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ //logDebug('Entered ' + method, isDebugLogEnabled)
+
+ initProcessVariables(execution)
+
+ def prefix = "UPDVfModI_"
+
+ def incomingRequest = execution.getVariable('bpmnRequest')
+
+ //utils.log("DEBUG", "Incoming Infra Request: " + incomingRequest, isDebugLogEnabled)
+ try {
+ def jsonSlurper = new JsonSlurper()
+ def jsonOutput = new JsonOutput()
+ Map reqMap = jsonSlurper.parseText(incomingRequest)
+ //utils.log("DEBUG", " Request is in JSON format.", isDebugLogEnabled)
+
+ def serviceInstanceId = execution.getVariable('serviceInstanceId')
+ def vnfId = execution.getVariable('vnfId')
+ def moduleUuid = execution.getVariable('moduleUuid')
+ execution.setVariable(prefix + 'moduleUuid',moduleUuid)
+ execution.setVariable(prefix + 'serviceInstanceId', serviceInstanceId)
+ execution.setVariable(prefix+'vnfId', vnfId)
+ execution.setVariable("isVidRequest", "true")
+
+ def vnfName = ''
+ def asdcServiceModelVersion = ''
+ def serviceModelInfo = null
+ def vnfModelInfo = null
+
+ def relatedInstanceList = reqMap.requestDetails?.relatedInstanceList
+
+ if (relatedInstanceList != null) {
+ relatedInstanceList.each {
+ if (it.relatedInstance.modelInfo?.modelType == 'service') {
+ asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion
+ serviceModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo)
+ }
+ if (it.relatedInstance.modelInfo.modelType == 'vnf') {
+ vnfName = it.relatedInstance.instanceName ?: ''
+ vnfModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo)
+ }
+ }
+ }
+
+ execution.setVariable(prefix + 'vnfName', vnfName)
+ execution.setVariable(prefix + 'asdcServiceModelVersion', asdcServiceModelVersion)
+ execution.setVariable(prefix + 'serviceModelInfo', serviceModelInfo)
+ execution.setVariable(prefix + 'vnfModelInfo', vnfModelInfo)
+
+ def vnfType = execution.getVariable('vnfType')
+ execution.setVariable(prefix + 'vnfType', vnfType)
+ def vfModuleId = execution.getVariable('vfModuleId')
+ execution.setVariable(prefix + 'vfModuleId', vfModuleId)
+ def volumeGroupId = execution.getVariable('volumeGroupId')
+ execution.setVariable(prefix + 'volumeGroupId', volumeGroupId)
+ def userParams = reqMap.requestDetails?.requestParameters?.userParams
+
+ Map<String, String> userParamsMap = [:]
+ if (userParams != null) {
+ userParams.each { userParam ->
+ userParamsMap.put(userParam.name, userParam.value)
+ }
+ }
+
+ //utils.log("DEBUG", 'Processed user params: ' + userParamsMap, isDebugLogEnabled)
+
+ execution.setVariable(prefix + 'vfModuleInputParams', userParamsMap)
+
+ def isBaseVfModule = "false"
+ if (execution.getVariable('isBaseVfModule') == true) {
+ isBaseVfModule = "true"
+ }
+
+ execution.setVariable(prefix + 'isBaseVfModule', isBaseVfModule)
+
+ def requestId = execution.getVariable("mso-request-id")
+ execution.setVariable(prefix + 'requestId', requestId)
+
+ def vfModuleModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo)
+ execution.setVariable(prefix + 'vfModuleModelInfo', vfModuleModelInfo)
+
+ def suppressRollback = reqMap.requestDetails?.requestInfo?.suppressRollback
+
+
+ def backoutOnFailure = ""
+ if(suppressRollback != null){
+ if ( suppressRollback == true) {
+ backoutOnFailure = "false"
+ } else if ( suppressRollback == false) {
+ backoutOnFailure = "true"
+ }
+ }
+
+ execution.setVariable('disableRollback', suppressRollback)
+
+ def vfModuleName = reqMap.requestDetails?.requestInfo?.instanceName ?: null
+ execution.setVariable(prefix + 'vfModuleName', vfModuleName)
+
+ def serviceId = reqMap.requestDetails?.requestParameters?.serviceId ?: ''
+ execution.setVariable(prefix + 'serviceId', serviceId)
+
+ def usePreload = reqMap.requestDetails?.requestParameters?.usePreload
+ execution.setVariable(prefix + 'usePreload', usePreload)
+
+ def cloudConfiguration = reqMap.requestDetails?.cloudConfiguration
+ def lcpCloudRegionId = cloudConfiguration.lcpCloudRegionId
+ execution.setVariable(prefix + 'lcpCloudRegionId', lcpCloudRegionId)
+ def tenantId = cloudConfiguration.tenantId
+ execution.setVariable(prefix + 'tenantId', tenantId)
+
+ def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: ''
+ execution.setVariable(prefix + 'globalSubscriberId', globalSubscriberId)
+
+ execution.setVariable(prefix + 'sdncVersion', '1702')
+
+ execution.setVariable("UpdateVfModuleInfraSuccessIndicator", false)
+
+ execution.setVariable("isDebugLogEnabled", isDebugLogEnabled)
+
+
+ def source = reqMap.requestDetails?.requestInfo?.source
+ execution.setVariable(prefix + "source", source)
+
+ //For Completion Handler & Fallout Handler
+ String requestInfo =
+ """<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-id>${requestId}</request-id>
+ <action>UPDATE</action>
+ <source>${source}</source>
+ </request-info>"""
+
+ execution.setVariable(prefix + "requestInfo", requestInfo)
+
+ //backoutOnFailure
+
+ //logDebug('RequestInfo: ' + execution.getVariable(prefix + "requestInfo"), isDebugLogEnabled)
+
+ //logDebug('Exited ' + method, isDebugLogEnabled)
+
+ }
+ catch(groovy.json.JsonException je) {
+ //utils.log("DEBUG", " Request is not in JSON format.", isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format")
+ }
+ catch(Exception e) {
+ String restFaultMessage = e.getMessage()
+ //utils.log("ERROR", " Exception Encountered - " + "\n" + restFaultMessage, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage)
+ }
+ }
+
+ /**
+ * Prepare and send the synchronous response for this flow.
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void sendSynchResponse(Execution execution) {
+ System.out.print("*****************************SendSynchResponse**************************")
+
+ def method = getClass().getSimpleName() + '.sendSynchResponse(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ //logDebug('Entered ' + method, isDebugLogEnabled)
+
+
+ try {
+ def requestInfo = execution.getVariable('UPDVfModI_requestInfo')
+ def requestId = execution.getVariable('UPDVfModI_requestId')
+ def source = execution.getVariable('UPDVfModI_source')
+
+ def progress = getNodeTextForce(requestInfo, 'progress')
+ if (progress.isEmpty()) {
+ progress = '0'
+ }
+ def startTime = getNodeTextForce(requestInfo, 'start-time')
+ if (startTime.isEmpty()) {
+ startTime = System.currentTimeMillis()
+ }
+ // RESTResponse (for API Handler (APIH) Reply Task)
+ def vfModuleId = execution.getVariable("vfModuleId")
+ String synchResponse = """{"requestReferences":{"instanceId":"${vfModuleId}","requestId":"${requestId}"}}""".trim()
+ sendWorkflowResponse(execution, 200, synchResponse)
+ //logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ //logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage())
+ }
+ }
+
+ //check to see if the Pserver Flag is locked
+ public void checkPserverFlag(Execution execution) {
+
+ System.out.println("*****************************CheckingPserverFlag*************************")
+ String vnfId = (String)execution.getVariable('vnfId')
+ String uuid = (String)execution.getVariable('moduleUuid')
+ AAIValidatorImpl aaiVI = new AAIValidatorImpl()
+ boolean flag = aaiVI.isPhysicalServerLocked(vnfId, uuid)
+ }
+
+ //check to see if the VFFlag is locked
+ public void vfFlagCheck(Execution execution) {
+
+ System.out.print("*****************************VfFlagCheck*************************")
+ String vnfId = (String)execution.getVariable('vnfId')
+ String uuid = (String)execution.getVariable('moduleUuid')
+ AAIValidatorImpl aaiVI = new AAIValidatorImpl()
+ boolean flag = aaiVI.isVNFLocked(vnfId, uuid)
+
+ }
+ //lock the VF Flag
+ public void vfFlagSet(Execution execution) {
+
+ System.out.print("*****************************VfFlagSet*************************")
+ String vnfId = (String)execution.getVariable('vnfId')
+ String uuid = (String)execution.getVariable('moduleUuid')
+ AAIValidatorImpl aaiVI = new AAIValidatorImpl()
+ aaiVI.updateVnfToLocked(vnfId,uuid);
+
+ }
+
+ //Lock AppC
+ public void lockAppC(Execution execution) {
+
+ System.out.print("*****************************lockAppC*************************")
+ def vfModuleId = ""
+ ApplicationControllerClient aCC = new ApplicationControllerClient();
+ def status = aCC.runCommand("Lock",vfModuleId)
+
+
+ }
+ //run health check
+ public void healthCheckAppC(Execution execution) {
+
+ System.out.print("*****************************healthCheckAppC*************************")
+ def vfModuleId = ""
+ ApplicationControllerClient aCC = new ApplicationControllerClient();
+ def status = aCC.runCommand("HealthCheck",vfModuleId)
+
+ }
+ //SDNO health diagnostic
+ public void healthDiagnosticSDNO(Execution execution) {
+
+ System.out.print("*****************************healthDiagnosticSDNO is currently ignored*************************")
+ //SDNOValidatorImpl.healthDiagnostic("","");
+
+ }
+ //stop VF module controller
+ public void stopVfModuleController(Execution execution) {
+
+ System.out.print("*****************************stopVfModuleController*************************")
+ def vfModuleId = ""
+ ApplicationControllerClient aCC = new ApplicationControllerClient();
+ def status = aCC.runCommand("Stop",vfModuleId)
+
+
+ }
+
+ public void doUpdateVfModulePrep(Execution execution) {
+
+ System.out.print("*****************************doUpdateVfModulePrep*************************")
+ def method = getClass().getSimpleName() + '.prepDoUpdateVfModule(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ //logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+
+ //logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ //logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepDoUpdateVfModule(): ' + e.getMessage())
+
+ }
+
+ }
+
+ public void completionHandlerPrep(Execution execution,String resultVar) {
+
+ System.out.print("*****************************completionHandlerPrep*************************")
+ def method = getClass().getSimpleName() + '.completionHandlerPrep(' +
+ 'execution=' + execution.getId() +
+ ', resultVar=' + resultVar +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ //logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ def requestInfo = getVariable(execution, 'UPDVfModI_requestInfo')
+
+ String content = """
+ <sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:reqtype="http://org.openecomp/mso/request/types/v1">
+ ${requestInfo}
+ <sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name>
+ </sdncadapterworkflow:MsoCompletionRequest>
+ """
+
+ content = utils.formatXml(content)
+ //logDebug(resultVar + ' = ' + System.lineSeparator() + content, isDebugLogEnabled)
+ execution.setVariable(resultVar, content)
+
+ //logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ //logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error')
+
+ }
+
+ }
+
+ public void healthCheckController(Execution execution) {
+
+ System.out.print("*****************************healthCheckController*************************")
+ def vfModuleId = ""
+ ApplicationControllerClient aCC = new ApplicationControllerClient();
+ def status = aCC.runCommand("HealthCheck",vfModuleId)
+
+ }
+
+ public void startVfModuleController(Execution execution) {
+
+ System.out.print("*****************************startVfModuleController*************************")
+ def vfModuleId = ""
+ ApplicationControllerClient aCC = new ApplicationControllerClient();
+ def status = aCC.runCommand("Start",vfModuleId)
+
+ }
+
+ public void vFFlagUnset(Execution execution) {
+
+ System.out.print("*****************************vFFlagUnset*************************")
+ String vnfId = (String)execution.getVariable('vnfId')
+ String uuid = (String)execution.getVariable('moduleUuid')
+ AAIValidatorImpl aaiVI = new AAIValidatorImpl()
+ aaiVI.updateVnfToUnLocked(vnfId,uuid);
+
+
+ }
+
+ public void unlockAppC(Execution execution) {
+
+ System.out.print("*****************************unlockAppC*************************")
+ def vfModuleId = ""
+ ApplicationControllerClient aCC = new ApplicationControllerClient();
+ def status = aCC.runCommand("Unlock",vfModuleId)
+
+ }
+
+ public void postUpgradeHealthCheckController(Execution execution) {
+
+ System.out.print("*****************************postUpgradeHealthCheckController*************************")
+ def vfModuleId = ""
+ ApplicationControllerClient aCC = new ApplicationControllerClient();
+ def status = aCC.runCommand("HealthCheck",vfModuleId)
+
+ }
+
+}
+
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy index ffe122aed6..e1d567a37d 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy @@ -95,9 +95,10 @@ class UpdateVfModuleVolumeInfraV1 extends VfModuleBase { //need to get persona-model-id aka model-invariantId to use later to validate vf-module relation in AAI
- def modelInvariantId = reqMap.requestDetails.modelInfo.modelInvariantId ?: ''
+ def modelInvariantId = reqMap.requestDetails.modelInfo.modelInvariantUuid ?: ''
execution.setVariable('UPDVfModVol_modelInvariantId', modelInvariantId)
+ utils.log("DEBUG", "modelInvariantId from request: " + modelInvariantId, isDebugLogEnabled)
utils.log("DEBUG", "XML request:\n" + request, isDebugLogEnabled)
}
catch(groovy.json.JsonException je) {
@@ -123,18 +124,8 @@ class UpdateVfModuleVolumeInfraV1 extends VfModuleBase { execution.setVariable('UPDVfModVol_tenantId', getRequiredNodeText(execution, volumeInputs, 'tenant-id'))
//execution.setVariable('UPDVfModVol_modelCustomizationId', getRequiredNodeText(execution, volumeInputs, 'model-customization-id'))
- try {
- // Catalog DB headers Authorization
- String basicAuthValueDB = execution.getVariable("URN_mso_adapters_db_auth")
- utils.log("DEBUG", " Obtained BasicAuth userid password for Catalog DB adapter: " + basicAuthValueDB, isDebugLogEnabled)
-
- def encodedString = utils.getBasicAuth(basicAuthValueDB, execution.getVariable("URN_mso_msoKey"))
- execution.setVariable("BasicAuthHeaderValueDB",encodedString)
- } catch (IOException ex) {
- String dataErrorMessage = " Unable to encode Catalog DB user/password string - " + ex.getMessage()
- utils.log("DEBUG", dataErrorMessage, isDebugLogEnabled)
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
- }
+ setBasicDBAuthHeader(execution, isDebugLogEnabled)
+
def volumeParams = utils.getNodeXml(request, 'volume-params')
execution.setVariable('UPDVfModVol_volumeParams', volumeParams)
}
@@ -303,7 +294,13 @@ class UpdateVfModuleVolumeInfraV1 extends VfModuleBase { utils.logAudit('Query AAI VF Module: ' + queryAAIVfModuleRequest)
logDebug('Query AAI VF Module: ' + queryAAIVfModuleRequest, isDebugLogEnabled)
- APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVfModuleRequest)
+ def aaiUrl = execution.getVariable("URN_aai_endpoint")
+ logDebug('A&AI URL: ' + aaiUrl, isDebugLogEnabled)
+
+ def requestEndpoint = aaiUrl + queryAAIVfModuleRequest
+ logDebug('A&AI request endpoint: ' + requestEndpoint, isDebugLogEnabled)
+
+ APIResponse response = aaiUtil.executeAAIGetCall(execution, requestEndpoint)
String returnCode = response.getStatusCode()
String aaiResponseAsString = response.getResponseBodyAsString()
@@ -318,7 +315,12 @@ class UpdateVfModuleVolumeInfraV1 extends VfModuleBase { ExceptionUtil exceptionUtil = new ExceptionUtil()
if ((returnCode == '200') || (returnCode == '204')) {
- def personaModelId = utils.getNodeText1(aaiResponseAsString, 'persona-model-id')
+ def personaModelId = utils.getNodeText1(aaiResponseAsString, 'model-invariant-id')
+ if(personaModelId == null) {
+ //check old attribute name
+ personaModelId = utils.getNodeText1(aaiResponseAsString, 'persona-model-id')
+ }
+ logDebug("vfModule personaModelId: " + personaModelId, isDebugLogEnabled)
execution.setVariable('UPDVfModVol_personaModelId', personaModelId)
}
else if (returnCode == '404') {
@@ -353,7 +355,11 @@ class UpdateVfModuleVolumeInfraV1 extends VfModuleBase { def aaiVolumeGroupResponse = execution.getVariable('UPDVfModVol_aaiVolumeGroupResponse')
def volumeGroupHeatStackId = getNodeTextForce(aaiVolumeGroupResponse, 'heat-stack-id')
def volumeGroupName = getNodeTextForce(aaiVolumeGroupResponse, 'volume-group-name')
- def modelCustomizationId = getNodeTextForce(aaiVolumeGroupResponse, 'vf-module-persona-model-customization-id')
+ def modelCustomizationId = getNodeTextForce(aaiVolumeGroupResponse, 'vf-module-model-customization-id')
+ if(modelCustomizationId == null) {
+ // Check old attribute name
+ modelCustomizationId = getNodeTextForce(aaiVolumeGroupResponse, 'vf-module-persona-model-customization-id')
+ }
def vnfType = execution.getVariable('UPDVfModVol_vnfType')
def vnfVersion = execution.getVariable('UPDVfModVol_vnfVersion')
@@ -430,6 +436,7 @@ class UpdateVfModuleVolumeInfraV1 extends VfModuleBase { public void prepDbInfraDbRequest(Execution execution, isDebugLogEnabled) {
def requestId = execution.getVariable('UPDVfModVol_requestId')
+ ExceptionUtil exceptionUtil = new ExceptionUtil();
String updateInfraRequest = """
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
@@ -462,7 +469,7 @@ class UpdateVfModuleVolumeInfraV1 extends VfModuleBase { xmlns:ns="http://org.openecomp/mso/request/types/v1">
<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
<request-id>${requestId}</request-id>
- <action>CREATE</action>
+ <action>UPDATE</action>
<source>${source}</source>
</request-info>
<aetgt:mso-bpel-name>BPMN VF Module Volume action: UPDATE</aetgt:mso-bpel-name>
@@ -480,8 +487,15 @@ class UpdateVfModuleVolumeInfraV1 extends VfModuleBase { * @param execution The flow's execution instance.
*/
public void prepFalloutHandler(Execution execution, isDebugLogEnabled) {
+ def requestId = execution.getVariable('UPDVfModVol_requestId')
+ def source = execution.getVariable('UPDVfModVol_source')
- def requestInfo = execution.getVariable('UPDVfModVol_requestInfo')
+ String requestInfo = """
+ <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-id>${requestId}</request-id>
+ <action>UPDATE</action>
+ <source>${source}</source>
+ </request-info>"""
def WorkflowException workflowException = execution.getVariable("WorkflowException")
def errorResponseCode = workflowException.getErrorCode()
@@ -495,7 +509,7 @@ class UpdateVfModuleVolumeInfraV1 extends VfModuleBase { <sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
xmlns:reqtype="http://org.openecomp/mso/request/types/v1"
xmlns:msoservtypes="http://org.openecomp/mso/request/types/v1"
- xmlns:structuredtypes="http://org.openecomp/mso/structured/types/v1">
+ xmlns:structuredtypes="http://org.openecomp/mso/structured/types/v1">
${requestInfo}
<sdncadapterworkflow:WorkflowException>
<sdncadapterworkflow:ErrorMessage>${encErrorResponseMsg}</sdncadapterworkflow:ErrorMessage>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVnfInfra.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVnfInfra.groovy new file mode 100644 index 0000000000..47121a38d1 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVnfInfra.groovy @@ -0,0 +1,676 @@ +/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.bpmn.infrastructure.scripts
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+import groovy.util.Node
+import groovy.util.XmlParser;
+import groovy.xml.QName
+
+import java.beans.MetaData.java_lang_Class_PersistenceDelegate
+import java.io.Serializable;
+import java.util.UUID;
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.impl.cmd.AbstractSetVariableCmd
+import org.camunda.bpm.engine.runtime.Execution
+import org.openecomp.mso.rest.APIResponse
+import org.openecomp.mso.rest.RESTClient
+import org.openecomp.mso.rest.RESTConfig
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor;
+import org.openecomp.mso.bpmn.common.scripts.VidUtils;
+import org.openecomp.mso.bpmn.core.RollbackData
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.bpmn.core.domain.ModelInfo
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
+import org.openecomp.mso.bpmn.core.domain.VnfResource
+import org.openecomp.mso.client.aai.*
+
+import org.openecomp.mso.client.appc.ApplicationControllerClient;
+import org.openecomp.mso.client.appc.ApplicationControllerSupport;
+import org.openecomp.appc.client.lcm.model.Action;
+import org.openecomp.appc.client.lcm.model.ActionIdentifiers;
+import org.openecomp.appc.client.lcm.model.LockInput
+import org.openecomp.appc.client.lcm.model.UnlockInput
+import org.openecomp.appc.client.lcm.model.HealthCheckInput
+import org.openecomp.appc.client.lcm.model.StartInput
+import org.openecomp.appc.client.lcm.model.StopInput
+import org.openecomp.appc.client.lcm.model.Flags
+import org.openecomp.appc.client.lcm.model.Status
+
+
+
+public class UpdateVnfInfra extends AbstractServiceTaskProcessor {
+
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+ JsonUtils jsonUtils = new JsonUtils()
+ ApplicationControllerClient appcClient = new ApplicationControllerClient()
+ def prefix = "UPDVnfI_"
+
+ /**
+ * Initialize the flow's variables.
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void initProcessVariables(Execution execution) {
+ execution.setVariable('prefix', 'UPDVnfI_')
+ execution.setVariable('UPDVnfI_Request', null)
+ execution.setVariable('UPDVnfI_requestInfo', null)
+ execution.setVariable('UPDVnfI_requestId', null)
+ execution.setVariable('UPDVnfI_source', null)
+ execution.setVariable('UPDVnfI_vnfInputs', null)
+ execution.setVariable('UPDVnfI_vnfId', null)
+ execution.setVariable('UPDVnfI_tenantId', null)
+ execution.setVariable('UPDVnfI_vnfParams', null)
+ execution.setVariable('UpdateVnfSuccessIndicator', false)
+ execution.setVariable('UPDVnfI_serviceType', null)
+ execution.setVariable('UPDVnfI_nfRole', null)
+ execution.setVariable('UPDVnfI_currentActivity', 'UPDVnfI')
+ execution.setVariable('UPDVnfI_workStep', null)
+ execution.setVariable('UPDVnfI_failedActivity', null)
+ execution.setVariable('UPDVnfI_errorCode', "0")
+ execution.setVariable('UPDVnfI_errorText', null)
+ execution.setVariable('UPDVnfI_healthCheckIndex', 1)
+ }
+
+ /**
+ * Check for missing elements in the received request.
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void preProcessRequest(Execution execution) {
+ def method = getClass().getSimpleName() + '.preProcessRequest(' +
+ 'execution=' + execution.getId() +
+ ')'
+ initProcessVariables(execution)
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ initProcessVariables(execution)
+
+ def incomingRequest = execution.getVariable('bpmnRequest')
+
+ utils.log("DEBUG", "Incoming Infra Request: " + incomingRequest, isDebugLogEnabled)
+ try {
+ def jsonSlurper = new JsonSlurper()
+ def jsonOutput = new JsonOutput()
+ Map reqMap = jsonSlurper.parseText(incomingRequest)
+ utils.log("DEBUG", " Request is in JSON format.", isDebugLogEnabled)
+
+ def serviceInstanceId = execution.getVariable('serviceInstanceId')
+ def vnfId = execution.getVariable('vnfId')
+
+ execution.setVariable(prefix + 'serviceInstanceId', serviceInstanceId)
+ execution.setVariable(prefix + 'vnfId', vnfId)
+ execution.setVariable("isVidRequest", "true")
+
+ def asdcServiceModelVersion = ''
+ def serviceModelInfo = null
+
+ def relatedInstanceList = reqMap.requestDetails?.relatedInstanceList
+
+ if (relatedInstanceList != null) {
+ relatedInstanceList.each {
+ if (it.relatedInstance.modelInfo?.modelType == 'service') {
+ utils.log("DEBUG", "PROCESSING SERVICE INFO", isDebugLogEnabled)
+ asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion
+ serviceModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo)
+ utils.log("DEBUG", "ServiceModelInfo: " + serviceModelInfo, isDebugLogEnabled)
+ def modelInvariant = jsonUtils.getJsonValue(serviceModelInfo, "modelInvariantUuid")
+ utils.log("DEBUG", "modelInvariant: " + modelInvariant, isDebugLogEnabled)
+ }
+
+ }
+ }
+
+ execution.setVariable(prefix + 'asdcServiceModelVersion', asdcServiceModelVersion)
+ execution.setVariable(prefix + 'serviceModelInfo', serviceModelInfo)
+ def vnfModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo)
+ execution.setVariable(prefix + 'vnfModelInfo', vnfModelInfo)
+ def vnfModelInvariantUuid = jsonUtils.getJsonValue(vnfModelInfo, "modelInvariantUuid")
+ execution.setVariable(prefix + 'vnfModelInvariantUuid', vnfModelInvariantUuid)
+ logDebug("vnfModelInvariantUuid: " + vnfModelInvariantUuid, isDebugLogEnabled)
+
+ def vnfType = execution.getVariable('vnfType')
+ execution.setVariable(prefix + 'vnfType', vnfType)
+
+ def userParams = reqMap.requestDetails?.requestParameters?.userParams
+
+ Map<String, String> userParamsMap = [:]
+ if (userParams != null) {
+ userParams.each { userParam ->
+ userParamsMap.put(userParam.name, userParam.value)
+ }
+ }
+
+ utils.log("DEBUG", 'Processed user params: ' + userParamsMap, isDebugLogEnabled)
+
+ execution.setVariable(prefix + 'vfModuleInputParams', userParamsMap)
+
+ def requestId = execution.getVariable("mso-request-id")
+ execution.setVariable(prefix + 'requestId', requestId)
+ execution.setVariable('msoRequestId', requestId)
+
+
+ def vnfName = reqMap.requestDetails?.requestInfo?.instanceName ?: null
+ execution.setVariable(prefix + 'vnfName', vnfName)
+
+ def requestorId = reqMap.requestDetails?.requestInfo?.requestorId ?: null
+ execution.setVariable(prefix + 'requestorId', requestorId)
+
+ def usePreload = reqMap.requestDetails?.requestParameters?.usePreload
+ execution.setVariable(prefix + 'usePreload', usePreload)
+
+ def cloudConfiguration = reqMap.requestDetails?.cloudConfiguration
+ def lcpCloudRegionId = cloudConfiguration.lcpCloudRegionId
+ execution.setVariable(prefix + 'lcpCloudRegionId', lcpCloudRegionId)
+ def tenantId = cloudConfiguration.tenantId
+ execution.setVariable(prefix + 'tenantId', tenantId)
+
+ def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: ''
+ execution.setVariable(prefix + 'globalSubscriberId', globalSubscriberId)
+
+ execution.setVariable(prefix + 'sdncVersion', '1702')
+
+ execution.setVariable("UpdateVnfInfraSuccessIndicator", false)
+
+ execution.setVariable("isDebugLogEnabled", isDebugLogEnabled)
+
+ def source = reqMap.requestDetails?.requestInfo?.source
+ execution.setVariable(prefix + "source", source)
+
+ //For Completion Handler & Fallout Handler
+ String requestInfo =
+ """<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-id>${requestId}</request-id>
+ <action>UPDATE</action>
+ <source>${source}</source>
+ </request-info>"""
+
+ execution.setVariable(prefix + "requestInfo", requestInfo)
+
+ logDebug('RequestInfo: ' + execution.getVariable(prefix + "requestInfo"), isDebugLogEnabled)
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+
+ }
+ catch(groovy.json.JsonException je) {
+ utils.log("DEBUG", " Request is not in JSON format.", isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format")
+
+ }
+ catch(Exception e) {
+ String restFaultMessage = e.getMessage()
+ utils.log("ERROR", " Exception Encountered - " + "\n" + restFaultMessage, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage)
+ }
+ }
+
+ /**
+ * Prepare and send the sychronous response for this flow.
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void sendSynchResponse(Execution execution) {
+ def method = getClass().getSimpleName() + '.sendSynchResponse(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+
+ try {
+ def requestInfo = execution.getVariable('UPDVnfI_requestInfo')
+ def requestId = execution.getVariable('UPDVnfI_requestId')
+ def source = execution.getVariable('UPDVnfI_source')
+ def progress = getNodeTextForce(requestInfo, 'progress')
+ if (progress.isEmpty()) {
+ progress = '0'
+ }
+ def startTime = getNodeTextForce(requestInfo, 'start-time')
+ if (startTime.isEmpty()) {
+ startTime = System.currentTimeMillis()
+ }
+
+ // RESTResponse (for API Handler (APIH) Reply Task)
+ def vnfId = execution.getVariable("vnfId")
+ String synchResponse = """{"requestReferences":{"instanceId":"${vnfId}","requestId":"${requestId}"}}""".trim()
+
+ sendWorkflowResponse(execution, 200, synchResponse)
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage())
+ }
+ }
+
+
+
+ /**
+ * Get VnfResource decomposition object for this VNF.
+ *
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void getVnfResourceDecomposition(Execution execution) {
+ def method = getClass().getSimpleName() + '.getVnfResourceDecomposition(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+ String vnfModelInvariantUuid = execution.getVariable(prefix + 'vnfModelInvariantUuid')
+ logDebug("vnfModelInvariantUuid: " + vnfModelInvariantUuid, isDebugLogEnabled)
+ List<VnfResource> vnfResources = serviceDecomposition.getServiceVnfs()
+
+ for (i in 0..vnfResources.size()-1) {
+ ModelInfo modelInfo = vnfResources[i].getModelInfo()
+ String modelInvariantUuidFromDecomposition = modelInfo.getModelInvariantUuid()
+ logDebug("modelInvariantUuidFromDecomposition: " + modelInvariantUuidFromDecomposition, isDebugLogEnabled)
+
+ if (vnfModelInvariantUuid.equals(modelInvariantUuidFromDecomposition)) {
+ VnfResource vnfResourceDecomposition = vnfResources[i]
+ execution.setVariable(prefix + 'vnfResourceDecomposition', vnfResourceDecomposition)
+ def nfRole = vnfResourceDecomposition.getNfRole()
+ execution.setVariable(prefix + 'nfRole', nfRole)
+ logDebug("vnfResourceDecomposition: " + vnfResourceDecomposition.toJsonString(), isDebugLogEnabled)
+ break
+ }
+ else {
+ //exception!
+ }
+
+ }
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in getVnfResourceDecomposition(): ' + e.getMessage())
+ }
+ }
+
+ /**
+ * Check if this VNF is already in maintenance in A&AI.
+ *
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void checkIfVnfInMaintInAAI(Execution execution) {
+ def method = getClass().getSimpleName() + '.checkIfVnfInMaintInAAI(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ execution.setVariable(prefix + 'errorCode', "0")
+ execution.setVariable(prefix + "workStep", "checkIfVnfInMaintInAAI")
+ execution.setVariable(prefix + "failedActivity", "AAI")
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ def transactionLoggingUuid = UUID.randomUUID().toString()
+ AAIRestClientImpl client = new AAIRestClientImpl()
+ AAIValidatorImpl aaiValidator = new AAIValidatorImpl()
+ aaiValidator.setClient(client)
+ def vnfId = execution.getVariable("vnfId")
+ boolean isInMaint = aaiValidator.isVNFLocked(vnfId, transactionLoggingUuid)
+ logDebug("isInMaint result: " + isInMaint, isDebugLogEnabled)
+ execution.setVariable(prefix + 'isVnfInMaintenance', isInMaint)
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ execution.setVariable(prefix + "errorCode", "1002")
+ execution.setVariable(prefix + "errorText", e.getMessage())
+ //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage())
+ }
+ }
+
+
+ /**
+ * Check if this VNF's pservers are locked in A&AI.
+ *
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void checkIfPserversInMaintInAAI(Execution execution) {
+ def method = getClass().getSimpleName() + '.checkIfPserversInMaintInAAI(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ execution.setVariable(prefix + 'errorCode', "0")
+ logDebug('Entered ' + method, isDebugLogEnabled)
+ execution.setVariable(prefix + "workStep", "checkIfPserversInMaintInAAI")
+ execution.setVariable(prefix + "failedActivity", "AAI")
+
+ try {
+ def transactionLoggingUuid = UUID.randomUUID().toString()
+ AAIRestClientImpl client = new AAIRestClientImpl()
+ AAIValidatorImpl aaiValidator = new AAIValidatorImpl()
+ aaiValidator.setClient(client)
+ def vnfId = execution.getVariable("vnfId")
+ boolean areLocked = aaiValidator.isPhysicalServerLocked(vnfId, transactionLoggingUuid)
+ logDebug("areLocked result: " + areLocked, isDebugLogEnabled)
+ execution.setVariable(prefix + 'arePserversLocked', areLocked)
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ execution.setVariable(prefix + "errorCode", "1002")
+ execution.setVariable(prefix + "errorText", e.getMessage())
+ //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfPserversInMaintInAAI(): ' + e.getMessage())
+ }
+ }
+
+ /**
+ * Set inMaint flag for this VNF to the specified value in A&AI.
+ *
+ *
+ * @param execution The flow's execution instance.
+ * @param inMaint The boolean value of the flag to set
+ */
+ public void setVnfInMaintFlagInAAI(Execution execution, boolean inMaint) {
+ def method = getClass().getSimpleName() + '.setVnfInMaintFlagInAAI(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ execution.setVariable(prefix + 'errorCode', "0")
+ logDebug('Entered ' + method, isDebugLogEnabled)
+ if (inMaint) {
+ execution.setVariable(prefix + "workStep", "setVnfInMaintFlagInAAI")
+ }
+ else {
+ execution.setVariable(prefix + "workStep", "unsetVnfInMaintFlagInAAI")
+ }
+ execution.setVariable(prefix + "failedActivity", "AAI")
+
+ try {
+ def transactionLoggingUuid = UUID.randomUUID().toString()
+ AAIRestClientImpl client = new AAIRestClientImpl()
+ AAIUpdatorImpl aaiUpdator = new AAIUpdatorImpl()
+ aaiUpdator.setClient(client)
+ def vnfId = execution.getVariable("vnfId")
+ if (inMaint) {
+ aaiUpdator.updateVnfToLocked(vnfId, transactionLoggingUuid)
+ }
+ else {
+ aaiUpdator.updateVnfToUnLocked(vnfId, transactionLoggingUuid)
+ }
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ execution.setVariable(prefix + "errorCode", "1002")
+ execution.setVariable(prefix + "errorText", e.getMessage())
+ //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in setVnfInMaintFlagInAAI(): ' + e.getMessage())
+ }
+ }
+
+ /**
+ * Call APP-C client to execute specified APP-C command for this VNF.
+ *
+ *
+ * @param execution The flow's execution instance.
+ * @param action The action to take in APP-C.
+ */
+ public void runAppcCommand(Execution execution, Action action) {
+ def method = getClass().getSimpleName() + '.runAppcCommand(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ execution.setVariable(prefix + 'errorCode', "0")
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ logDebug("Running APP-C action: " + action.toString(), isDebugLogEnabled)
+ String vnfId = execution.getVariable('vnfId')
+ String msoRequestId = execution.getVariable(prefix + 'requestId')
+ execution.setVariable('msoRequestId', msoRequestId)
+ execution.setVariable(prefix + "failedActivity", "APP-C")
+
+ ApplicationControllerSupport support = new ApplicationControllerSupport()
+ appcClient.appCSupport=support
+ org.springframework.test.util.ReflectionTestUtils.setField(support, "lcmModelPackage", "org.openecomp.appc.client.lcm.model");
+ Flags flags = new Flags();
+ ActionIdentifiers actionIdentifiers = new ActionIdentifiers();
+ actionIdentifiers.setVnfId(vnfId);
+ Status appcStatus
+ switch(action) {
+ case Action.Lock:
+ execution.setVariable(prefix + 'workStep', "LockVNF")
+ appcStatus = appcClient.runCommand(Action.Lock,actionIdentifiers,flags,null,msoRequestId)
+ break
+ case Action.Unlock:
+ execution.setVariable(prefix + 'workStep', "UnlockVNF")
+ appcStatus = appcClient.runCommand(Action.Unlock,actionIdentifiers,flags,null,msoRequestId)
+ break
+ case Action.HealthCheck:
+ def healthCheckIndex = execution.getVariable(prefix + 'healthCheckIndex')
+ execution.setVariable(prefix + 'workStep', "HealthCheckVNF" + healthCheckIndex)
+ execution.setVariable(prefix + 'healthCheckIndex', healthCheckIndex + 1)
+ appcStatus = appcClient.runCommand(Action.HealthCheck,actionIdentifiers,flags,null,msoRequestId)
+ break
+ case Action.Start:
+ execution.setVariable(prefix + 'workStep', "StartVNF")
+ appcStatus = appcClient.runCommand(Action.Start,actionIdentifiers,flags,null,msoRequestId)
+ break
+ case Action.Stop:
+ execution.setVariable(prefix + 'workStep', "StopVNF")
+ appcStatus = appcClient.runCommand(Action.Stop,actionIdentifiers,flags,null,msoRequestId)
+ break
+ default:
+ break
+ }
+ logDebug("Completed AppC request", isDebugLogEnabled)
+ int appcCode = appcStatus.getCode()
+ logDebug("AppC status code is: " + appcCode, isDebugLogEnabled)
+ logDebug("AppC status message is: " + appcStatus.getMessage(), isDebugLogEnabled)
+ if (support.getCategoryOf(appcStatus) == ApplicationControllerSupport.StatusCategory.ERROR) {
+ execution.setVariable(prefix + "errorCode", Integer.toString(appcCode))
+ execution.setVariable(prefix + "errorText", appcStatus.getMessage())
+ }
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ logError('Caught exception in ' + method, e)
+ execution.setVariable(prefix + "errorCode", "1002")
+ execution.setVariable(prefix + "errorText", e.getMessage())
+ //throw e;
+ } catch (java.lang.NoSuchMethodError e) {
+ logError('Caught exception in ' + method, e)
+ execution.setVariable(prefix + "errorCode", "1002")
+ execution.setVariable(prefix + "errorText", e.getMessage())
+ //throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ execution.setVariable(prefix + "errorCode", "1002")
+ execution.setVariable(prefix + "errorText", e.getMessage())
+
+ //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in ' + method + ': ' + e.getMessage())
+ }
+ }
+
+
+
+
+
+ /**
+ * Builds a "CompletionHandler" request and stores it in the specified execution variable.
+ *
+ * @param execution the execution
+ * @param resultVar the execution variable in which the result will be stored
+ */
+ public void completionHandlerPrep(Execution execution, String resultVar) {
+ def method = getClass().getSimpleName() + '.completionHandlerPrep(' +
+ 'execution=' + execution.getId() +
+ ', resultVar=' + resultVar +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+
+ try {
+ appcClient.shutdownclient()
+ def requestInfo = getVariable(execution, 'UPDVnfI_requestInfo')
+
+ String content = """
+ <sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:reqtype="http://org.openecomp/mso/request/types/v1">
+ ${requestInfo}
+ <sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name>
+ </sdncadapterworkflow:MsoCompletionRequest>
+ """
+
+ content = utils.formatXml(content)
+ logDebug(resultVar + ' = ' + System.lineSeparator() + content, isDebugLogEnabled)
+ execution.setVariable(resultVar, content)
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error')
+ }
+ }
+
+ /**
+ * Prepare DoUpdateVnfAndModules call.
+ *
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void prepDoUpdateVnfAndModules(Execution execution) {
+ def method = getClass().getSimpleName() + '.prepDoUpdateVnfAndModules(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ execution.setVariable(prefix + 'errorCode', "0")
+ logDebug('Entered ' + method, isDebugLogEnabled)
+ execution.setVariable(prefix + "workStep", "doUpdateVnfAndModules")
+ execution.setVariable(prefix + "failedActivity", "MSO Update VNF")
+ logDebug('Exited ' + method, isDebugLogEnabled)
+
+ }
+
+ /**
+ * Builds a "FalloutHandler" request and stores it in the specified execution variable.
+ *
+ * @param execution the execution
+ * @param resultVar the execution variable in which the result will be stored
+ */
+ public void falloutHandlerPrep(Execution execution, String resultVar) {
+ def method = getClass().getSimpleName() + '.falloutHandlerPrep(' +
+ 'execution=' + execution.getId() +
+ ', resultVar=' + resultVar +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ def prefix = execution.getVariable('prefix')
+ def request = getVariable(execution, prefix+'Request')
+ def requestInformation = execution.getVariable(prefix + "requestInfo")
+
+ appcClient.shutdownclient()
+
+ def WorkflowException workflowException = execution.getVariable("WorkflowException")
+ def errorResponseCode = workflowException.getErrorCode()
+ def errorResponseMsg = workflowException.getErrorMessage()
+ def encErrorResponseMsg = ""
+ if (errorResponseMsg != null) {
+ encErrorResponseMsg = errorResponseMsg.replace("&", "&").replace("<", "<").replace(">", ">")
+ }
+
+ String content = """
+ <sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:reqtype="http://org.openecomp/mso/request/types/v1"
+ xmlns:msoservtypes="http://org.openecomp/mso/request/types/v1"
+ xmlns:structuredtypes="http://org.openecomp/mso/structured/types/v1">
+ ${requestInformation}
+ <sdncadapterworkflow:WorkflowException>
+ <sdncadapterworkflow:ErrorMessage>${encErrorResponseMsg}</sdncadapterworkflow:ErrorMessage>
+ <sdncadapterworkflow:ErrorCode>${errorResponseCode}</sdncadapterworkflow:ErrorCode>
+ </sdncadapterworkflow:WorkflowException>
+ </sdncadapterworkflow:FalloutHandlerRequest>
+ """
+ content = utils.formatXml(content)
+ logDebug(resultVar + ' = ' + System.lineSeparator() + content, isDebugLogEnabled)
+ execution.setVariable(resultVar, content)
+
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ exceptionUtil.buildWorkflowException(execution, 2000, 'Internal Error')
+ }
+ }
+
+ /**
+ * Handle Abort disposition from RainyDayHandler
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void abortProcessing(Execution execution) {
+ def method = getClass().getSimpleName() + '.abortProcessing(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ def errorText = execution.getVariable(prefix + "errorText")
+ def errorCode = execution.getVariable(prefix + "errorCode")
+
+ exceptionUtil.buildAndThrowWorkflowException(execution, errorCode as Integer, errorText)
+ }
+
+ /**
+ * Handle Manual disposition from RainyDayHandler
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void manualProcessing(Execution execution) {
+ def method = getClass().getSimpleName() + '.manualProcessing(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ def taskId = execution.getVariable("UPDVnfI_taskId")
+
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Processing halted - manual task created: " + taskId)
+ }
+
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/MSOInfrastructureApplication.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/MSOInfrastructureApplication.java index 07ec8ff5dc..9fc494043d 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/MSOInfrastructureApplication.java +++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/MSOInfrastructureApplication.java @@ -35,7 +35,7 @@ import org.openecomp.mso.logger.MsoLogger; * @since Version 1.0
*
*/
-@ProcessApplication("MSO Infrastructure Application")
+@ProcessApplication(name="MSO Infrastructure Application", deploymentDescriptors={"../processes.xml"})
public class MSOInfrastructureApplication extends ServletProcessApplication {
private MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL);
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/service/WorkflowAsyncInfrastructureResource.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/service/WorkflowAsyncInfrastructureResource.java deleted file mode 100644 index 0cc81bf0c6..0000000000 --- a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/service/WorkflowAsyncInfrastructureResource.java +++ /dev/null @@ -1,46 +0,0 @@ -/*-
- * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
- * ================================================================================
- * 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.mso.bpmn.infrastructure.workflow.service;
-
-import javax.ws.rs.Path;
-
-import org.camunda.bpm.engine.ProcessEngineServices;
-import org.camunda.bpm.engine.ProcessEngines;
-import org.openecomp.mso.bpmn.common.workflow.service.WorkflowAsyncResource;
-
-
-/**
- *
- * @version 1.0
- * Asynchronous Workflow processing using JAX RS RESTeasy implementation
- * Both Synchronous and Asynchronous BPMN process can benefit from this implementation since the workflow gets executed in the background
- * and the server thread is freed up, server scales better to process more incoming requests
- *
- * Usage: For synchronous process, when you are ready to send the response invoke the callback to write the response
- * For asynchronous process - the activity may send a acknowledgement response and then proceed further on executing the process
- */
-@Path("/async")
-public class WorkflowAsyncInfrastructureResource extends WorkflowAsyncResource {
-
- protected ProcessEngineServices getProcessEngineServices() {
- return pes4junit.orElse(ProcessEngines.getProcessEngine("infrastructure"));
- }
-}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/service/WorkflowResourceApplication.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/service/WorkflowResourceApplication.java deleted file mode 100644 index 84a9bae051..0000000000 --- a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/service/WorkflowResourceApplication.java +++ /dev/null @@ -1,57 +0,0 @@ -/*-
- * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
- * ================================================================================
- * 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.mso.bpmn.infrastructure.workflow.service;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.ws.rs.ApplicationPath;
-import javax.ws.rs.core.Application;
-
-import org.openecomp.mso.bpmn.common.workflow.service.WorkflowMessageResource;
-import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResource;
-
-/**
- * @version 1.0
- * RESTeasy workflow application which wires synchronous and asynchronous response
- *
- */
-@ApplicationPath("/")
-public class WorkflowResourceApplication extends Application {
- private Set<Object> singletons = new HashSet<Object>();
- private Set<Class<?>> classes = new HashSet<Class<?>>();
-
- public WorkflowResourceApplication() {
- singletons.add(new WorkflowResource());
- singletons.add(new WorkflowAsyncInfrastructureResource());
- singletons.add(new WorkflowMessageResource());
- }
-
- @Override
- public Set<Class<?>> getClasses() {
- return classes;
- }
-
- @Override
- public Set<Object> getSingletons() {
- return singletons;
- }
-}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateGenericMacroServiceNetworkVnf.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateGenericMacroServiceNetworkVnf.bpmn deleted file mode 100644 index a3a36529da..0000000000 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateGenericMacroServiceNetworkVnf.bpmn +++ /dev/null @@ -1,1243 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> - <bpmn2:process id="CreateGenericMacroServiceNetworkVnf" name="CreateGenericMacroServiceNetworkVnf" isExecutable="true"> - <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def CreateGenericMacroServiceNetworkVnf = new CreateGenericMacroServiceNetworkVnf() -CreateGenericMacroServiceNetworkVnf.sendSyncResponse(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="sendSyncAckResponse_ScriptTask" targetRef="IntermediateThrowEvent_2" /> - <bpmn2:startEvent id="createVIPR_startEvent" name="Start Flow"> - <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> - </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createVIPR_startEvent" targetRef="preProcessRequest_ScriptTask" /> - <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def CreateGenericMacroServiceNetworkVnf = new CreateGenericMacroServiceNetworkVnf() -CreateGenericMacroServiceNetworkVnf.preProcessRequest(execution) -]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="sendSyncAckResponse_ScriptTask" /> - <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" name="vIPR-ATM"> - <bpmn2:outgoing>SequenceFlow_10o22u2</bpmn2:outgoing>
- <bpmn2:linkEventDefinition id="_LinkEventDefinition_37" name="vIPR-ATM" /> - </bpmn2:intermediateCatchEvent> - <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Post Process & Completion Request" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_0afe2pg</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def CreateGenericMacroServiceNetworkVnf = new CreateGenericMacroServiceNetworkVnf() -CreateGenericMacroServiceNetworkVnf.postProcessResponse(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="callCompleteMsoProcess_CallActivity" /> - <bpmn2:callActivity id="callCompleteMsoProcess_CallActivity" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> - <bpmn2:extensionElements> - <camunda:in variables="all" /> - <camunda:out variables="all" /> - <camunda:in source="CGMSNV_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" /> - <camunda:in source="mso-request-id" target="requestId" /> - <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> - <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> - <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> - <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="callCompleteMsoProcess_CallActivity" targetRef="ScriptTask_2" /> - <bpmn2:scriptTask id="ScriptTask_2" name="Set Success Indicator" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> - <bpmn2:script><![CDATA[// The following variable is checked by the unit test -execution.setVariable("CreateGenericMacroServiceNetworkVnfSuccessIndicator", true)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_2" targetRef="CreateVIPR_EndEvent" /> - <bpmn2:endEvent id="CreateVIPR_EndEvent" name="End"> - <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> - <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_13" /> - </bpmn2:endEvent> - <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> - <bpmn2:startEvent id="StartEvent_1"> - <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> - <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" errorRef="Error_1" /> - </bpmn2:startEvent> - <bpmn2:endEvent id="EndEvent_1"> - <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> - </bpmn2:endEvent> - <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> - <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def CreateServiceInstanceInfra = new CreateServiceInstanceInfra() -CreateServiceInstanceInfra.processJavaException(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> - </bpmn2:subProcess> - <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_4" name="FinishProcess"> - <bpmn2:outgoing>SequenceFlow_12ilko1</bpmn2:outgoing> - <bpmn2:linkEventDefinition id="_LinkEventDefinition_39" name="FinishProcess" /> - </bpmn2:intermediateCatchEvent> - <bpmn2:callActivity id="doCreateNetworkInstance_CallActivity" name="DoCreate Network Instance" calledElement="DoCreateNetworkInstance"> - <bpmn2:extensionElements> - <camunda:in source="msoRequestId" target="msoRequestId" /> - <camunda:in source="networkModelInfo" target="networkModelInfo" /> - <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> - <camunda:in source="tenantId" target="tenantId" /> - <camunda:in source="productFamilyId" target="productFamilyId" /> - <camunda:in source="disableRollback" target="disableRollback" /> - <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> - <camunda:in source="networkInputParams" target="networkInputParams" /> - <camunda:in source="failIfExists" target="failIfExists" /> - <camunda:out source="WorkflowException" target="WorkflowException" /> - <camunda:out source="rollbackData" target="DCRENI_rollbackData" /> - <camunda:out source="rolledBack" target="DCRENI_rolledBack" /> - <camunda:out source="networkId" target="networkId" /> - <camunda:out source="networkName" target="networkName" /> - <camunda:out source="networkOutputParams" target="networkOutputParams" /> - <camunda:in source="sdncVersion" target="sdncVersion" /> - <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> - <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> - <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_1bwbn7r</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_12ag2bk</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:scriptTask id="ScriptTask_PrepareNetworkCreate" name="Prepare for Network Create" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_0cmebdc</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_0dfkfh1</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1bwbn7r</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def CreateGenericMacroServiceNetworkVnf= new CreateGenericMacroServiceNetworkVnf() -CreateGenericMacroServiceNetworkVnf.prepareNetworkCreate(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:callActivity id="doCreateServiceInstance_CallActivity" name="DoCreate ServiceInstance " calledElement="DoCreateServiceInstance"> - <bpmn2:extensionElements> - <camunda:in source="msoRequestId" target="msoRequestId" /> - <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> - <camunda:in sourceExpression="vIPR-ATM" target="subscriptionServiceType" /> - <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> - <camunda:out source="rollbackData" target="DCRESI_rollbackData" /> - <camunda:in source="serviceInstanceName" target="serviceInstanceName" /> - <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> - <camunda:in source="failIfExists" target="failIfExists" /> - <camunda:in source="disableRollback" target="disableRollback" /> - <camunda:in source="serviceInputParams" target="serviceInputParams" /> - <camunda:out source="rolledBack" target="DCRESI_rolledBack" /> - <camunda:out source="WorkflowException" target="WorkflowException" /> - <camunda:out source="serviceInstanceName" target="serviceInstanceName" /> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> - <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> - <camunda:in source="productFamilyId" target="productFamilyId" /> - <camunda:in source="sdncVersion" target="sdncVersion" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_0j6sjye</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1ky2sv9</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:callActivity id="doCreateVNFandModules_CallActivity" name="DoCreate VNF and Modules " calledElement="DoCreateVnfAndModules"> - <bpmn2:extensionElements> - <camunda:in source="msoRequestId" target="msoRequestId" /> - <camunda:in source="disableRollback" target="disableRollback" /> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> - <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> - <camunda:in source="productFamilyId" target="productFamilyId" /> - <camunda:in source="vnfModelInfo" target="vnfModelInfo" /> - <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> - <camunda:in source="tenantId" target="tenantId" /> - <camunda:in source="sdncVersion" target="sdncVersion" /> - <camunda:out source="rollbackData" target="DCVM_rollbackData" /> - <camunda:out source="WorkflowException" target="WorkflowException" /> - <camunda:out source="vnfId" target="vnfId" /> - <camunda:out source="vnfName" target="vnfName" /> - <camunda:out source="vnfOutputParams" target="vnfOutputParams" /> - <camunda:out source="rolledBack" target="rolledBack" /> - <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> - <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> - <camunda:in source="serviceDecomposition" target="serviceDecomposition" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_1h77psn</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0qi5uxg</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:scriptTask id="ScriptTask_3" name="Prepare to Create VNF" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_0bvecvm</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1h77psn</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def CreateGenericMacroServiceNetworkVnf= new CreateGenericMacroServiceNetworkVnf() -CreateGenericMacroServiceNetworkVnf.prepareVnfAndModulesCreate(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_4" name="GoToFinishProcess"> - <bpmn2:incoming>SequenceFlow_0xowenu</bpmn2:incoming> - <bpmn2:linkEventDefinition id="_LinkEventDefinition_41" name="FinishProcess" /> - </bpmn2:intermediateThrowEvent> - <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_2" name="GoTovIPR-ATM"> - <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> - <bpmn2:linkEventDefinition id="_LinkEventDefinition_38" name="vIPR-ATM" /> - </bpmn2:intermediateThrowEvent> - <bpmn2:subProcess id="SubProcess_0s6hpty" name="Subprocess For Exception / FalloutHandler " triggeredByEvent="true"> - <bpmn2:exclusiveGateway id="ExclusiveGateway_1vwgs6p" name="Is Rollback On?" default="SequenceFlow_0dhf2js"> - <bpmn2:incoming>SequenceFlow_0zq7i3q</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0zpbskl</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_0dhf2js</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:startEvent id="StartEvent_1bwmffk" name="Fault Start"> - <bpmn2:outgoing>SequenceFlow_0zq7i3q</bpmn2:outgoing> - <bpmn2:errorEventDefinition /> - </bpmn2:startEvent> - <bpmn2:exclusiveGateway id="ExclusiveGateway_0ydrtdx" name="isPONR?" default="SequenceFlow_02o4yqx"> - <bpmn2:incoming>SequenceFlow_0zpbskl</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1sx5llu</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_02o4yqx</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:exclusiveGateway id="ExclusiveGateway_00rt5qa" name="is VNF Ok?" default="SequenceFlow_05lo85t"> - <bpmn2:incoming>SequenceFlow_0sdb3on</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_05lo85t</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_0xtr1g5</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:exclusiveGateway id="ExclusiveGateway_1kvn1pz" name="Network Rollback present?" default="SequenceFlow_19mxskt"> - <bpmn2:incoming>SequenceFlow_05lo85t</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_09xerwk</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_19mxskt</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_0tmepzk</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:callActivity id="CallActivity_0jw5tqa" name="Call FalloutHandlerV1" calledElement="FalloutHandler"> - <bpmn2:extensionElements> - <camunda:in source="CGMSNV_falloutRequest" target="FalloutHandlerRequest" /> - <camunda:in source="msoRequestId" target="mso-request-id" /> - <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> - <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> - <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> - <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_0807ukc</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_19yywk8</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:endEvent id="EndEvent_04xute7"> - <bpmn2:incoming>SequenceFlow_19yywk8</bpmn2:incoming> - </bpmn2:endEvent> - <bpmn2:inclusiveGateway id="InclusiveGateway_1pqjttt"> - <bpmn2:incoming>SequenceFlow_19mxskt</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_1brxd2r</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_08s0ew2</bpmn2:outgoing> - </bpmn2:inclusiveGateway> - <bpmn2:scriptTask id="ScriptTask_0yk02h3" name="Prepare FalloutHandler" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_0jg47xm</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0807ukc</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def CreateGenericMacroServiceNetworkVnf = new CreateGenericMacroServiceNetworkVnf() -CreateGenericMacroServiceNetworkVnf.prepareFalloutRequest(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_0zpbskl" name="Yes" sourceRef="ExclusiveGateway_1vwgs6p" targetRef="ExclusiveGateway_0ydrtdx"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("disableRollback") != true}]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_0dhf2js" name="No" sourceRef="ExclusiveGateway_1vwgs6p" targetRef="InclusiveGateway_0foywso" /> - <bpmn2:sequenceFlow id="SequenceFlow_1sx5llu" name="Yes" sourceRef="ExclusiveGateway_0ydrtdx" targetRef="InclusiveGateway_0foywso"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("PONR") == true}]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_02o4yqx" name="No" sourceRef="ExclusiveGateway_0ydrtdx" targetRef="ScriptTask_17doerz" /> - <bpmn2:sequenceFlow id="SequenceFlow_05lo85t" name="No" sourceRef="ExclusiveGateway_00rt5qa" targetRef="ExclusiveGateway_1kvn1pz" /> - <bpmn2:sequenceFlow id="SequenceFlow_0xtr1g5" name="Yes" sourceRef="ExclusiveGateway_00rt5qa" targetRef="DoRollbackVNFandModules_CallActivity"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVM_rollbackData") != null }]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_19mxskt" name="No" sourceRef="ExclusiveGateway_1kvn1pz" targetRef="InclusiveGateway_1pqjttt" /> - <bpmn2:callActivity id="DoRollbackVNFandModules_CallActivity" name="DoRollback VNF and Modules " calledElement="DoCreateVnfAndModulesRollback"> - <bpmn2:extensionElements> - <camunda:in source="msoRequestId" target="msoRequestId" /> - <camunda:in source="DCVAM_rollbackData" target="rollbackData" /> - <camunda:out source="rollbackSuccessful" target="DCVAM_rollbackSuccessful" /> - <camunda:out source="rollbackError" target="DCVAM_rollbackError" /> - <camunda:in source="sdncVersion" target="sdncVersion" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_0xtr1g5</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_09xerwk</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_09xerwk" sourceRef="DoRollbackVNFandModules_CallActivity" targetRef="ExclusiveGateway_1kvn1pz" /> - <bpmn2:callActivity id="DoRollbackNetwork_CallActivity" name="DoRollback Network" calledElement="DoCreateNetworkInstanceRollback"> - <bpmn2:extensionElements> - <camunda:in source="msoRequestId" target="msoRequestId" /> - <camunda:in source="DCRENI_rollbackData" target="rollbackData" /> - <camunda:out source="rollbackSuccessful" target="DCRENI_rollbackSuccessful" /> - <camunda:out source="rollbackError" target="DCRENI_rollbackError" /> - <camunda:in source="sdncVersion" target="sdncVersion" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_0136s37</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_1fqmrda</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1dmsx0d</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:exclusiveGateway id="ExclusiveGateway_09o09bu" name="Network rolled back OK?" default="SequenceFlow_0g7scsg"> - <bpmn2:incoming>SequenceFlow_1ieiew4</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1os9x7w</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_0g7scsg</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:callActivity id="DoRollbackService_CallActivity" name="DoRollback Service " calledElement="DoCreateServiceInstanceRollback"> - <bpmn2:extensionElements> - <camunda:in source="DCRESI_rollbackData" target="rollbackData" /> - <camunda:in source="msoRequestId" target="msoRequestId" /> - <camunda:out source="rollbackSuccessful" target="DCRESI_rollbackSuccessful" /> - <camunda:out source="rollbackError" target="DCRESI_rollbackError" /> - <camunda:in source="sdncVersion" target="sdncVersion" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_1os9x7w</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1f1hd3l</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:inclusiveGateway id="InclusiveGateway_0foywso"> - <bpmn2:incoming>SequenceFlow_1sx5llu</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_0dhf2js</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_1rabks0</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0jg47xm</bpmn2:outgoing> - </bpmn2:inclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_1os9x7w" name="Yes" sourceRef="ExclusiveGateway_09o09bu" targetRef="DoRollbackService_CallActivity"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCRENI_rollbackSuccessful") == null || execution.getVariable("DCRENI_rollbackSuccessful") == true }]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_1f1hd3l" sourceRef="DoRollbackService_CallActivity" targetRef="InclusiveGateway_0m9f5ka" /> - <bpmn2:sequenceFlow id="SequenceFlow_0g7scsg" name="No" sourceRef="ExclusiveGateway_09o09bu" targetRef="InclusiveGateway_0m9f5ka" /> - <bpmn2:sequenceFlow id="SequenceFlow_0jg47xm" sourceRef="InclusiveGateway_0foywso" targetRef="ScriptTask_0yk02h3" /> - <bpmn2:sequenceFlow id="SequenceFlow_0807ukc" sourceRef="ScriptTask_0yk02h3" targetRef="CallActivity_0jw5tqa" /> - <bpmn2:sequenceFlow id="SequenceFlow_19yywk8" sourceRef="CallActivity_0jw5tqa" targetRef="EndEvent_04xute7" /> - <bpmn2:scriptTask id="ScriptTask_184teky" name="Validate Network Rollback" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_1dmsx0d</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1otyild</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def CreateGenericMacroServiceNetworkVnf= new CreateGenericMacroServiceNetworkVnf() -CreateGenericMacroServiceNetworkVnf.validateNetworkRollback(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:exclusiveGateway id="ExclusiveGateway_1c386z9" name="Rollback Additional Networks?" default="SequenceFlow_12u8ufr"> - <bpmn2:incoming>SequenceFlow_1otyild</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0136s37</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_12u8ufr</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_1dmsx0d" sourceRef="DoRollbackNetwork_CallActivity" targetRef="ScriptTask_184teky" /> - <bpmn2:sequenceFlow id="SequenceFlow_1otyild" sourceRef="ScriptTask_184teky" targetRef="ExclusiveGateway_1c386z9" /> - <bpmn2:sequenceFlow id="SequenceFlow_0136s37" name="Yes" sourceRef="ExclusiveGateway_1c386z9" targetRef="DoRollbackNetwork_CallActivity"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CGMSNV_NetworksCreatedCount") > 0 }]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_12u8ufr" name="No" sourceRef="ExclusiveGateway_1c386z9" targetRef="ExclusiveGateway_05indeh" /> - <bpmn2:exclusiveGateway id="ExclusiveGateway_1bts0nw" name="VNF rolled back OK?" default="SequenceFlow_1brxd2r"> - <bpmn2:incoming>SequenceFlow_0tmepzk</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1fqmrda</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_1brxd2r</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_0tmepzk" name="Yes" sourceRef="ExclusiveGateway_1kvn1pz" targetRef="ExclusiveGateway_1bts0nw"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCRENI_rollbackData") != null }]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_1fqmrda" name="Yes" sourceRef="ExclusiveGateway_1bts0nw" targetRef="DoRollbackNetwork_CallActivity"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCVAM_rollbackSuccessful") == null || execution.getVariable("DCVAM_rollbackSuccessful") == true }]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_1brxd2r" name="No" sourceRef="ExclusiveGateway_1bts0nw" targetRef="InclusiveGateway_1pqjttt" /> - <bpmn2:exclusiveGateway id="ExclusiveGateway_05indeh" name="Service Rollback present?" default="SequenceFlow_0sezboq"> - <bpmn2:incoming>SequenceFlow_12u8ufr</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_08s0ew2</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1ieiew4</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_0sezboq</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_08s0ew2" sourceRef="InclusiveGateway_1pqjttt" targetRef="ExclusiveGateway_05indeh" /> - <bpmn2:sequenceFlow id="SequenceFlow_1ieiew4" name="Yes" sourceRef="ExclusiveGateway_05indeh" targetRef="ExclusiveGateway_09o09bu"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCRESI_rollbackData") != null }]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_0sezboq" name="No" sourceRef="ExclusiveGateway_05indeh" targetRef="InclusiveGateway_0m9f5ka" /> - <bpmn2:sequenceFlow id="SequenceFlow_0zq7i3q" name="" sourceRef="StartEvent_1bwmffk" targetRef="ExclusiveGateway_1vwgs6p" /> - <bpmn2:inclusiveGateway id="InclusiveGateway_0m9f5ka"> - <bpmn2:incoming>SequenceFlow_1f1hd3l</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_0g7scsg</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_0sezboq</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0f4u373</bpmn2:outgoing> - </bpmn2:inclusiveGateway> - <bpmn2:scriptTask id="ScriptTask_17doerz" name="Pre Process Rollback" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_02o4yqx</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0sdb3on</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def CreateGenericMacroServiceNetworkVnf= new CreateGenericMacroServiceNetworkVnf() -CreateGenericMacroServiceNetworkVnf.preProcessRollback(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:scriptTask id="ScriptTask_0wyub4x" name="Post Process Rollback" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_0f4u373</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1rabks0</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def CreateGenericMacroServiceNetworkVnf= new CreateGenericMacroServiceNetworkVnf() -CreateGenericMacroServiceNetworkVnf.postProcessRollback(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_0sdb3on" sourceRef="ScriptTask_17doerz" targetRef="ExclusiveGateway_00rt5qa" /> - <bpmn2:sequenceFlow id="SequenceFlow_0f4u373" sourceRef="InclusiveGateway_0m9f5ka" targetRef="ScriptTask_0wyub4x" /> - <bpmn2:sequenceFlow id="SequenceFlow_1rabks0" sourceRef="ScriptTask_0wyub4x" targetRef="InclusiveGateway_0foywso" /> - </bpmn2:subProcess> - <bpmn2:scriptTask id="callDbCatalog_scriptTask" name="Get Models Info for Service " scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_1vwssu7</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_19etqmx</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def CreateGenericMacroServiceNetworkVnf= new CreateGenericMacroServiceNetworkVnf() -CreateGenericMacroServiceNetworkVnf.getDataFromDecomposition(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:scriptTask id="prepareCreateService_scriptTask" name="Prepare Create Service " scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_0hvcwa1</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0j6sjye</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def CreateGenericMacroServiceNetworkVnf = new CreateGenericMacroServiceNetworkVnf() -CreateGenericMacroServiceNetworkVnf.prepareCreateServiceInstance(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:scriptTask id="setPONR_ScriptTask" name="set PONR"> - <bpmn2:incoming>SequenceFlow_12ilko1</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0afe2pg</bpmn2:outgoing> - <bpmn2:script><![CDATA[#{execution.setVariable("PONR", true)}]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_12ilko1" sourceRef="IntermediateCatchEvent_4" targetRef="setPONR_ScriptTask" /> - <bpmn2:sequenceFlow id="SequenceFlow_0afe2pg" sourceRef="setPONR_ScriptTask" targetRef="postProcessAndCompletionRequest_ScriptTask" /> - <bpmn2:sequenceFlow id="SequenceFlow_1bwbn7r" sourceRef="ScriptTask_PrepareNetworkCreate" targetRef="doCreateNetworkInstance_CallActivity" /> - <bpmn2:sequenceFlow id="SequenceFlow_1n7r495" name="No" sourceRef="ExclusiveGateway_0fe690i" targetRef="ExclusiveGateway_1os8cm5" /> - <bpmn2:sequenceFlow id="SequenceFlow_1h77psn" sourceRef="ScriptTask_3" targetRef="doCreateVNFandModules_CallActivity" /> - <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1nh09nr" name="StartNetworks"> - <bpmn2:outgoing>SequenceFlow_1vwssu7</bpmn2:outgoing> - <bpmn2:linkEventDefinition name="StartNetworks" /> - </bpmn2:intermediateCatchEvent> - <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0prlju0" name="GoTo StartNetworks"> - <bpmn2:incoming>SequenceFlow_13uceka</bpmn2:incoming> - <bpmn2:linkEventDefinition name="StartNetworks" /> - </bpmn2:intermediateThrowEvent> - <bpmn2:exclusiveGateway id="ExclusiveGateway_0b9wd4f" name="Create Network(s)?" default="SequenceFlow_1f26zbk"> - <bpmn2:incoming>SequenceFlow_19etqmx</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0cmebdc</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_1f26zbk</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:exclusiveGateway id="ExclusiveGateway_0fe690i" name="Create Additional Networks?" default="SequenceFlow_1n7r495"> - <bpmn2:incoming>SequenceFlow_04vlq8r</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1n7r495</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_0dfkfh1</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_0dfkfh1" name="Yes" sourceRef="ExclusiveGateway_0fe690i" targetRef="ScriptTask_PrepareNetworkCreate"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CGMSNV_NetworksCreatedCount") < execution.getVariable("CGMSNV_NetworksCount")}]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_0cmebdc" name="Yes" sourceRef="ExclusiveGateway_0b9wd4f" targetRef="ScriptTask_PrepareNetworkCreate"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CGMSNV_NetworksCount") > 0}]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:exclusiveGateway id="ExclusiveGateway_1os8cm5"> - <bpmn2:incoming>SequenceFlow_1n7r495</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_1f26zbk</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1j7n6qx</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_1f26zbk" name="No" sourceRef="ExclusiveGateway_0b9wd4f" targetRef="ExclusiveGateway_1os8cm5" /> - <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0nreq15" name="GoTo StartVnfs"> - <bpmn2:incoming>SequenceFlow_1j7n6qx</bpmn2:incoming> - <bpmn2:linkEventDefinition name="StartVnfs" /> - </bpmn2:intermediateThrowEvent> - <bpmn2:sequenceFlow id="SequenceFlow_1vwssu7" sourceRef="IntermediateCatchEvent_1nh09nr" targetRef="callDbCatalog_scriptTask" /> - <bpmn2:sequenceFlow id="SequenceFlow_19etqmx" sourceRef="callDbCatalog_scriptTask" targetRef="ExclusiveGateway_0b9wd4f" /> - <bpmn2:sequenceFlow id="SequenceFlow_1j7n6qx" sourceRef="ExclusiveGateway_1os8cm5" targetRef="IntermediateThrowEvent_0nreq15" /> - <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0rlqdvq" name="StartVnfs"> - <bpmn2:outgoing>SequenceFlow_10tbv62</bpmn2:outgoing> - <bpmn2:linkEventDefinition name="StartVnfs" /> - </bpmn2:intermediateCatchEvent> - <bpmn2:exclusiveGateway id="ExclusiveGateway_1nlocis" name="Create VNF?" default="SequenceFlow_0w7328u"> - <bpmn2:incoming>SequenceFlow_10tbv62</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0bvecvm</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_0w7328u</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:exclusiveGateway id="ExclusiveGateway_04q1qud"> - <bpmn2:incoming>SequenceFlow_0qi5uxg</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_0w7328u</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0xowenu</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_10tbv62" sourceRef="IntermediateCatchEvent_0rlqdvq" targetRef="ExclusiveGateway_1nlocis" /> - <bpmn2:sequenceFlow id="SequenceFlow_0bvecvm" name="Yes" sourceRef="ExclusiveGateway_1nlocis" targetRef="ScriptTask_3"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CGMSNV_VNFsCount") >0}]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_0qi5uxg" name="in 1702 scope only one VNF will be created - if needed" sourceRef="doCreateVNFandModules_CallActivity" targetRef="ExclusiveGateway_04q1qud"> - <bpmn2:documentation>in 1702 scope only one VNF will be created</bpmn2:documentation> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_0w7328u" name="No" sourceRef="ExclusiveGateway_1nlocis" targetRef="ExclusiveGateway_04q1qud" /> - <bpmn2:sequenceFlow id="SequenceFlow_0xowenu" sourceRef="ExclusiveGateway_04q1qud" targetRef="IntermediateThrowEvent_4" /> - <bpmn2:scriptTask id="ScriptTask_04o8gb3" name="Validate Network Create" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_12ag2bk</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_04vlq8r</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def CreateGenericMacroServiceNetworkVnf= new CreateGenericMacroServiceNetworkVnf() -CreateGenericMacroServiceNetworkVnf.validateNetworkCreate(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_12ag2bk" sourceRef="doCreateNetworkInstance_CallActivity" targetRef="ScriptTask_04o8gb3" /> - <bpmn2:sequenceFlow id="SequenceFlow_04vlq8r" sourceRef="ScriptTask_04o8gb3" targetRef="ExclusiveGateway_0fe690i" /> - <bpmn2:sequenceFlow id="SequenceFlow_0j6sjye" sourceRef="prepareCreateService_scriptTask" targetRef="doCreateServiceInstance_CallActivity" /> - <bpmn2:serviceTask id="updateInfraRequest" name="Update DB status to SUCCESS"> - <bpmn2:extensionElements> - <camunda:connector> - <camunda:inputOutput> - <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter> - <camunda:inputParameter name="payload"><![CDATA[${execution.getVariable("CGMSNV_setUpdateDbInstancePayload")}]]></camunda:inputParameter> - <camunda:inputParameter name="headers"> - <camunda:map> - <camunda:entry key="content-type">application/soap+xml</camunda:entry> - </camunda:map> - </camunda:inputParameter> - <camunda:inputParameter name="method">POST</camunda:inputParameter> - </camunda:inputOutput> - <camunda:connectorId>soap-http-connector</camunda:connectorId> - </camunda:connector> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_0vj46ej</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_13uceka</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_13uceka" sourceRef="updateInfraRequest" targetRef="IntermediateThrowEvent_0prlju0" /> - <bpmn2:scriptTask id="ScriptTask_1qd3uwb" name="PostProcess Create Service " scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_1ky2sv9</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0vj46ej</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def CreateGenericMacroServiceNetworkVnf = new CreateGenericMacroServiceNetworkVnf() -CreateGenericMacroServiceNetworkVnf.postProcessServiceInstanceCreate(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_1ky2sv9" sourceRef="doCreateServiceInstance_CallActivity" targetRef="ScriptTask_1qd3uwb" /> - <bpmn2:sequenceFlow id="SequenceFlow_0vj46ej" sourceRef="ScriptTask_1qd3uwb" targetRef="updateInfraRequest" /> - <bpmn2:sequenceFlow id="SequenceFlow_0hvcwa1" sourceRef="DecomposeService" targetRef="prepareCreateService_scriptTask" /> - <bpmn2:callActivity id="DecomposeService" name="DecomposeService" calledElement="DecomposeService"> - <bpmn2:extensionElements> - <camunda:in source="msoRequestId" target="msoRequestId" /> - <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> - <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> - <camunda:out source="serviceDecomposition" target="serviceDecomposition" /> - <camunda:out source="WorkflowException" target="WorkflowException" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_00h6hmd</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0hvcwa1</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:scriptTask id="ScriptTask_0cdtchu" name="Prepare Decompose Service " scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_1eu60rt</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_00h6hmd</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def CreateGenericMacroServiceNetworkVnf = new CreateGenericMacroServiceNetworkVnf() -CreateGenericMacroServiceNetworkVnf.prepareDecomposeService(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_1eu60rt" sourceRef="IntermediateCatchEvent_3" targetRef="ScriptTask_0cdtchu" /> - <bpmn2:sequenceFlow id="SequenceFlow_00h6hmd" sourceRef="ScriptTask_0cdtchu" targetRef="DecomposeService" /> - </bpmn2:process> - <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> - <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> - <bpmndi:BPMNDiagram id="BPMNDiagram_1"> - <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateGenericMacroServiceNetworkVnf"> - <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createVIPR_startEvent"> - <dc:Bounds x="96" y="90" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="82" y="131" width="65" height="22" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> - <dc:Bounds x="285" y="68" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> - <di:waypoint xsi:type="dc:Point" x="132" y="108" /> - <di:waypoint xsi:type="dc:Point" x="285" y="108" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="171" y="108" width="6" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_CallActivity_4" bpmnElement="callCompleteMsoProcess_CallActivity"> - <dc:Bounds x="787" y="1115" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask"> - <dc:Bounds x="514" y="1115" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_127"> - <di:waypoint xsi:type="dc:Point" x="385" y="108" /> - <di:waypoint xsi:type="dc:Point" x="476" y="108" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="271" y="69" width="6" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="sendSyncAckResponse_ScriptTask"> - <dc:Bounds x="476" y="68" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80" targetElement="_BPMNShape_CallActivity_4"> - <di:waypoint xsi:type="dc:Point" x="614" y="1155" /> - <di:waypoint xsi:type="dc:Point" x="787" y="1155" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="701" y="1140" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="CreateVIPR_EndEvent"> - <dc:Bounds x="1286" y="1135" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1294" y="1176" width="20" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_CallActivity_4" targetElement="_BPMNShape_ScriptTask_337"> - <di:waypoint xsi:type="dc:Point" x="887" y="1155" /> - <di:waypoint xsi:type="dc:Point" x="1095" y="1154" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="991" y="1140" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true"> - <dc:Bounds x="1281" y="1385" width="409" height="232" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1"> - <dc:Bounds x="1349" y="1490" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1367" y="1531" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1"> - <dc:Bounds x="1424" y="1468" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1"> - <dc:Bounds x="1577" y="1490" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1595" y="1531" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269"> - <di:waypoint xsi:type="dc:Point" x="1385" y="1508" /> - <di:waypoint xsi:type="dc:Point" x="1424" y="1508" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1413" y="1508" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219"> - <di:waypoint xsi:type="dc:Point" x="1524" y="1508" /> - <di:waypoint xsi:type="dc:Point" x="1557" y="1508" /> - <di:waypoint xsi:type="dc:Point" x="1557" y="1508" /> - <di:waypoint xsi:type="dc:Point" x="1577" y="1508" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1572" y="1508" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_CallActivity_75" bpmnElement="doCreateServiceInstance_CallActivity"> - <dc:Bounds x="610" y="223" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_127"> - <di:waypoint xsi:type="dc:Point" x="576" y="108" /> - <di:waypoint xsi:type="dc:Point" x="728" y="108" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="652" y="93" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_337" bpmnElement="ScriptTask_2"> - <dc:Bounds x="1095" y="1114" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_337" targetElement="_BPMNShape_EndEvent_177"> - <di:waypoint xsi:type="dc:Point" x="1195" y="1153" /> - <di:waypoint xsi:type="dc:Point" x="1286" y="1153" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1241" y="1138" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_CallActivity_76" bpmnElement="doCreateNetworkInstance_CallActivity"> - <dc:Bounds x="542" y="491" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_35" bpmnElement="IntermediateCatchEvent_3"> - <dc:Bounds x="96" y="245" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="88" y="281" width="51" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_36" bpmnElement="IntermediateCatchEvent_4"> - <dc:Bounds x="84" y="1137" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="66" y="1173" width="71" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_51" bpmnElement="IntermediateThrowEvent_4"> - <dc:Bounds x="1033" y="854" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1008" y="895" width="85" height="26" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_341" bpmnElement="ScriptTask_PrepareNetworkCreate"> - <dc:Bounds x="400" y="488" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_342" bpmnElement="ScriptTask_3"> - <dc:Bounds x="456" y="765" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_CallActivity_81" bpmnElement="doCreateVNFandModules_CallActivity"> - <dc:Bounds x="623" y="765" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_49" bpmnElement="IntermediateThrowEvent_2"> - <dc:Bounds x="728" y="90" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="707" y="131" width="77" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="SubProcess_0s6hpty_di" bpmnElement="SubProcess_0s6hpty" isExpanded="true"> - <dc:Bounds x="-75" y="1333" width="1324" height="837" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_1vwgs6p_di" bpmnElement="ExclusiveGateway_1vwgs6p" isMarkerVisible="true"> - <dc:Bounds x="79" y="2042" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="66" y="2102" width="80" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="StartEvent_1bwmffk_di" bpmnElement="StartEvent_1bwmffk"> - <dc:Bounds x="-34" y="2050" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="-40" y="2091" width="50" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_0ydrtdx_di" bpmnElement="ExclusiveGateway_0ydrtdx" isMarkerVisible="true"> - <dc:Bounds x="79" y="1935" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="13" y="1950" width="47" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_00rt5qa_di" bpmnElement="ExclusiveGateway_00rt5qa" isMarkerVisible="true"> - <dc:Bounds x="79" y="1625" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="5" y="1640" width="57" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_1kvn1pz_di" bpmnElement="ExclusiveGateway_1kvn1pz" isMarkerVisible="true"> - <dc:Bounds x="206" y="1505" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="188" y="1471" width="89" height="24" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="CallActivity_0jw5tqa_di" bpmnElement="CallActivity_0jw5tqa"> - <dc:Bounds x="1052" y="2016" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="EndEvent_04xute7_di" bpmnElement="EndEvent_04xute7"> - <dc:Bounds x="1189" y="2038" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1207" y="2079" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="InclusiveGateway_1pqjttt_di" bpmnElement="InclusiveGateway_1pqjttt"> - <dc:Bounds x="303" y="1625" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="328" y="1680" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ScriptTask_0yk02h3_di" bpmnElement="ScriptTask_0yk02h3"> - <dc:Bounds x="920" y="2016" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0zpbskl_di" bpmnElement="SequenceFlow_0zpbskl"> - <di:waypoint xsi:type="dc:Point" x="104" y="2042" /> - <di:waypoint xsi:type="dc:Point" x="104" y="1985" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="110" y="2023.785849077779" width="19" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0dhf2js_di" bpmnElement="SequenceFlow_0dhf2js"> - <di:waypoint xsi:type="dc:Point" x="129" y="2067" /> - <di:waypoint xsi:type="dc:Point" x="763" y="2067" /> - <di:waypoint xsi:type="dc:Point" x="763" y="1985" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="169" y="2072" width="14" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1sx5llu_di" bpmnElement="SequenceFlow_1sx5llu"> - <di:waypoint xsi:type="dc:Point" x="129" y="1960" /> - <di:waypoint xsi:type="dc:Point" x="434" y="1960" /> - <di:waypoint xsi:type="dc:Point" x="434" y="1960" /> - <di:waypoint xsi:type="dc:Point" x="738" y="1960" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="448" y="1964" width="19" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_02o4yqx_di" bpmnElement="SequenceFlow_02o4yqx"> - <di:waypoint xsi:type="dc:Point" x="104" y="1935" /> - <di:waypoint xsi:type="dc:Point" x="104" y="1851" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="115" y="1888.0011779924323" width="14" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_05lo85t_di" bpmnElement="SequenceFlow_05lo85t"> - <di:waypoint xsi:type="dc:Point" x="129" y="1650" /> - <di:waypoint xsi:type="dc:Point" x="231" y="1650" /> - <di:waypoint xsi:type="dc:Point" x="231" y="1555" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="133" y="1654" width="14" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0xtr1g5_di" bpmnElement="SequenceFlow_0xtr1g5"> - <di:waypoint xsi:type="dc:Point" x="104" y="1625" /> - <di:waypoint xsi:type="dc:Point" x="104" y="1570" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="113" y="1565" width="18" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_19mxskt_di" bpmnElement="SequenceFlow_19mxskt"> - <di:waypoint xsi:type="dc:Point" x="242" y="1544" /> - <di:waypoint xsi:type="dc:Point" x="317" y="1636" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="281" y="1572" width="14" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_0r7telk_di" bpmnElement="callDbCatalog_scriptTask"> - <dc:Bounds x="184" y="533" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ScriptTask_1gacz45_di" bpmnElement="prepareCreateService_scriptTask"> - <dc:Bounds x="456" y="223" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ScriptTask_11b4gmn_di" bpmnElement="setPONR_ScriptTask"> - <dc:Bounds x="228" y="1115" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_12ilko1_di" bpmnElement="SequenceFlow_12ilko1"> - <di:waypoint xsi:type="dc:Point" x="120" y="1155" /> - <di:waypoint xsi:type="dc:Point" x="228" y="1155" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="174" y="1130" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0afe2pg_di" bpmnElement="SequenceFlow_0afe2pg"> - <di:waypoint xsi:type="dc:Point" x="328" y="1155" /> - <di:waypoint xsi:type="dc:Point" x="471" y="1155" /> - <di:waypoint xsi:type="dc:Point" x="514" y="1155" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="400" y="1140" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="CallActivity_1cvt373_di" bpmnElement="DoRollbackVNFandModules_CallActivity"> - <dc:Bounds x="54" y="1490" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_09xerwk_di" bpmnElement="SequenceFlow_09xerwk"> - <di:waypoint xsi:type="dc:Point" x="154" y="1530" /> - <di:waypoint xsi:type="dc:Point" x="206" y="1530" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="180" y="1515" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="CallActivity_0zl1ald_di" bpmnElement="DoRollbackNetwork_CallActivity"> - <dc:Bounds x="404" y="1490" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_09o09bu_di" bpmnElement="ExclusiveGateway_09o09bu" isMarkerVisible="true"> - <dc:Bounds x="608" y="1625" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="596" y="1596" width="73" height="24" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="CallActivity_0oh7wzu_di" bpmnElement="DoRollbackService_CallActivity"> - <dc:Bounds x="713" y="1610" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="InclusiveGateway_0foywso_di" bpmnElement="InclusiveGateway_0foywso"> - <dc:Bounds x="738" y="1935" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="763" y="1990" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1os9x7w_di" bpmnElement="SequenceFlow_1os9x7w"> - <di:waypoint xsi:type="dc:Point" x="658" y="1650" /> - <di:waypoint xsi:type="dc:Point" x="713" y="1650" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="678" y="1635" width="18" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1f1hd3l_di" bpmnElement="SequenceFlow_1f1hd3l"> - <di:waypoint xsi:type="dc:Point" x="763" y="1690" /> - <di:waypoint xsi:type="dc:Point" x="763" y="1743" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="778" y="1716.5" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0g7scsg_di" bpmnElement="SequenceFlow_0g7scsg"> - <di:waypoint xsi:type="dc:Point" x="633" y="1675" /> - <di:waypoint xsi:type="dc:Point" x="633" y="1768" /> - <di:waypoint xsi:type="dc:Point" x="738" y="1768" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="641" y="1710.0295234297107" width="14" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0jg47xm_di" bpmnElement="SequenceFlow_0jg47xm"> - <di:waypoint xsi:type="dc:Point" x="788" y="1960" /> - <di:waypoint xsi:type="dc:Point" x="970" y="1960" /> - <di:waypoint xsi:type="dc:Point" x="970" y="2016" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="879" y="1945" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0807ukc_di" bpmnElement="SequenceFlow_0807ukc"> - <di:waypoint xsi:type="dc:Point" x="1020" y="2056" /> - <di:waypoint xsi:type="dc:Point" x="1052" y="2056" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1036" y="2041" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_19yywk8_di" bpmnElement="SequenceFlow_19yywk8"> - <di:waypoint xsi:type="dc:Point" x="1152" y="2056" /> - <di:waypoint xsi:type="dc:Point" x="1189" y="2056" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1171" y="2041" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1bwbn7r_di" bpmnElement="SequenceFlow_1bwbn7r"> - <di:waypoint xsi:type="dc:Point" x="500" y="530" /> - <di:waypoint xsi:type="dc:Point" x="542" y="529" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="521" y="514.5" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1n7r495_di" bpmnElement="SequenceFlow_1n7r495"> - <di:waypoint xsi:type="dc:Point" x="882" y="528" /> - <di:waypoint xsi:type="dc:Point" x="923" y="528" /> - <di:waypoint xsi:type="dc:Point" x="923" y="561" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="896" y="513" width="14" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1h77psn_di" bpmnElement="SequenceFlow_1h77psn"> - <di:waypoint xsi:type="dc:Point" x="556" y="806" /> - <di:waypoint xsi:type="dc:Point" x="586" y="806" /> - <di:waypoint xsi:type="dc:Point" x="586" y="804" /> - <di:waypoint xsi:type="dc:Point" x="623" y="804" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="601" y="805" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="IntermediateCatchEvent_1nh09nr_di" bpmnElement="IntermediateCatchEvent_1nh09nr"> - <dc:Bounds x="83" y="555" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="66" y="591" width="70" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="IntermediateThrowEvent_0prlju0_di" bpmnElement="IntermediateThrowEvent_0prlju0"> - <dc:Bounds x="1065" y="245" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1048" y="286" width="70" height="24" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_0b9wd4f_di" bpmnElement="ExclusiveGateway_0b9wd4f" isMarkerVisible="true"> - <dc:Bounds x="332" y="548" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="393" y="580" width="61" height="24" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_0fe690i_di" bpmnElement="ExclusiveGateway_0fe690i" isMarkerVisible="true"> - <dc:Bounds x="828" y="503" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="796" y="561" width="82" height="24" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0dfkfh1_di" bpmnElement="SequenceFlow_0dfkfh1"> - <di:waypoint xsi:type="dc:Point" x="853" y="503" /> - <di:waypoint xsi:type="dc:Point" x="853" y="426" /> - <di:waypoint xsi:type="dc:Point" x="450" y="426" /> - <di:waypoint xsi:type="dc:Point" x="450" y="486" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="644" y="411" width="18" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0cmebdc_di" bpmnElement="SequenceFlow_0cmebdc"> - <di:waypoint xsi:type="dc:Point" x="357" y="548" /> - <di:waypoint xsi:type="dc:Point" x="357" y="528" /> - <di:waypoint xsi:type="dc:Point" x="400" y="528" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="363" y="538" width="18" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ExclusiveGateway_1os8cm5_di" bpmnElement="ExclusiveGateway_1os8cm5" isMarkerVisible="true"> - <dc:Bounds x="898" y="561" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="923" y="616" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1f26zbk_di" bpmnElement="SequenceFlow_1f26zbk"> - <di:waypoint xsi:type="dc:Point" x="357" y="598" /> - <di:waypoint xsi:type="dc:Point" x="357" y="665" /> - <di:waypoint xsi:type="dc:Point" x="923" y="665" /> - <di:waypoint xsi:type="dc:Point" x="923" y="611" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="633" y="650" width="14" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="IntermediateThrowEvent_0nreq15_di" bpmnElement="IntermediateThrowEvent_0nreq15"> - <dc:Bounds x="1033" y="568" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1013" y="609" width="75" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1vwssu7_di" bpmnElement="SequenceFlow_1vwssu7"> - <di:waypoint xsi:type="dc:Point" x="119" y="573" /> - <di:waypoint xsi:type="dc:Point" x="184" y="573" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="152" y="548" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_19etqmx_di" bpmnElement="SequenceFlow_19etqmx"> - <di:waypoint xsi:type="dc:Point" x="284" y="573" /> - <di:waypoint xsi:type="dc:Point" x="332" y="573" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="308" y="548" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1j7n6qx_di" bpmnElement="SequenceFlow_1j7n6qx"> - <di:waypoint xsi:type="dc:Point" x="948" y="586" /> - <di:waypoint xsi:type="dc:Point" x="1033" y="586" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="991" y="561" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="IntermediateCatchEvent_0rlqdvq_di" bpmnElement="IntermediateCatchEvent_0rlqdvq"> - <dc:Bounds x="83" y="870" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="77" y="906" width="45" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_1nlocis_di" bpmnElement="ExclusiveGateway_1nlocis" isMarkerVisible="true"> - <dc:Bounds x="332" y="863" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="396" y="882" width="62" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_04q1qud_di" bpmnElement="ExclusiveGateway_04q1qud" isMarkerVisible="true"> - <dc:Bounds x="898" y="847" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="923" y="902" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_10tbv62_di" bpmnElement="SequenceFlow_10tbv62"> - <di:waypoint xsi:type="dc:Point" x="119" y="888" /> - <di:waypoint xsi:type="dc:Point" x="332" y="888" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="226" y="863" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0bvecvm_di" bpmnElement="SequenceFlow_0bvecvm"> - <di:waypoint xsi:type="dc:Point" x="357" y="863" /> - <di:waypoint xsi:type="dc:Point" x="357" y="805" /> - <di:waypoint xsi:type="dc:Point" x="456" y="805" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="368" y="838" width="19" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0qi5uxg_di" bpmnElement="SequenceFlow_0qi5uxg"> - <di:waypoint xsi:type="dc:Point" x="723" y="805" /> - <di:waypoint xsi:type="dc:Point" x="923" y="805" /> - <di:waypoint xsi:type="dc:Point" x="923" y="847" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="808" y="752" width="89" height="50" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0w7328u_di" bpmnElement="SequenceFlow_0w7328u"> - <di:waypoint xsi:type="dc:Point" x="357" y="914" /> - <di:waypoint xsi:type="dc:Point" x="357" y="937" /> - <di:waypoint xsi:type="dc:Point" x="923" y="937" /> - <di:waypoint xsi:type="dc:Point" x="923" y="898" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="603" y="913" width="14" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0xowenu_di" bpmnElement="SequenceFlow_0xowenu"> - <di:waypoint xsi:type="dc:Point" x="948" y="872" /> - <di:waypoint xsi:type="dc:Point" x="1033" y="872" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="991" y="847" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_04o8gb3_di" bpmnElement="ScriptTask_04o8gb3"> - <dc:Bounds x="686" y="491" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_12ag2bk_di" bpmnElement="SequenceFlow_12ag2bk"> - <di:waypoint xsi:type="dc:Point" x="642" y="531" /> - <di:waypoint xsi:type="dc:Point" x="686" y="531" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="664" y="506" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_04vlq8r_di" bpmnElement="SequenceFlow_04vlq8r"> - <di:waypoint xsi:type="dc:Point" x="786" y="531" /> - <di:waypoint xsi:type="dc:Point" x="807" y="531" /> - <di:waypoint xsi:type="dc:Point" x="807" y="528" /> - <di:waypoint xsi:type="dc:Point" x="828" y="528" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="822" y="519.5" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0j6sjye_di" bpmnElement="SequenceFlow_0j6sjye"> - <di:waypoint xsi:type="dc:Point" x="556" y="263" /> - <di:waypoint xsi:type="dc:Point" x="610" y="263" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="583" y="248" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_184teky_di" bpmnElement="ScriptTask_184teky"> - <dc:Bounds x="546" y="1490" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_1c386z9_di" bpmnElement="ExclusiveGateway_1c386z9" isMarkerVisible="true"> - <dc:Bounds x="685" y="1505" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="758" y="1512" width="53" height="36" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1dmsx0d_di" bpmnElement="SequenceFlow_1dmsx0d"> - <di:waypoint xsi:type="dc:Point" x="504" y="1530" /> - <di:waypoint xsi:type="dc:Point" x="546" y="1530" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="525" y="1515" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1otyild_di" bpmnElement="SequenceFlow_1otyild"> - <di:waypoint xsi:type="dc:Point" x="646" y="1530" /> - <di:waypoint xsi:type="dc:Point" x="685" y="1530" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="666" y="1515" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0136s37_di" bpmnElement="SequenceFlow_0136s37"> - <di:waypoint xsi:type="dc:Point" x="710" y="1505" /> - <di:waypoint xsi:type="dc:Point" x="710" y="1414" /> - <di:waypoint xsi:type="dc:Point" x="454" y="1414" /> - <di:waypoint xsi:type="dc:Point" x="454" y="1490" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="574" y="1399" width="18" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_12u8ufr_di" bpmnElement="SequenceFlow_12u8ufr"> - <di:waypoint xsi:type="dc:Point" x="710" y="1555" /> - <di:waypoint xsi:type="dc:Point" x="710" y="1586" /> - <di:waypoint xsi:type="dc:Point" x="530" y="1586" /> - <di:waypoint xsi:type="dc:Point" x="530" y="1625" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="615" y="1571" width="14" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ExclusiveGateway_1bts0nw_di" bpmnElement="ExclusiveGateway_1bts0nw" isMarkerVisible="true"> - <dc:Bounds x="303" y="1505" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="289" y="1471" width="81" height="24" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0tmepzk_di" bpmnElement="SequenceFlow_0tmepzk"> - <di:waypoint xsi:type="dc:Point" x="256" y="1530" /> - <di:waypoint xsi:type="dc:Point" x="303" y="1530" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="271" y="1505" width="18" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1fqmrda_di" bpmnElement="SequenceFlow_1fqmrda"> - <di:waypoint xsi:type="dc:Point" x="353" y="1530" /> - <di:waypoint xsi:type="dc:Point" x="404" y="1530" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="370" y="1505" width="18" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1brxd2r_di" bpmnElement="SequenceFlow_1brxd2r"> - <di:waypoint xsi:type="dc:Point" x="328" y="1555" /> - <di:waypoint xsi:type="dc:Point" x="328" y="1625" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="336" y="1580" width="14" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ExclusiveGateway_05indeh_di" bpmnElement="ExclusiveGateway_05indeh" isMarkerVisible="true"> - <dc:Bounds x="505" y="1625" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="430" y="1593" width="85" height="24" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_08s0ew2_di" bpmnElement="SequenceFlow_08s0ew2"> - <di:waypoint xsi:type="dc:Point" x="353" y="1650" /> - <di:waypoint xsi:type="dc:Point" x="505" y="1650" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="429" y="1625" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1ieiew4_di" bpmnElement="SequenceFlow_1ieiew4"> - <di:waypoint xsi:type="dc:Point" x="555" y="1650" /> - <di:waypoint xsi:type="dc:Point" x="608" y="1650" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="573" y="1625" width="18" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0sezboq_di" bpmnElement="SequenceFlow_0sezboq"> - <di:waypoint xsi:type="dc:Point" x="530" y="1675" /> - <di:waypoint xsi:type="dc:Point" x="530" y="1768" /> - <di:waypoint xsi:type="dc:Point" x="738" y="1768" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="538" y="1710.0295234297107" width="14" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ServiceTask_16yhzej_di" bpmnElement="updateInfraRequest"> - <dc:Bounds x="921" y="223" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_13uceka_di" bpmnElement="SequenceFlow_13uceka"> - <di:waypoint xsi:type="dc:Point" x="1021" y="263" /> - <di:waypoint xsi:type="dc:Point" x="1065" y="263" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1043" y="248" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_1qd3uwb_di" bpmnElement="ScriptTask_1qd3uwb"> - <dc:Bounds x="772" y="223" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1ky2sv9_di" bpmnElement="SequenceFlow_1ky2sv9"> - <di:waypoint xsi:type="dc:Point" x="710" y="263" /> - <di:waypoint xsi:type="dc:Point" x="772" y="263" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="741" y="248" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0vj46ej_di" bpmnElement="SequenceFlow_0vj46ej"> - <di:waypoint xsi:type="dc:Point" x="872" y="263" /> - <di:waypoint xsi:type="dc:Point" x="921" y="263" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="897" y="248" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_17doerz_di" bpmnElement="ScriptTask_17doerz"> - <dc:Bounds x="54" y="1771" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0zq7i3q_di" bpmnElement="SequenceFlow_0zq7i3q"> - <di:waypoint xsi:type="dc:Point" x="2" y="2068" /> - <di:waypoint xsi:type="dc:Point" x="49" y="2068" /> - <di:waypoint xsi:type="dc:Point" x="49" y="2067" /> - <di:waypoint xsi:type="dc:Point" x="79" y="2067" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="18" y="2069" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="InclusiveGateway_0m9f5ka_di" bpmnElement="InclusiveGateway_0m9f5ka"> - <dc:Bounds x="738" y="1743" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="763" y="1798" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ScriptTask_0wyub4x_di" bpmnElement="ScriptTask_0wyub4x"> - <dc:Bounds x="713" y="1827" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0sdb3on_di" bpmnElement="SequenceFlow_0sdb3on"> - <di:waypoint xsi:type="dc:Point" x="104" y="1771" /> - <di:waypoint xsi:type="dc:Point" x="104" y="1675" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="119" y="1713" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0f4u373_di" bpmnElement="SequenceFlow_0f4u373"> - <di:waypoint xsi:type="dc:Point" x="763" y="1793" /> - <di:waypoint xsi:type="dc:Point" x="763" y="1827" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="778" y="1800" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1rabks0_di" bpmnElement="SequenceFlow_1rabks0"> - <di:waypoint xsi:type="dc:Point" x="763" y="1907" /> - <di:waypoint xsi:type="dc:Point" x="763" y="1935" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="778" y="1911" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0hvcwa1_di" bpmnElement="SequenceFlow_0hvcwa1"> - <di:waypoint xsi:type="dc:Point" x="407" y="263" /> - <di:waypoint xsi:type="dc:Point" x="456" y="263" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="432" y="248" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="CallActivity_0w2alah_di" bpmnElement="DecomposeService"> - <dc:Bounds x="307" y="223" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ScriptTask_0cdtchu_di" bpmnElement="ScriptTask_0cdtchu"> - <dc:Bounds x="171" y="223" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1eu60rt_di" bpmnElement="SequenceFlow_1eu60rt"> - <di:waypoint xsi:type="dc:Point" x="132" y="263" /> - <di:waypoint xsi:type="dc:Point" x="171" y="263" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="152" y="238" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_00h6hmd_di" bpmnElement="SequenceFlow_00h6hmd"> - <di:waypoint xsi:type="dc:Point" x="271" y="263" /> - <di:waypoint xsi:type="dc:Point" x="307" y="263" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="289" y="238" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - </bpmndi:BPMNPlane> - </bpmndi:BPMNDiagram> -</bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateNetworkInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateNetworkInstance.bpmn index 52627a5e33..24a9a6d73c 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateNetworkInstance.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateNetworkInstance.bpmn @@ -116,7 +116,7 @@ CreateNetworkInstance.prepareDBRequestError(execution)]]></bpmn2:script> <bpmn2:extensionElements> <camunda:connector> <camunda:inputOutput> - <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> <camunda:inputParameter name="payload">${CRENI_createDBRequest}</camunda:inputParameter> <camunda:inputParameter name="headers"> <camunda:map> @@ -273,10 +273,10 @@ CreateNetworkInstance.sendSyncResponse(execution)]]></bpmn2:script> <dc:Bounds x="1071" y="57" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ScriptTask_1akfe0b_di" bpmnElement="ScriptTask_1akfe0b"> - <dc:Bounds x="189" y="525" width="100" height="80" /> + <dc:Bounds x="258" y="520" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ServiceTask_0sztuly_di" bpmnElement="ServiceTask_0sztuly"> - <dc:Bounds x="384" y="525" width="100" height="80" /> + <dc:Bounds x="453" y="520" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0xxvjxq_di" bpmnElement="SequenceFlow_0xxvjxq"> <di:waypoint xsi:type="dc:Point" x="1007" y="97" /> @@ -286,52 +286,52 @@ CreateNetworkInstance.sendSyncResponse(execution)]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ScriptTask_1hql91g_di" bpmnElement="ScriptTask_1hql91g"> - <dc:Bounds x="563" y="525" width="100" height="80" /> + <dc:Bounds x="632" y="520" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="CallActivity_1ksm1dz_di" bpmnElement="CallActivity_1ksm1dz"> - <dc:Bounds x="738" y="525" width="100" height="80" /> + <dc:Bounds x="807" y="520" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="SubProcess_1k2112i_di" bpmnElement="SubProcess_1k2112i" isExpanded="true"> - <dc:Bounds x="-13" y="353" width="1021" height="404" /> + <dc:Bounds x="56" y="348" width="1021" height="404" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="StartEvent_110xxgx_di" bpmnElement="StartEvent_110xxgx"> - <dc:Bounds x="83" y="547" width="36" height="36" /> + <dc:Bounds x="152" y="542" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="101" y="588" width="0" height="0" /> + <dc:Bounds x="170" y="583" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="EndEvent_1rqikib_di" bpmnElement="EndEvent_1rqikib"> - <dc:Bounds x="913" y="547" width="36" height="36" /> + <dc:Bounds x="982" y="542" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="931" y="588" width="0" height="0" /> + <dc:Bounds x="1000" y="583" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1s5niqb_di" bpmnElement="SequenceFlow_1s5niqb"> - <di:waypoint xsi:type="dc:Point" x="289" y="565" /> - <di:waypoint xsi:type="dc:Point" x="384" y="565" /> + <di:waypoint xsi:type="dc:Point" x="358" y="560" /> + <di:waypoint xsi:type="dc:Point" x="453" y="560" /> <bpmndi:BPMNLabel> - <dc:Bounds x="337" y="550" width="0" height="0" /> + <dc:Bounds x="406" y="545" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_06s5eu4_di" bpmnElement="SequenceFlow_06s5eu4"> - <di:waypoint xsi:type="dc:Point" x="484" y="565" /> - <di:waypoint xsi:type="dc:Point" x="563" y="565" /> + <di:waypoint xsi:type="dc:Point" x="553" y="560" /> + <di:waypoint xsi:type="dc:Point" x="632" y="560" /> <bpmndi:BPMNLabel> - <dc:Bounds x="524" y="550" width="0" height="0" /> + <dc:Bounds x="593" y="545" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_1reso2f_di" bpmnElement="SequenceFlow_1reso2f"> - <di:waypoint xsi:type="dc:Point" x="663" y="565" /> - <di:waypoint xsi:type="dc:Point" x="738" y="565" /> + <di:waypoint xsi:type="dc:Point" x="732" y="560" /> + <di:waypoint xsi:type="dc:Point" x="807" y="560" /> <bpmndi:BPMNLabel> - <dc:Bounds x="701" y="550" width="0" height="0" /> + <dc:Bounds x="770" y="545" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_1ghqolv_di" bpmnElement="SequenceFlow_1ghqolv"> - <di:waypoint xsi:type="dc:Point" x="838" y="565" /> - <di:waypoint xsi:type="dc:Point" x="913" y="565" /> + <di:waypoint xsi:type="dc:Point" x="907" y="560" /> + <di:waypoint xsi:type="dc:Point" x="982" y="560" /> <bpmndi:BPMNLabel> - <dc:Bounds x="876" y="550" width="0" height="0" /> + <dc:Bounds x="945" y="545" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_095crcd_di" bpmnElement="SequenceFlow_095crcd"> @@ -342,10 +342,10 @@ CreateNetworkInstance.sendSyncResponse(execution)]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_0n4umjf_di" bpmnElement="SequenceFlow_0n4umjf"> - <di:waypoint xsi:type="dc:Point" x="119" y="565" /> - <di:waypoint xsi:type="dc:Point" x="189" y="565" /> + <di:waypoint xsi:type="dc:Point" x="188" y="560" /> + <di:waypoint xsi:type="dc:Point" x="258" y="560" /> <bpmndi:BPMNLabel> - <dc:Bounds x="154" y="550" width="0" height="0" /> + <dc:Bounds x="223" y="545" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_0rt8wax_di" bpmnElement="SequenceFlow_0rt8wax"> @@ -370,4 +370,4 @@ CreateNetworkInstance.sendSyncResponse(execution)]]></bpmn2:script> </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> -</bpmn2:definitions>
\ No newline at end of file +</bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleInfra.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleInfra.bpmn index c58fec9dd9..72c275380f 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleInfra.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleInfra.bpmn @@ -10,10 +10,10 @@ <camunda:in source="CVFMI_requestId" target="msoRequestId" /> <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> <camunda:in source="isVidRequest" target="isVidRequest" /> - <camunda:in source="CVFMI_disableRollback" target="disableRollback" /> + <camunda:in source="disableRollback" target="disableRollback" /> <camunda:out source="DCVFM_vnfId" target="CVFMI_vnfId" /> <camunda:out source="DCVFM_vfModuleId" target="CVFMI_vfModuleId" /> - <camunda:out source="RollbackData" target="RollbackData" /> + <camunda:out source="rollbackData" target="rollbackData" /> <camunda:out source="WorkflowException" target="WorkflowException" /> <camunda:out source="WorkflowResponse" target="CVFMI_WorkflowResponse" /> <camunda:out source="DCVFM_vfModuleName" target="CVFMI_vfModuleName" /> @@ -70,10 +70,11 @@ createVfModule.prepareUpdateInfraRequest(execution)]]></bpmn2:script> <bpmn2:extensionElements> <camunda:connector> <camunda:inputOutput> - <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> <camunda:inputParameter name="headers"> <camunda:map> <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> </camunda:map> </camunda:inputParameter> <camunda:inputParameter name="payload">${CVFMI_updateInfraRequest}</camunda:inputParameter> @@ -123,30 +124,10 @@ createVfModule.postProcessResponse(execution)]]></bpmn2:script> <bpmn2:errorEventDefinition id="_ErrorEventDefinition_2" errorRef="Error_1" /> </bpmn2:endEvent> <bpmn2:subProcess id="ErrorHandler" name="Error Handler" triggeredByEvent="true"> - <bpmn2:scriptTask id="ValidateRollbackResponse" name="Validate Rollback Response" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def createVfModule = new CreateVfModuleInfra() -createVfModule.validateRollbackResponse(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ValidateRollbackResponse" targetRef="InclusiveGateway_1" /> - <bpmn2:callActivity id="ScriptTask_1" name="Do CreateVfModule Rollback" calledElement="DoCreateVfModuleRollback"> - <bpmn2:extensionElements> - <camunda:in source="RollbackData" target="RollbackData" /> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> - <camunda:in source="isVidRequest" target="isVidRequest" /> - <camunda:out source="MSOWorkflowException" target="RollbackWorkflowException" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_1" targetRef="ValidateRollbackResponse" /> <bpmn2:startEvent id="StartEvent_2" name="Catch All Errors"> - <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0wsgnab</bpmn2:outgoing> <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="StartEvent_2" targetRef="ExclusiveGateway_1" /> <bpmn2:callActivity id="FalloutHandler" name="Fallout Handler" calledElement="FalloutHandler"> <bpmn2:extensionElements> <camunda:in source="CVFMI_FalloutHandlerRequest" target="FalloutHandlerRequest" /> @@ -163,36 +144,22 @@ createVfModule.validateRollbackResponse(execution)]]></bpmn2:script> <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_11" /> </bpmn2:endEvent> <bpmn2:scriptTask id="PrepareFalloutHandler" name="Prepare Fallout Handler" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_018p5wf</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* def cvfm = new CreateVfModuleInfra() cvfm.falloutHandlerPrep(execution, 'CVFMI_FalloutHandlerRequest')]]></bpmn2:script> </bpmn2:scriptTask> <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="PrepareFalloutHandler" targetRef="FalloutHandler" /> - <bpmn2:inclusiveGateway id="InclusiveGateway_1"> - <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming> - <bpmn2:incoming>isRollbackOnNoSequenceFlow</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing> - </bpmn2:inclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="InclusiveGateway_1" targetRef="PrepareFalloutHandler" /> - <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="Is Rollback On? " default="isRollbackOnNoSequenceFlow"> - <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> - <bpmn2:outgoing>isRollbackOnNoSequenceFlow</bpmn2:outgoing> - <bpmn2:outgoing>IsRollbackOnYesSequenceFlow</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="isRollbackOnNoSequenceFlow" name="no" sourceRef="ExclusiveGateway_1" targetRef="InclusiveGateway_1" /> - <bpmn2:scriptTask id="LogAndSaveOriginalException" name="Log and Save Original Exception" scriptFormat="groovy"> - <bpmn2:incoming>IsRollbackOnYesSequenceFlow</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + <bpmn2:sequenceFlow id="SequenceFlow_0wsgnab" sourceRef="StartEvent_2" targetRef="SendErrorResponse" /> + <bpmn2:sequenceFlow id="SequenceFlow_018p5wf" sourceRef="SendErrorResponse" targetRef="PrepareFalloutHandler" /> + <bpmn2:scriptTask id="SendErrorResponse" name="Send Error Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0wsgnab</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_018p5wf</bpmn2:outgoing> <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def cvfm = new CreateVfModuleInfra() -cvfm.logAndSaveOriginalException(execution)]]></bpmn2:script> +def createVfModule = new CreateVfModuleInfra() +createVfModule.sendErrorResponse(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="IsRollbackOnYesSequenceFlow" name="yes" sourceRef="ExclusiveGateway_1" targetRef="LogAndSaveOriginalException"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVFMI_rollbackEnabled") == true}]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="LogAndSaveOriginalException" targetRef="ScriptTask_1" /> </bpmn2:subProcess> <bpmn2:scriptTask id="SetSuccessIndicator" name="Set Success Indicator" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> @@ -222,6 +189,24 @@ def createVfModule = new CreateVfModuleInfra() createVfModule.preProcessRequest(execution)]]></bpmn2:script> </bpmn2:scriptTask> <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="PreProcessRequest" targetRef="SendResponse" /> + <bpmn2:subProcess id="SubProcess_0pgv3l6" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:scriptTask id="ProcessError" name="Process Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1qvgrvq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1jqizzo</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_0100eju"> + <bpmn2:incoming>SequenceFlow_1jqizzo</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:startEvent id="StartEvent_1mov8he"> + <bpmn2:outgoing>SequenceFlow_1qvgrvq</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1qvgrvq" name="" sourceRef="StartEvent_1mov8he" targetRef="ProcessError" /> + <bpmn2:sequenceFlow id="SequenceFlow_1jqizzo" name="" sourceRef="ProcessError" targetRef="EndEvent_0100eju" /> + </bpmn2:subProcess> </bpmn2:process> <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> <bpmn2:error id="Error_2" name="REST Fault" errorCode="RESTFault" /> @@ -349,57 +334,57 @@ createVfModule.preProcessRequest(execution)]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_SubProcess_20" bpmnElement="ErrorHandler" isExpanded="true"> - <dc:Bounds x="48" y="540" width="925" height="385" /> + <dc:Bounds x="30" y="566" width="925" height="385" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_54" bpmnElement="StartEvent_2"> - <dc:Bounds x="72" y="844" width="36" height="36" /> + <dc:Bounds x="139" y="720" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="60" y="886" width="98" height="22" /> + <dc:Bounds x="137" y="762" width="77" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_222" bpmnElement="PrepareFalloutHandler"> - <dc:Bounds x="564" y="672" width="100" height="80" /> + <dc:Bounds x="497" y="698" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_223" bpmnElement="FalloutHandler"> - <dc:Bounds x="708" y="672" width="100" height="80" /> + <dc:Bounds x="690" y="698" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_179" bpmnElement="EndEvent_3"> - <dc:Bounds x="864" y="694" width="36" height="36" /> + <dc:Bounds x="846" y="720" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="882" y="735" width="0" height="0" /> + <dc:Bounds x="864" y="761" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_44" bpmnElement="BoundaryEvent_1"> - <dc:Bounds x="955" y="690" width="36" height="36" /> + <dc:Bounds x="937" y="716" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="970" y="731" width="6" height="6" /> + <dc:Bounds x="955" y="757" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_180" bpmnElement="EndEvent_4"> - <dc:Bounds x="1049" y="690" width="36" height="36" /> + <dc:Bounds x="1066" y="716" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1067" y="731" width="0" height="0" /> + <dc:Bounds x="1084" y="757" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_222" targetElement="_BPMNShape_ScriptTask_223"> - <di:waypoint xsi:type="dc:Point" x="664" y="712" /> - <di:waypoint xsi:type="dc:Point" x="708" y="712" /> + <di:waypoint xsi:type="dc:Point" x="597" y="738" /> + <di:waypoint xsi:type="dc:Point" x="690" y="738" /> <bpmndi:BPMNLabel> - <dc:Bounds x="689" y="712" width="6" height="6" /> + <dc:Bounds x="644" y="723" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_223" targetElement="_BPMNShape_EndEvent_179"> - <di:waypoint xsi:type="dc:Point" x="808" y="712" /> - <di:waypoint xsi:type="dc:Point" x="864" y="712" /> + <di:waypoint xsi:type="dc:Point" x="790" y="738" /> + <di:waypoint xsi:type="dc:Point" x="846" y="738" /> <bpmndi:BPMNLabel> - <dc:Bounds x="836" y="712" width="6" height="6" /> + <dc:Bounds x="821" y="738" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_BoundaryEvent_44" targetElement="_BPMNShape_EndEvent_180"> - <di:waypoint xsi:type="dc:Point" x="991" y="708" /> - <di:waypoint xsi:type="dc:Point" x="1049" y="708" /> + <di:waypoint xsi:type="dc:Point" x="973" y="734" /> + <di:waypoint xsi:type="dc:Point" x="1066" y="734" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1015" y="708" width="6" height="6" /> + <dc:Bounds x="1020" y="719" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_241" bpmnElement="SetSuccessIndicator"> @@ -413,80 +398,57 @@ createVfModule.preProcessRequest(execution)]]></bpmn2:script> <di:waypoint xsi:type="dc:Point" x="960" y="367" /> <di:waypoint xsi:type="dc:Point" x="1020" y="367" /> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_223" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true"> - <dc:Bounds x="205" y="836" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="193" y="901" width="102" height="22" /> - </bpmndi:BPMNLabel> + <bpmndi:BPMNShape id="SubProcess_0pgv3l6_di" bpmnElement="SubProcess_0pgv3l6" isExpanded="true"> + <dc:Bounds x="160" y="1001" width="313" height="169" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_266" bpmnElement="ValidateRollbackResponse"> - <dc:Bounds x="312" y="554" width="103" height="79" /> + <bpmndi:BPMNShape id="ScriptTask_13ekvux_di" bpmnElement="ProcessError"> + <dc:Bounds x="268" y="1047" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_InclusiveGateway_25" bpmnElement="InclusiveGateway_1"> - <dc:Bounds x="459" y="686" width="50" height="50" /> + <bpmndi:BPMNShape id="EndEvent_0100eju_di" bpmnElement="EndEvent_0100eju"> + <dc:Bounds x="413" y="1069" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="484" y="741" width="0" height="0" /> + <dc:Bounds x="431" y="1110" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_StartEvent_54" targetElement="_BPMNShape_ExclusiveGateway_223"> - <di:waypoint xsi:type="dc:Point" x="108" y="862" /> - <di:waypoint xsi:type="dc:Point" x="156" y="862" /> - <di:waypoint xsi:type="dc:Point" x="156" y="861" /> - <di:waypoint xsi:type="dc:Point" x="205" y="861" /> + <bpmndi:BPMNShape id="StartEvent_1mov8he_di" bpmnElement="StartEvent_1mov8he"> + <dc:Bounds x="185" y="1069" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="153" y="862" width="6" height="6" /> + <dc:Bounds x="203" y="1110" width="0" height="0" /> </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="isRollbackOnNoSequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_223" targetElement="_BPMNShape_InclusiveGateway_25"> - <di:waypoint xsi:type="dc:Point" x="255" y="861" /> - <di:waypoint xsi:type="dc:Point" x="354" y="861" /> - <di:waypoint xsi:type="dc:Point" x="354" y="711" /> - <di:waypoint xsi:type="dc:Point" x="459" y="711" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qvgrvq_di" bpmnElement="SequenceFlow_1qvgrvq"> + <di:waypoint xsi:type="dc:Point" x="221" y="1087" /> + <di:waypoint xsi:type="dc:Point" x="268" y="1087" /> <bpmndi:BPMNLabel> - <dc:Bounds x="324" y="866" width="20" height="22" /> + <dc:Bounds x="242" y="1087" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ScriptTask_266" targetElement="_BPMNShape_InclusiveGateway_25"> - <di:waypoint xsi:type="dc:Point" x="414" y="593" /> - <di:waypoint xsi:type="dc:Point" x="484" y="593" /> - <di:waypoint xsi:type="dc:Point" x="484" y="686" /> + <bpmndi:BPMNEdge id="SequenceFlow_1jqizzo_di" bpmnElement="SequenceFlow_1jqizzo"> + <di:waypoint xsi:type="dc:Point" x="368" y="1087" /> + <di:waypoint xsi:type="dc:Point" x="413" y="1087" /> <bpmndi:BPMNLabel> - <dc:Bounds x="462" y="593" width="6" height="6" /> + <dc:Bounds x="388" y="1087" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_InclusiveGateway_25" targetElement="_BPMNShape_ScriptTask_222"> - <di:waypoint xsi:type="dc:Point" x="509" y="711" /> - <di:waypoint xsi:type="dc:Point" x="527" y="711" /> - <di:waypoint xsi:type="dc:Point" x="527" y="712" /> - <di:waypoint xsi:type="dc:Point" x="564" y="712" /> + <bpmndi:BPMNEdge id="SequenceFlow_0wsgnab_di" bpmnElement="SequenceFlow_0wsgnab"> + <di:waypoint xsi:type="dc:Point" x="175" y="738" /> + <di:waypoint xsi:type="dc:Point" x="235" y="738" /> + <di:waypoint xsi:type="dc:Point" x="235" y="738" /> + <di:waypoint xsi:type="dc:Point" x="296" y="738" /> <bpmndi:BPMNLabel> - <dc:Bounds x="533" y="712" width="6" height="6" /> + <dc:Bounds x="250" y="738" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_267" bpmnElement="ScriptTask_1"> - <dc:Bounds x="179" y="554" width="103" height="79" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_267" targetElement="_BPMNShape_ScriptTask_266"> - <di:waypoint xsi:type="dc:Point" x="281" y="593" /> - <di:waypoint xsi:type="dc:Point" x="312" y="593" /> + <bpmndi:BPMNEdge id="SequenceFlow_018p5wf_di" bpmnElement="SequenceFlow_018p5wf"> + <di:waypoint xsi:type="dc:Point" x="396" y="738" /> + <di:waypoint xsi:type="dc:Point" x="497" y="738" /> <bpmndi:BPMNLabel> - <dc:Bounds x="294" y="593" width="6" height="6" /> + <dc:Bounds x="447" y="723" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_283" bpmnElement="LogAndSaveOriginalException"> - <dc:Bounds x="179" y="693" width="103" height="79" /> + <bpmndi:BPMNShape id="ScriptTask_036ipyg_di" bpmnElement="SendErrorResponse"> + <dc:Bounds x="296" y="698" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="IsRollbackOnYesSequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_223" targetElement="_BPMNShape_ScriptTask_283"> - <di:waypoint xsi:type="dc:Point" x="230" y="836" /> - <di:waypoint xsi:type="dc:Point" x="230" y="771" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="240" y="804" width="27" height="22" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ScriptTask_283" targetElement="_BPMNShape_ScriptTask_267"> - <di:waypoint xsi:type="dc:Point" x="230" y="693" /> - <di:waypoint xsi:type="dc:Point" x="230" y="632" /> - </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleVolumeInfraV1.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleVolumeInfraV1.bpmn index 0fc889bfd6..ec4afa4ea4 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleVolumeInfraV1.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleVolumeInfraV1.bpmn @@ -1,61 +1,107 @@ <?xml version="1.0" encoding="UTF-8"?> -<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="_CyftwG_HEeaKe-v4u9MasA" exporter="camunda modeler" exporterVersion="2.7.0" targetNamespace="http://camunda.org/schema/1.0/bpmn"> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_CyftwG_HEeaKe-v4u9MasA" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> <bpmn2:process id="CreateVfModuleVolumeInfraV1" name="CreateVfModuleVolumeInfraV1" isExecutable="true"> <bpmn2:startEvent id="StartEvent_createVfModuleVolumeInfraV1"> <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_createVfModuleVolumeInfraV1" targetRef="ScriptTask_preProcessRequest"/> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_createVfModuleVolumeInfraV1" targetRef="ScriptTask_preProcessRequest" /> <bpmn2:subProcess id="SubProcess_exceptionHandler" name="Exception Handler" triggeredByEvent="true"> <bpmn2:startEvent id="StartEvent_catchErrors" name="Catch Exceptions"> - <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_2"/> + <bpmn2:outgoing>SequenceFlow_1tfi3sp</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" /> </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="StartEvent_catchErrors" targetRef="ExclusiveGateway_isSyncResponseSent"/> - <bpmn2:exclusiveGateway id="ExclusiveGateway_isSyncResponseSent" name="Sync response sent?" default="SequenceFlow_syncResponseNotSent"> - <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_syncResponseSent</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_syncResponseNotSent</bpmn2:outgoing> + <bpmn2:exclusiveGateway id="ExclusiveGateway_isSyncResponseSent" name="Sync response sent?" default="SequenceFlow_0x34g02"> + <bpmn2:incoming>SequenceFlow_1tfi3sp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0x34g02</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1q9kksk</bpmn2:outgoing> </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_syncResponseSent" name="Yes" sourceRef="ExclusiveGateway_isSyncResponseSent" targetRef="ScriptTask_prefalloutHandlerRequest"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{CVMVINFRAV1_syncResponseSent == true}</bpmn2:conditionExpression> - </bpmn2:sequenceFlow> <bpmn2:scriptTask id="ScriptTask_sendSyncErrorResp" name="Send sync error response" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_syncResponseNotSent</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0x34g02</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing> <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() createVfModuleVolumeInfraV1.executeMethod('sendSyncError', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_syncResponseNotSent" name="No" sourceRef="ExclusiveGateway_isSyncResponseSent" targetRef="ScriptTask_sendSyncErrorResp"/> - <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ScriptTask_sendSyncErrorResp" targetRef="ScriptTask_prefalloutHandlerRequest"/> + <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ScriptTask_sendSyncErrorResp" targetRef="ExclusiveGateway_0of872x" /> <bpmn2:scriptTask id="ScriptTask_prefalloutHandlerRequest" name="Prepare Fallout Handler Request" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_syncResponseSent</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1v1jx7y</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() createVfModuleVolumeInfraV1.executeMethod('prepareFalloutHandlerRequest', execution, isDebugLogEnabled) ]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="ScriptTask_prefalloutHandlerRequest" targetRef="CallActivity_callFalloutHandler"/> + <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="ScriptTask_prefalloutHandlerRequest" targetRef="CallActivity_callFalloutHandler" /> <bpmn2:callActivity id="CallActivity_callFalloutHandler" name="Call Fallout Handler" calledElement="FalloutHandler"> <bpmn2:extensionElements> - <camunda:in source="CVMVINFRAV1_FalloutHandlerRequest" target="FalloutHandlerRequest"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:out source="FH_ResponseCode" target="FH_ResponseCode"/> - <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse"/> - <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> + <camunda:in source="CVMVINFRAV1_FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_callFalloutHandler" targetRef="EndEvent_4"/> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_callFalloutHandler" targetRef="EndEvent_4" /> <bpmn2:endEvent id="EndEvent_4" name="End"> <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> - <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2"/> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2" /> </bpmn2:endEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_09n39bk" name="Is rollback on?" default="SequenceFlow_1cu5t8k"> + <bpmn2:incoming>SequenceFlow_1q9kksk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1cu5t8k</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1tfh1vm</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:scriptTask id="Task_0nc3wxy" name="Log and save original exception" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1tfh1vm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0b1nrfk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() +createVfModuleVolumeInfraV1.executeMethod('logAndSaveOriginalException', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="Task_1b9yx6k" name="DoCreateVfModuleVolumeRollback" calledElement="DoCreateVfModuleVolumeRollback"> + <bpmn2:extensionElements> + <camunda:in source="requestId" target="mso-request-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:in source="workflowException" target="workflowException" /> + <camunda:out source="wasDeleted" target="wasDeleted" /> + <camunda:in source="rolledBack" target="rolledBack" /> + <camunda:in source="workflowException" target="workflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0b1nrfk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_08vm13o</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="Task_1lkduwj" name="Validate Rollback Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_08vm13o</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_097zy8w</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() +createVfModuleVolumeInfraV1.executeMethod('validateRollbackResponse', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:inclusiveGateway id="ExclusiveGateway_0of872x"> + <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1cu5t8k</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_097zy8w</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1v1jx7y</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1tfi3sp" sourceRef="StartEvent_catchErrors" targetRef="ExclusiveGateway_isSyncResponseSent" /> + <bpmn2:sequenceFlow id="SequenceFlow_0x34g02" name="No" sourceRef="ExclusiveGateway_isSyncResponseSent" targetRef="ScriptTask_sendSyncErrorResp" /> + <bpmn2:sequenceFlow id="SequenceFlow_1q9kksk" name="Yes" sourceRef="ExclusiveGateway_isSyncResponseSent" targetRef="ExclusiveGateway_09n39bk"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVMVINFRAV1_syncResponseSent") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1cu5t8k" name="No" sourceRef="ExclusiveGateway_09n39bk" targetRef="ExclusiveGateway_0of872x" /> + <bpmn2:sequenceFlow id="SequenceFlow_1tfh1vm" name="Yes" sourceRef="ExclusiveGateway_09n39bk" targetRef="Task_0nc3wxy"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVMVINFRAV1_backoutOnFailure") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0b1nrfk" sourceRef="Task_0nc3wxy" targetRef="Task_1b9yx6k" /> + <bpmn2:sequenceFlow id="SequenceFlow_08vm13o" sourceRef="Task_1b9yx6k" targetRef="Task_1lkduwj" /> + <bpmn2:sequenceFlow id="SequenceFlow_097zy8w" sourceRef="Task_1lkduwj" targetRef="ExclusiveGateway_0of872x" /> + <bpmn2:sequenceFlow id="SequenceFlow_1v1jx7y" sourceRef="ExclusiveGateway_0of872x" targetRef="ScriptTask_prefalloutHandlerRequest" /> </bpmn2:subProcess> <bpmn2:scriptTask id="ScriptTask_preProcessRequest" name="Preprocess Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> @@ -64,7 +110,7 @@ createVfModuleVolumeInfraV1.executeMethod('prepareFalloutHandlerRequest', execut def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() createVfModuleVolumeInfraV1.executeMethod('preProcessRequest', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ScriptTask_preProcessRequest" targetRef="ScriptTask_sendSyncAckResponse"/> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ScriptTask_preProcessRequest" targetRef="ScriptTask_sendSyncAckResponse" /> <bpmn2:scriptTask id="ScriptTask_sendSyncAckResponse" name="Send Sync Ack Response" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> @@ -72,16 +118,16 @@ createVfModuleVolumeInfraV1.executeMethod('preProcessRequest', execution, isDebu def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() createVfModuleVolumeInfraV1.executeMethod('sendSyncResponse', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="ScriptTask_sendSyncAckResponse" targetRef="ExclusiveGateway_isVolGrpnamePresent"/> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="ScriptTask_sendSyncAckResponse" targetRef="ExclusiveGateway_isVolGrpnamePresent" /> <bpmn2:exclusiveGateway id="ExclusiveGateway_isVolGrpnamePresent" name="Is volume group name present?" default="SequenceFlow_volGrpNameMissing"> <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_volGrpNamePresent</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_volGrpNameMissing</bpmn2:outgoing> </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_volGrpNamePresent" name="" sourceRef="ExclusiveGateway_isVolGrpnamePresent" targetRef="CallActivity_callGenericGetSI"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{CVMVINFRAV1_volumeGroupName != null && CVMVINFRAV1_volumeGroupName != "" }]]></bpmn2:conditionExpression> + <bpmn2:sequenceFlow id="SequenceFlow_volGrpNamePresent" name="" sourceRef="ExclusiveGateway_isVolGrpnamePresent" targetRef="CallActivity_doCreateVfModuleVolumeV2"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{volumeGroupName != null && volumeGroupName != "" }]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_volGrpNameMissing" name="" sourceRef="ExclusiveGateway_isVolGrpnamePresent" targetRef="ScriptTask_buildError"/> + <bpmn2:sequenceFlow id="SequenceFlow_volGrpNameMissing" name="" sourceRef="ExclusiveGateway_isVolGrpnamePresent" targetRef="ScriptTask_buildError" /> <bpmn2:scriptTask id="ScriptTask_buildError" name="Build Error" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_volGrpNameMissing</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> @@ -89,40 +135,38 @@ createVfModuleVolumeInfraV1.executeMethod('sendSyncResponse', execution, isDebug def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() createVfModuleVolumeInfraV1.executeMethod('buildWorkflowException', execution, 2500, "Volume group name not present in request.", isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_buildError" targetRef="EndEvent_2"/> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_buildError" targetRef="EndEvent_2" /> <bpmn2:endEvent id="EndEvent_2"> <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_1"/> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_1" /> </bpmn2:endEvent> - <bpmn2:callActivity id="CallActivity_callGenericGetSI" name="Call Generic Get Service Instance" calledElement="GenericGetService"> + <bpmn2:callActivity id="CallActivity_doCreateVfModuleVolumeV2" name="Call DoCreateVfModuleVolumeV2" calledElement="DoCreateVfModuleVolumeV2"> <bpmn2:extensionElements> - <camunda:in source="CVMVINFRAV1_serviceInstanceId" target="GENGS_serviceInstanceId"/> - <camunda:out source="GENGS_FoundIndicator" target="GENGSI_FoundIndicator"/> - <camunda:out source="GENGS_SuccessIndicator" target="GENGSI_SuccessIndicator"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> - <camunda:in source="CVMVINFRAV1_serviceType" target="GENGS_type"/> + <camunda:out source="DCVFMODVOLV1_SuccessIndicator" target="DCVFMODVOLV1_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="requestId" target="msoRequestId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="failIfExists" target="failIfExists" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="volumeGroupId" target="volumeGroupId" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="volumeGroupName" target="volumeGroupName" /> + <camunda:in source="vfModuleModelInfo" target="vfModuleModelInfo" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="vnfType" target="vnfType" /> + <camunda:in source="asdcServiceModelVersion" target="asdcServiceModelVersion" /> + <camunda:in source="test-volume-group-name" target="test-volume-group-name" /> + <camunda:in source="test-volume-group-id" target="test-volume-group-id" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:in source="requestId" target="mso-request-id" /> + <camunda:in source="vfModuleInputParams" target="vfModuleInputParams" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_volGrpNamePresent</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0djjra2</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:callActivity id="CallActivity_doCreateVfModuleVolumeV1" name="Call DoCreateVfModuleVolumeV1" calledElement="DoCreateVfModuleVolumeV1"> - <bpmn2:extensionElements> - <camunda:in source="CVMVINFRAV1_Request" target="DoCreateVfModuleVolumeV1Request"/> - <camunda:in source="CVMVINFRAV1_vnfId" target="vnf-id"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in source="CVMVINFRAV1_volumeGroupId" target="volume-group-id"/> - <camunda:out source="DCVFMODVOLV1_SuccessIndicator" target="DCVFMODVOLV1_SuccessIndicator"/> - <camunda:out source="WorkflowException" target="WorkflowException"/> - <camunda:in source="CVMVINFRAV1_isVidRequest" target="is-vid-request"/> - <camunda:in source="test-volume-group-name" target="test-volume-group-name"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> - <camunda:in source="WorkflowException" target="WorkflowException"/> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_serviceInstanceFound</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="CallActivity_doCreateVfModuleVolumeV1" targetRef="ScriptTask_prepareDbInfraRequest"/> <bpmn2:scriptTask id="ScriptTask_setSuccessIndicator" name="Set Success Indicator" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> @@ -130,20 +174,20 @@ createVfModuleVolumeInfraV1.executeMethod('buildWorkflowException', execution, 2 def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() createVfModuleVolumeInfraV1.executeMethod('setSuccessIndicator', execution, true)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_setSuccessIndicator" targetRef="EndEvent_3"/> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_setSuccessIndicator" targetRef="EndEvent_3" /> <bpmn2:callActivity id="CallActivity_completeMsoProcess" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> <bpmn2:extensionElements> - <camunda:in source="CVMVINFRAV1_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode"/> - <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse"/> - <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse"/> + <camunda:in source="CVMVINFRAV1_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="CallActivity_completeMsoProcess" targetRef="ScriptTask_setSuccessIndicator"/> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="CallActivity_completeMsoProcess" targetRef="ScriptTask_setSuccessIndicator" /> <bpmn2:scriptTask id="ScriptTask_postCompletionRequest" name="Post Completion Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> @@ -151,330 +195,320 @@ createVfModuleVolumeInfraV1.executeMethod('setSuccessIndicator', execution, true def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() createVfModuleVolumeInfraV1.executeMethod('postProcessResponse', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="ScriptTask_postCompletionRequest" targetRef="CallActivity_completeMsoProcess"/> + <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="ScriptTask_postCompletionRequest" targetRef="CallActivity_completeMsoProcess" /> <bpmn2:serviceTask id="ServiceTask_callDbInfraUpdate" name="Call DB Infra Update"> <bpmn2:extensionElements> <camunda:connector> - <camunda:connectorId>http-connector</camunda:connectorId> <camunda:inputOutput> - <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> <camunda:inputParameter name="payload">${CVMVINFRAV1_createDBRequest}</camunda:inputParameter> <camunda:inputParameter name="headers"> <camunda:map> <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> </camunda:map> </camunda:inputParameter> <camunda:inputParameter name="method">POST</camunda:inputParameter> <camunda:outputParameter name="CVMVINFRAV1_createDBResponse">${response}</camunda:outputParameter> <camunda:outputParameter name="CVMVINFRAV1_dbReturnCode">${statusCode}</camunda:outputParameter> </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> </camunda:connector> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ServiceTask_callDbInfraUpdate" targetRef="ScriptTask_postCompletionRequest"/> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ServiceTask_callDbInfraUpdate" targetRef="ScriptTask_postCompletionRequest" /> <bpmn2:endEvent id="EndEvent_3"> <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> - <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1"/> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> </bpmn2:endEvent> <bpmn2:scriptTask id="ScriptTask_prepareDbInfraRequest" name="Prepare DB Infra Request" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0djjra2</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() createVfModuleVolumeInfraV1.executeMethod('prepareDbInfraSuccessRequest', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_prepareDbInfraRequest" targetRef="ServiceTask_callDbInfraUpdate"/> - <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="Is service instance found?" default="SequenceFlow_serviceInstanceNotFound"> - <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_serviceInstanceFound</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_serviceInstanceNotFound</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="CallActivity_callGenericGetSI" targetRef="ExclusiveGateway_1"/> - <bpmn2:sequenceFlow id="SequenceFlow_serviceInstanceFound" name="Yes" sourceRef="ExclusiveGateway_1" targetRef="CallActivity_doCreateVfModuleVolumeV1"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{GENGSI_SuccessIndicator == true && GENGSI_FoundIndicator == true}]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_serviceInstanceNotFound" name="No" sourceRef="ExclusiveGateway_1" targetRef="ScriptTask_buildServiceInstanceNotFoundError"/> - <bpmn2:endEvent id="EndEvent_serviceInstanceNotFound"> - <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_3" errorRef="Error_1"/> - </bpmn2:endEvent> - <bpmn2:scriptTask id="ScriptTask_buildServiceInstanceNotFoundError" name="Build Service Instance Not Found Error" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_serviceInstanceNotFound</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() -createVfModuleVolumeInfraV1.executeMethod('buildWorkflowException', execution, 2500, "Service instance id not found in AAI: $CVMVINFRAV1_serviceInstanceId.", isDebugLogEnabled)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="ScriptTask_buildServiceInstanceNotFoundError" targetRef="EndEvent_serviceInstanceNotFound"/> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_prepareDbInfraRequest" targetRef="ServiceTask_callDbInfraUpdate" /> + <bpmn2:sequenceFlow id="SequenceFlow_0djjra2" sourceRef="CallActivity_doCreateVfModuleVolumeV2" targetRef="ScriptTask_prepareDbInfraRequest" /> </bpmn2:process> - <bpmn2:error id="Error_1" errorCode="MSOWorkflowException" name="MSOWorkflowException"/> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVfModuleVolumeInfraV1"> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_67" bpmnElement="StartEvent_createVfModuleVolumeInfraV1"> - <dc:Bounds height="36.0" width="36.0" x="144.0" y="156.0"/> + <dc:Bounds x="201" y="156" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="162.0" y="197.0"/> + <dc:Bounds x="219" y="197" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_67" targetElement="_BPMNShape_ScriptTask_300"> - <di:waypoint xsi:type="dc:Point" x="180.0" y="174.0"/> - <di:waypoint xsi:type="dc:Point" x="252.0" y="174.0"/> + <di:waypoint xsi:type="dc:Point" x="237" y="174" /> + <di:waypoint xsi:type="dc:Point" x="271" y="174" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="219.0" y="174.0"/> + <dc:Bounds x="254" y="159" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_300" bpmnElement="ScriptTask_preProcessRequest"> - <dc:Bounds height="80.0" width="100.0" x="252.0" y="134.0"/> + <dc:Bounds x="271" y="134" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_301" bpmnElement="ScriptTask_sendSyncAckResponse"> - <dc:Bounds height="80.0" width="100.0" x="408.0" y="134.0"/> + <dc:Bounds x="404" y="134" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_249" bpmnElement="ExclusiveGateway_isVolGrpnamePresent" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="589.0" y="148.0"/> + <dc:Bounds x="556" y="149" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="186.0" x="521.0" y="203.0"/> + <dc:Bounds x="540" y="204" width="81" height="24" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_302" bpmnElement="ScriptTask_buildError"> - <dc:Bounds height="80.0" width="100.0" x="565.0" y="264.0"/> + <dc:Bounds x="531" y="253" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_CallActivity_36" bpmnElement="CallActivity_doCreateVfModuleVolumeV1"> - <dc:Bounds height="80.0" width="100.0" x="996.0" y="134.0"/> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_36" bpmnElement="CallActivity_doCreateVfModuleVolumeV2"> + <dc:Bounds x="705" y="134" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_volGrpNamePresent" sourceElement="_BPMNShape_ExclusiveGateway_249" targetElement="_BPMNShape_CallActivity_51"> - <di:waypoint xsi:type="dc:Point" x="639.0" y="173.0"/> - <di:waypoint xsi:type="dc:Point" x="685.0" y="173.0"/> - <di:waypoint xsi:type="dc:Point" x="685.0" y="174.0"/> - <di:waypoint xsi:type="dc:Point" x="720.0" y="174.0"/> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_volGrpNamePresent" sourceElement="_BPMNShape_ExclusiveGateway_249"> + <di:waypoint xsi:type="dc:Point" x="606" y="174" /> + <di:waypoint xsi:type="dc:Point" x="705" y="174" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="680.0" y="173.0"/> + <dc:Bounds x="656" y="159" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_301" targetElement="_BPMNShape_ExclusiveGateway_249"> - <di:waypoint xsi:type="dc:Point" x="508.0" y="174.0"/> - <di:waypoint xsi:type="dc:Point" x="589.0" y="173.0"/> + <di:waypoint xsi:type="dc:Point" x="504" y="175" /> + <di:waypoint xsi:type="dc:Point" x="556" y="174" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="547.0" y="173.0"/> + <dc:Bounds x="530" y="159.5" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_300" targetElement="_BPMNShape_ScriptTask_301"> - <di:waypoint xsi:type="dc:Point" x="352.0" y="174.0"/> - <di:waypoint xsi:type="dc:Point" x="408.0" y="174.0"/> + <di:waypoint xsi:type="dc:Point" x="371" y="174" /> + <di:waypoint xsi:type="dc:Point" x="404" y="174" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="371.0" y="174.0"/> + <dc:Bounds x="388" y="159" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_volGrpNameMissing" sourceElement="_BPMNShape_ExclusiveGateway_249" targetElement="_BPMNShape_ScriptTask_302"> - <di:waypoint xsi:type="dc:Point" x="614.0" y="198.0"/> - <di:waypoint xsi:type="dc:Point" x="615.0" y="264.0"/> + <di:waypoint xsi:type="dc:Point" x="581" y="199" /> + <di:waypoint xsi:type="dc:Point" x="582" y="253" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="612.0" y="234.0"/> + <dc:Bounds x="582" y="211" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_233" bpmnElement="EndEvent_2"> - <dc:Bounds height="36.0" width="36.0" x="598.0" y="389.0"/> + <dc:Bounds x="563" y="379" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="616.0" y="430.0"/> + <dc:Bounds x="581" y="420" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_302" targetElement="_BPMNShape_EndEvent_233"> - <di:waypoint xsi:type="dc:Point" x="615.0" y="344.0"/> - <di:waypoint xsi:type="dc:Point" x="616.0" y="389.0"/> + <di:waypoint xsi:type="dc:Point" x="580" y="333" /> + <di:waypoint xsi:type="dc:Point" x="581" y="379" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="613.0" y="370.0"/> + <dc:Bounds x="581" y="341" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_234" bpmnElement="EndEvent_3"> - <dc:Bounds height="36.0" width="36.0" x="1898.0" y="156.0"/> + <dc:Bounds x="1456" y="156" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="1916.0" y="197.0"/> + <dc:Bounds x="1474" y="197" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_SubProcess_22" bpmnElement="SubProcess_exceptionHandler" isExpanded="true"> - <dc:Bounds height="337.0" width="856.0" x="133.0" y="471.0"/> + <dc:Bounds x="213" y="461" width="895" height="549" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_catchErrors"> - <dc:Bounds height="36.0" width="36.0" x="204.0" y="555.0"/> + <dc:Bounds x="263" y="771" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="109.0" x="168.0" y="596.0"/> + <dc:Bounds x="239" y="812" width="86" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_235" bpmnElement="EndEvent_4"> - <dc:Bounds height="36.0" width="36.0" x="876.0" y="555.0"/> + <dc:Bounds x="989" y="771" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="924.0" y="562.0"/> + <dc:Bounds x="1042" y="778" width="19" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_304" bpmnElement="ScriptTask_prepareDbInfraRequest"> - <dc:Bounds height="80.0" width="100.0" x="1160.0" y="134.0"/> + <dc:Bounds x="835" y="134" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_103" bpmnElement="ServiceTask_callDbInfraUpdate"> - <dc:Bounds height="80.0" width="100.0" x="1298.0" y="135.0"/> + <dc:Bounds x="963" y="134" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_305" bpmnElement="ScriptTask_postCompletionRequest"> - <dc:Bounds height="80.0" width="100.0" x="1442.0" y="136.0"/> + <dc:Bounds x="1086" y="134" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_37" bpmnElement="CallActivity_completeMsoProcess"> - <dc:Bounds height="80.0" width="100.0" x="1598.0" y="135.0"/> + <dc:Bounds x="1211" y="134" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_CallActivity_36" targetElement="_BPMNShape_ScriptTask_304"> - <di:waypoint xsi:type="dc:Point" x="1096.0" y="174.0"/> - <di:waypoint xsi:type="dc:Point" x="1160.0" y="174.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1115.0" y="174.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_304" targetElement="_BPMNShape_ServiceTask_103"> - <di:waypoint xsi:type="dc:Point" x="1260.0" y="174.0"/> - <di:waypoint xsi:type="dc:Point" x="1298.0" y="175.0"/> + <di:waypoint xsi:type="dc:Point" x="935" y="174" /> + <di:waypoint xsi:type="dc:Point" x="963" y="174" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1374.0" y="175.0"/> + <dc:Bounds x="949" y="159" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ServiceTask_103" targetElement="_BPMNShape_ScriptTask_305"> - <di:waypoint xsi:type="dc:Point" x="1398.0" y="175.0"/> - <di:waypoint xsi:type="dc:Point" x="1442.0" y="176.0"/> + <di:waypoint xsi:type="dc:Point" x="1063" y="174" /> + <di:waypoint xsi:type="dc:Point" x="1086" y="174" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1417.0" y="176.0"/> + <dc:Bounds x="1075" y="159" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_305" targetElement="_BPMNShape_CallActivity_37"> - <di:waypoint xsi:type="dc:Point" x="1542.0" y="176.0"/> - <di:waypoint xsi:type="dc:Point" x="1598.0" y="175.0"/> + <di:waypoint xsi:type="dc:Point" x="1186" y="174" /> + <di:waypoint xsi:type="dc:Point" x="1211" y="174" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1653.0" y="176.0"/> + <dc:Bounds x="1199" y="159" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_306" bpmnElement="ScriptTask_setSuccessIndicator"> - <dc:Bounds height="80.0" width="100.0" x="1742.0" y="134.0"/> + <dc:Bounds x="1337" y="134" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_CallActivity_37" targetElement="_BPMNShape_ScriptTask_306"> - <di:waypoint xsi:type="dc:Point" x="1698.0" y="175.0"/> - <di:waypoint xsi:type="dc:Point" x="1742.0" y="174.0"/> + <di:waypoint xsi:type="dc:Point" x="1311" y="174" /> + <di:waypoint xsi:type="dc:Point" x="1337" y="174" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1767.0" y="174.0"/> + <dc:Bounds x="1324" y="159" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_306" targetElement="_BPMNShape_EndEvent_234"> - <di:waypoint xsi:type="dc:Point" x="1842.0" y="174.0"/> - <di:waypoint xsi:type="dc:Point" x="1866.0" y="174.0"/> - <di:waypoint xsi:type="dc:Point" x="1866.0" y="175.0"/> - <di:waypoint xsi:type="dc:Point" x="1898.0" y="174.0"/> + <di:waypoint xsi:type="dc:Point" x="1437" y="173" /> + <di:waypoint xsi:type="dc:Point" x="1456" y="173" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1963.0" y="175.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ExclusiveGateway_251"> - <di:waypoint xsi:type="dc:Point" x="240.0" y="573.0"/> - <di:waypoint xsi:type="dc:Point" x="286.0" y="573.0"/> - <di:waypoint xsi:type="dc:Point" x="286.0" y="572.0"/> - <di:waypoint xsi:type="dc:Point" x="348.0" y="572.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="286.0" y="572.0"/> + <dc:Bounds x="1447" y="158" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_307" bpmnElement="ScriptTask_prefalloutHandlerRequest"> - <dc:Bounds height="80.0" width="100.0" x="576.0" y="533.0"/> + <dc:Bounds x="725" y="749" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_50" bpmnElement="CallActivity_callFalloutHandler"> - <dc:Bounds height="80.0" width="100.0" x="720.0" y="533.0"/> + <dc:Bounds x="858" y="749" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_ScriptTask_307" targetElement="_BPMNShape_CallActivity_50"> - <di:waypoint xsi:type="dc:Point" x="676.0" y="573.0"/> - <di:waypoint xsi:type="dc:Point" x="720.0" y="573.0"/> + <di:waypoint xsi:type="dc:Point" x="825" y="789" /> + <di:waypoint xsi:type="dc:Point" x="858" y="789" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="694.0" y="573.0"/> + <dc:Bounds x="842" y="774" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_50" targetElement="_BPMNShape_EndEvent_235"> - <di:waypoint xsi:type="dc:Point" x="820.0" y="573.0"/> - <di:waypoint xsi:type="dc:Point" x="876.0" y="573.0"/> + <di:waypoint xsi:type="dc:Point" x="958" y="789" /> + <di:waypoint xsi:type="dc:Point" x="989" y="789" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="842.0" y="573.0"/> + <dc:Bounds x="974" y="774" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_251" bpmnElement="ExclusiveGateway_isSyncResponseSent" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="348.0" y="547.0"/> + <dc:Bounds x="380" y="764" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="129.0" x="309.0" y="602.0"/> + <dc:Bounds x="367" y="819" width="77" height="24" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_syncResponseSent" sourceElement="_BPMNShape_ExclusiveGateway_251" targetElement="_BPMNShape_ScriptTask_307"> - <di:waypoint xsi:type="dc:Point" x="398.0" y="572.0"/> - <di:waypoint xsi:type="dc:Point" x="493.0" y="572.0"/> - <di:waypoint xsi:type="dc:Point" x="493.0" y="573.0"/> - <di:waypoint xsi:type="dc:Point" x="576.0" y="573.0"/> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_308" bpmnElement="ScriptTask_sendSyncErrorResp"> + <dc:Bounds x="355" y="879" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_308" targetElement="_BPMNShape_ScriptTask_307"> + <di:waypoint xsi:type="dc:Point" x="455" y="919" /> + <di:waypoint xsi:type="dc:Point" x="664" y="919" /> + <di:waypoint xsi:type="dc:Point" x="664" y="814" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="450.0" y="572.0"/> + <dc:Bounds x="560" y="904" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_308" bpmnElement="ScriptTask_sendSyncErrorResp"> - <dc:Bounds height="80.0" width="100.0" x="324.0" y="672.0"/> + <bpmndi:BPMNShape id="ExclusiveGateway_09n39bk_di" bpmnElement="ExclusiveGateway_09n39bk" isMarkerVisible="true"> + <dc:Bounds x="492.646" y="764" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="482" y="814" width="71" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0z3e4ts_di" bpmnElement="Task_0nc3wxy"> + <dc:Bounds x="468" y="644" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_syncResponseNotSent" sourceElement="_BPMNShape_ExclusiveGateway_251" targetElement="_BPMNShape_ScriptTask_308"> - <di:waypoint xsi:type="dc:Point" x="373.0" y="597.0"/> - <di:waypoint xsi:type="dc:Point" x="373.0" y="634.0"/> - <di:waypoint xsi:type="dc:Point" x="374.0" y="634.0"/> - <di:waypoint xsi:type="dc:Point" x="374.0" y="672.0"/> + <bpmndi:BPMNShape id="CallActivity_1td0fj3_di" bpmnElement="Task_1b9yx6k"> + <dc:Bounds x="468" y="530" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0mld0ou_di" bpmnElement="Task_1lkduwj"> + <dc:Bounds x="614" y="530" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="InclusiveGateway_1gkubx4_di" bpmnElement="ExclusiveGateway_0of872x"> + <dc:Bounds x="639" y="764" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="22.0" x="363.0" y="634.0"/> + <dc:Bounds x="664" y="814" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1tfi3sp_di" bpmnElement="SequenceFlow_1tfi3sp"> + <di:waypoint xsi:type="dc:Point" x="299" y="789" /> + <di:waypoint xsi:type="dc:Point" x="380" y="789" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="340" y="764" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_308" targetElement="_BPMNShape_ScriptTask_307"> - <di:waypoint xsi:type="dc:Point" x="424.0" y="712.0"/> - <di:waypoint xsi:type="dc:Point" x="608.0" y="712.0"/> - <di:waypoint xsi:type="dc:Point" x="626.0" y="712.0"/> - <di:waypoint xsi:type="dc:Point" x="626.0" y="613.0"/> + <bpmndi:BPMNEdge id="SequenceFlow_0x34g02_di" bpmnElement="SequenceFlow_0x34g02"> + <di:waypoint xsi:type="dc:Point" x="405" y="814" /> + <di:waypoint xsi:type="dc:Point" x="405" y="879" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="530.0" y="712.0"/> + <dc:Bounds x="413" y="847" width="14" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_CallActivity_51" bpmnElement="CallActivity_callGenericGetSI"> - <dc:Bounds height="80.0" width="100.0" x="720.0" y="134.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_254" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="887.0" y="148.0"/> + <bpmndi:BPMNEdge id="SequenceFlow_1q9kksk_di" bpmnElement="SequenceFlow_1q9kksk"> + <di:waypoint xsi:type="dc:Point" x="430" y="789" /> + <di:waypoint xsi:type="dc:Point" x="493" y="789" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="912.0" y="203.0"/> + <dc:Bounds x="453" y="764" width="18" height="12" /> </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_CallActivity_51" targetElement="_BPMNShape_ExclusiveGateway_254"> - <di:waypoint xsi:type="dc:Point" x="820.0" y="174.0"/> - <di:waypoint xsi:type="dc:Point" x="853.0" y="174.0"/> - <di:waypoint xsi:type="dc:Point" x="853.0" y="173.0"/> - <di:waypoint xsi:type="dc:Point" x="887.0" y="173.0"/> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_serviceInstanceFound" sourceElement="_BPMNShape_ExclusiveGateway_254" targetElement="_BPMNShape_CallActivity_36"> - <di:waypoint xsi:type="dc:Point" x="937.0" y="173.0"/> - <di:waypoint xsi:type="dc:Point" x="966.0" y="173.0"/> - <di:waypoint xsi:type="dc:Point" x="966.0" y="174.0"/> - <di:waypoint xsi:type="dc:Point" x="996.0" y="174.0"/> + <bpmndi:BPMNEdge id="SequenceFlow_1cu5t8k_di" bpmnElement="SequenceFlow_1cu5t8k"> + <di:waypoint xsi:type="dc:Point" x="543" y="789" /> + <di:waypoint xsi:type="dc:Point" x="639" y="789" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="584" y="764" width="14" height="12" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_237" bpmnElement="EndEvent_serviceInstanceNotFound"> - <dc:Bounds height="36.0" width="36.0" x="895.0" y="389.0"/> + <bpmndi:BPMNEdge id="SequenceFlow_1tfh1vm_di" bpmnElement="SequenceFlow_1tfh1vm"> + <di:waypoint xsi:type="dc:Point" x="518" y="764" /> + <di:waypoint xsi:type="dc:Point" x="518" y="724" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="913.0" y="430.0"/> + <dc:Bounds x="524" y="734" width="18" height="12" /> </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_serviceInstanceNotFound" sourceElement="_BPMNShape_ExclusiveGateway_254" targetElement="_BPMNShape_ScriptTask_312"> - <di:waypoint xsi:type="dc:Point" x="912.0" y="198.0"/> - <di:waypoint xsi:type="dc:Point" x="912.0" y="264.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0b1nrfk_di" bpmnElement="SequenceFlow_0b1nrfk"> + <di:waypoint xsi:type="dc:Point" x="518" y="644" /> + <di:waypoint xsi:type="dc:Point" x="518" y="610" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="22.0" x="919.0" y="226.0"/> + <dc:Bounds x="533" y="627" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_312" bpmnElement="ScriptTask_buildServiceInstanceNotFoundError"> - <dc:Bounds height="80.0" width="100.0" x="862.0" y="264.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ScriptTask_312" targetElement="_BPMNShape_EndEvent_237"> - <di:waypoint xsi:type="dc:Point" x="912.0" y="344.0"/> - <di:waypoint xsi:type="dc:Point" x="913.0" y="389.0"/> + <bpmndi:BPMNEdge id="SequenceFlow_08vm13o_di" bpmnElement="SequenceFlow_08vm13o"> + <di:waypoint xsi:type="dc:Point" x="568" y="570" /> + <di:waypoint xsi:type="dc:Point" x="591" y="570" /> + <di:waypoint xsi:type="dc:Point" x="591" y="570" /> + <di:waypoint xsi:type="dc:Point" x="614" y="570" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="606" y="570" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_097zy8w_di" bpmnElement="SequenceFlow_097zy8w"> + <di:waypoint xsi:type="dc:Point" x="664" y="610" /> + <di:waypoint xsi:type="dc:Point" x="664" y="764" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="679" y="687" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1v1jx7y_di" bpmnElement="SequenceFlow_1v1jx7y"> + <di:waypoint xsi:type="dc:Point" x="689" y="789" /> + <di:waypoint xsi:type="dc:Point" x="725" y="789" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="707" y="774" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0djjra2_di" bpmnElement="SequenceFlow_0djjra2"> + <di:waypoint xsi:type="dc:Point" x="805" y="174" /> + <di:waypoint xsi:type="dc:Point" x="835" y="174" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="910.0" y="370.0"/> + <dc:Bounds x="820" y="159" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> -</bpmn2:definitions>
\ No newline at end of file +</bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVnfInfra.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVnfInfra.bpmn index b10e98b56f..e78bde6f29 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVnfInfra.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVnfInfra.bpmn @@ -20,7 +20,7 @@ createVnf.preProcessRequest(execution)]]></bpmn2:script> CreateVnfInfra createVnf = new CreateVnfInfra() createVnf.sendSyncResponse(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="sendResponse" targetRef="CreateVNF" /> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="sendResponse" targetRef="QueryCatalogDB" /> <bpmn2:callActivity id="CreateVNF" name="Create VNF" calledElement="DoCreateVnf"> <bpmn2:extensionElements> <camunda:in source="CREVI_requestId" target="msoRequestId" /> @@ -38,15 +38,16 @@ createVnf.sendSyncResponse(execution)]]></bpmn2:script> <camunda:out source="WorkflowException" target="WorkflowException" /> <camunda:in source="CREVI_lcpCloudRegionId" target="lcpCloudRegionId" /> <camunda:in source="CREVI_tenantId" target="tenandId" /> + <camunda:in source="CREVI_vnfResourceDecomposition" target="vnfResourceDecomposition" /> </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0ed0uiq</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_0lso26t</bpmn2:outgoing> </bpmn2:callActivity> <bpmn2:subProcess id="javaErrorHandlingSubProcess" name="Java Exception Handling Sub Process" triggeredByEvent="true"> <bpmn2:scriptTask id="processJavaError" name="Process Error" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.utils.* + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.utils.* ExceptionUtil exceptionUtil = new ExceptionUtil() exceptionUtil.processJavaException(execution)]]></bpmn2:script> </bpmn2:scriptTask> @@ -61,7 +62,7 @@ exceptionUtil.processJavaException(execution)]]></bpmn2:script> <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="StartEvent_2" targetRef="processJavaError" /> </bpmn2:subProcess> <bpmn2:subProcess id="bpmnErrorHandlingSubProcess" name="Error Handling Sub Process" triggeredByEvent="true"> - <bpmn2:callActivity id="callFalloutHandler" name="Call
FalloutHandler" calledElement="FalloutHandler"> + <bpmn2:callActivity id="callFalloutHandler" name="Call FalloutHandler" calledElement="FalloutHandler"> <bpmn2:extensionElements> <camunda:in source="CREVI_falloutRequest" target="FalloutHandlerRequest" /> <camunda:in source="CREVI_requestId" target="requestId" /> @@ -110,7 +111,7 @@ createVnf.prepareCompletionHandlerRequest(execution)]]></bpmn2:script> <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" /> </bpmn2:endEvent> - <bpmn2:callActivity id="callCompletionHandler" name="Completion
Handler" calledElement="CompleteMsoProcess"> + <bpmn2:callActivity id="callCompletionHandler" name="Completion Handler" calledElement="CompleteMsoProcess"> <bpmn2:extensionElements> <camunda:in source="CREVI_completionHandlerRequest" target="CompleteMsoProcessRequest" /> <camunda:in source="CREVI_requestId" target="mso-request-id" /> @@ -122,6 +123,14 @@ createVnf.prepareCompletionHandlerRequest(execution)]]></bpmn2:script> </bpmn2:callActivity> <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="callCompletionHandler" targetRef="EndEvent_3" /> <bpmn2:sequenceFlow id="SequenceFlow_0lso26t" sourceRef="CreateVNF" targetRef="postProcess" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ed0uiq" sourceRef="QueryCatalogDB" targetRef="CreateVNF" /> + <bpmn2:scriptTask id="QueryCatalogDB" name="Query Catalog DB" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ed0uiq</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +CreateVnfInfra createVnf = new CreateVnfInfra() +createVnf.queryCatalogDB(execution)]]></bpmn2:script> + </bpmn2:scriptTask> </bpmn2:process> <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" /> <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> @@ -144,29 +153,29 @@ createVnf.prepareCompletionHandlerRequest(execution)]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_286" bpmnElement="sendResponse"> - <dc:Bounds x="360" y="200" width="100" height="80" /> + <dc:Bounds x="341" y="200" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_285" targetElement="_BPMNShape_ScriptTask_286"> <di:waypoint xsi:type="dc:Point" x="316" y="240" /> - <di:waypoint xsi:type="dc:Point" x="360" y="240" /> + <di:waypoint xsi:type="dc:Point" x="341" y="240" /> <bpmndi:BPMNLabel> - <dc:Bounds x="347" y="240" width="6" height="6" /> + <dc:Bounds x="329" y="225" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_59" bpmnElement="CreateVNF"> - <dc:Bounds x="504" y="200" width="100" height="80" /> + <dc:Bounds x="618" y="200" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_286" targetElement="_BPMNShape_CallActivity_59"> - <di:waypoint xsi:type="dc:Point" x="460" y="240" /> - <di:waypoint xsi:type="dc:Point" x="504" y="240" /> + <di:waypoint xsi:type="dc:Point" x="441" y="240" /> + <di:waypoint xsi:type="dc:Point" x="478" y="240" /> <bpmndi:BPMNLabel> - <dc:Bounds x="485" y="240" width="6" height="6" /> + <dc:Bounds x="460" y="225" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3"> - <dc:Bounds x="985" y="222" width="36" height="36" /> + <dc:Bounds x="1090" y="222" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1003" y="263" width="0" height="0" /> + <dc:Bounds x="1108" y="263" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_SubProcess_32" bpmnElement="javaErrorHandlingSubProcess" isExpanded="true"> @@ -254,32 +263,42 @@ createVnf.prepareCompletionHandlerRequest(execution)]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_325" bpmnElement="postProcess"> - <dc:Bounds x="663" y="200" width="100" height="80" /> + <dc:Bounds x="766" y="200" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ScriptTask_325" targetElement="_BPMNShape_CallActivity_69"> - <di:waypoint xsi:type="dc:Point" x="763" y="240" /> - <di:waypoint xsi:type="dc:Point" x="816" y="240" /> + <di:waypoint xsi:type="dc:Point" x="866" y="240" /> + <di:waypoint xsi:type="dc:Point" x="907" y="240" /> <bpmndi:BPMNLabel> - <dc:Bounds x="790" y="225" width="0" height="0" /> + <dc:Bounds x="887" y="225" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_69" bpmnElement="callCompletionHandler"> - <dc:Bounds x="816" y="200" width="100" height="80" /> + <dc:Bounds x="907" y="200" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_CallActivity_69" targetElement="_BPMNShape_EndEvent_228"> - <di:waypoint xsi:type="dc:Point" x="916" y="240" /> - <di:waypoint xsi:type="dc:Point" x="985" y="240" /> + <di:waypoint xsi:type="dc:Point" x="1007" y="240" /> + <di:waypoint xsi:type="dc:Point" x="1090" y="240" /> <bpmndi:BPMNLabel> - <dc:Bounds x="951" y="225" width="0" height="0" /> + <dc:Bounds x="1049" y="225" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_0lso26t_di" bpmnElement="SequenceFlow_0lso26t"> - <di:waypoint xsi:type="dc:Point" x="604" y="240" /> - <di:waypoint xsi:type="dc:Point" x="663" y="240" /> + <di:waypoint xsi:type="dc:Point" x="718" y="240" /> + <di:waypoint xsi:type="dc:Point" x="766" y="240" /> <bpmndi:BPMNLabel> - <dc:Bounds x="634" y="215" width="0" height="0" /> + <dc:Bounds x="742" y="225" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ed0uiq_di" bpmnElement="SequenceFlow_0ed0uiq"> + <di:waypoint xsi:type="dc:Point" x="578" y="240" /> + <di:waypoint xsi:type="dc:Point" x="618" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="598" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0z4xe39_di" bpmnElement="QueryCatalogDB"> + <dc:Bounds x="478" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteGenericMacroServiceNetworkVnf.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteGenericMacroServiceNetworkVnf.bpmn deleted file mode 100644 index bb2c487e8a..0000000000 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteGenericMacroServiceNetworkVnf.bpmn +++ /dev/null @@ -1,773 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> - <bpmn2:process id="DeleteGenericMacroServiceNetworkVnf" name="DeleteGenericMacroServiceNetworkVnf" isExecutable="true"> - <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def DeleteGenericMacroServiceNetworkVnf = new DeleteGenericMacroServiceNetworkVnf() -DeleteGenericMacroServiceNetworkVnf.sendSyncResponse(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="sendSyncAckResponse_ScriptTask" targetRef="IntermediateThrowEvent_2" /> - <bpmn2:startEvent id="createVIPR_startEvent" name="Start Flow"> - <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> - </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createVIPR_startEvent" targetRef="preProcessRequest_ScriptTask" /> - <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def DeleteGenericMacroServiceNetworkVnf = new DeleteGenericMacroServiceNetworkVnf() -DeleteGenericMacroServiceNetworkVnf.preProcessRequest(execution) -]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="sendSyncAckResponse_ScriptTask" /> - <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" name="vIPR-ATM"> - <bpmn2:outgoing>SequenceFlow_10o22u2</bpmn2:outgoing> - <bpmn2:linkEventDefinition id="_LinkEventDefinition_37" name="vIPR-ATM" /> - </bpmn2:intermediateCatchEvent> - <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Post Process & Completion Request" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_12ilko1</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def DeleteGenericMacroServiceNetworkVnf = new DeleteGenericMacroServiceNetworkVnf() -DeleteGenericMacroServiceNetworkVnf.postProcessResponse(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="callCompleteMsoProcess_CallActivity" /> - <bpmn2:callActivity id="callCompleteMsoProcess_CallActivity" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> - <bpmn2:extensionElements> - <camunda:in variables="all" /> - <camunda:out variables="all" /> - <camunda:in source="DELVAS_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" /> - <camunda:in source="requestId" target="requestId" /> - <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> - <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> - <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> - <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="callCompleteMsoProcess_CallActivity" targetRef="ScriptTask_2" /> - <bpmn2:scriptTask id="ScriptTask_2" name="Set Success Indicator" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> - <bpmn2:script><![CDATA[// The following variable is checked by the unit test -execution.setVariable("DeleteGenericMacroServiceNetworkVnfSuccessIndicator", true)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_2" targetRef="DeleteVIPR_EndEvent" /> - <bpmn2:endEvent id="DeleteVIPR_EndEvent" name="End"> - <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> - <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_13" /> - </bpmn2:endEvent> - <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> - <bpmn2:startEvent id="StartEvent_1"> - <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> - <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" errorRef="Error_1" /> - </bpmn2:startEvent> - <bpmn2:endEvent id="EndEvent_1"> - <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> - </bpmn2:endEvent> - <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> - <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def DeleteServiceInstanceInfra = new DeleteServiceInstanceInfra() -DeleteServiceInstanceInfra.processJavaException(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> - </bpmn2:subProcess> - <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_4" name="FinishProcess"> - <bpmn2:outgoing>SequenceFlow_12ilko1</bpmn2:outgoing> - <bpmn2:linkEventDefinition id="_LinkEventDefinition_39" name="FinishProcess" /> - </bpmn2:intermediateCatchEvent> - <bpmn2:callActivity id="doDeleteNetworkInstance_CallActivity" name="DoDelete Network Instance" calledElement="DoDeleteNetworkInstance"> - <bpmn2:extensionElements> - <camunda:in source="msoRequestId" target="msoRequestId" /> - <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> - <camunda:in source="tenantId" target="tenantId" /> - <camunda:in source="disableRollback" target="disableRollback" /> - <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> - <camunda:in source="failIfExists" target="failIfExists" /> - <camunda:out source="WorkflowException" target="WorkflowException" /> - <camunda:out source="rollbackData" target="DELNWKI_rollbackData" /> - <camunda:out source="rolledBack" target="DELNWKI_rolledBack" /> - <camunda:out source="wasDeleted" target="wasDeleted" /> - <camunda:in source="networkId" target="networkId" /> - <camunda:in source="sdncVersion" target="sdncVersion" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_1bwbn7r</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_12ag2bk</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:scriptTask id="ScriptTask_PrepareNetworkDelete" name="Prepare for Network Delete" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_0cmebdc</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_0dfkfh1</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1bwbn7r</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def DeleteGenericMacroServiceNetworkVnf= new DeleteGenericMacroServiceNetworkVnf() -DeleteGenericMacroServiceNetworkVnf.prepareNetworkDelete(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:callActivity id="doDeleteServiceInstance_CallActivity" name="DoDelete ServiceInstance " calledElement="DoDeleteServiceInstance"> - <bpmn2:extensionElements> - <camunda:in source="msoRequestId" target="msoRequestId" /> - <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> - <camunda:out source="rollbackData" target="DCRESI_rollbackData" /> - <camunda:in source="failExists" target="failExists" /> - <camunda:in source="disableRollback" target="disableRollback" /> - <camunda:out source="rolledBack" target="DCRESI_rolledBack" /> - <camunda:out source="WorkflowException" target="WorkflowException" /> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> - <camunda:in source="sdncVersion" target="sdncVersion" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_10o22u2</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_04ao07f</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:callActivity id="doDeleteVNFandModules_CallActivity" name="DoDelete VNF and Modules " calledElement="DoDeleteVnfAndModules"> - <bpmn2:extensionElements> - <camunda:in source="msoRequestId" target="msoRequestId" /> - <camunda:in source="disableRollback" target="disableRollback" /> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> - <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> - <camunda:in source="vnfId" target="vnfId" /> - <camunda:in source="sdncVersion" target="sdncVersion" /> - <camunda:out source="rollbackData" target="rollbackData" /> - <camunda:out source="WorkflowException" target="WorkflowException" /> - <camunda:out source="rolledBack" target="rolledBack" /> - <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> - <camunda:in source="tenantId" target="tenantId" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_1h77psn</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1dmn40p</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:scriptTask id="ScriptTask_3" name="Prepare to Delete VNF" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_0bvecvm</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_0mr8jgt</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1h77psn</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def DeleteGenericMacroServiceNetworkVnf= new DeleteGenericMacroServiceNetworkVnf() -DeleteGenericMacroServiceNetworkVnf.prepareVnfAndModulesDelete(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_4" name="GoToStartNetworks"> - <bpmn2:incoming>SequenceFlow_0xowenu</bpmn2:incoming> - <bpmn2:linkEventDefinition id="_LinkEventDefinition_41" name="StartNetworks" /> - </bpmn2:intermediateThrowEvent> - <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_2" name="GoQueryServiceInstance"> - <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> - <bpmn2:linkEventDefinition id="_LinkEventDefinition_38" name="QueryServiceInstance" /> - </bpmn2:intermediateThrowEvent> - <bpmn2:subProcess id="SubProcess_0s6hpty" name="Subprocess For Exception / FalloutHandler " triggeredByEvent="true"> - <bpmn2:startEvent id="StartEvent_1bwmffk" name="Fault Start"> - <bpmn2:outgoing>SequenceFlow_06llof4</bpmn2:outgoing> - <bpmn2:errorEventDefinition /> - </bpmn2:startEvent> - <bpmn2:callActivity id="CallActivity_0jw5tqa" name="Call FalloutHandlerV1" calledElement="FalloutHandler"> - <bpmn2:extensionElements> - <camunda:in source="DELVAS_falloutRequest" target="FalloutHandlerRequest" /> - <camunda:in source="msoRequestId" target="mso-request-id" /> - <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> - <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> - <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> - <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_0807ukc</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_19yywk8</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:endEvent id="EndEvent_04xute7"> - <bpmn2:incoming>SequenceFlow_19yywk8</bpmn2:incoming> - </bpmn2:endEvent> - <bpmn2:scriptTask id="ScriptTask_0yk02h3" name="Prepare FalloutHandler" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_06llof4</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0807ukc</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def DeleteGenericMacroServiceNetworkVnf = new DeleteGenericMacroServiceNetworkVnf() -DeleteGenericMacroServiceNetworkVnf.prepareFalloutRequest(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_0807ukc" sourceRef="ScriptTask_0yk02h3" targetRef="CallActivity_0jw5tqa" /> - <bpmn2:sequenceFlow id="SequenceFlow_19yywk8" sourceRef="CallActivity_0jw5tqa" targetRef="EndEvent_04xute7" /> - <bpmn2:sequenceFlow id="SequenceFlow_06llof4" sourceRef="StartEvent_1bwmffk" targetRef="ScriptTask_0yk02h3" /> - </bpmn2:subProcess> - <bpmn2:sequenceFlow id="SequenceFlow_10o22u2" sourceRef="IntermediateCatchEvent_3" targetRef="doDeleteServiceInstance_CallActivity" /> - <bpmn2:sequenceFlow id="SequenceFlow_12ilko1" sourceRef="IntermediateCatchEvent_4" targetRef="postProcessAndCompletionRequest_ScriptTask" /> - <bpmn2:sequenceFlow id="SequenceFlow_1bwbn7r" sourceRef="ScriptTask_PrepareNetworkDelete" targetRef="doDeleteNetworkInstance_CallActivity" /> - <bpmn2:sequenceFlow id="SequenceFlow_1n7r495" name="No" sourceRef="ExclusiveGateway_0fe690i" targetRef="ExclusiveGateway_1os8cm5" /> - <bpmn2:sequenceFlow id="SequenceFlow_1h77psn" sourceRef="ScriptTask_3" targetRef="doDeleteVNFandModules_CallActivity" /> - <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1nh09nr" name="StartNetworks"> - <bpmn2:outgoing>SequenceFlow_1vwssu7</bpmn2:outgoing> - <bpmn2:linkEventDefinition name="StartNetworks" /> - </bpmn2:intermediateCatchEvent> - <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0prlju0" name="GoTo FinishProcess"> - <bpmn2:incoming>SequenceFlow_04ao07f</bpmn2:incoming> - <bpmn2:linkEventDefinition name="FinishProcess" /> - </bpmn2:intermediateThrowEvent> - <bpmn2:exclusiveGateway id="ExclusiveGateway_0b9wd4f" name="Delete Network(s)?" default="SequenceFlow_1f26zbk"> - <bpmn2:incoming>SequenceFlow_1vwssu7</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0cmebdc</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_1f26zbk</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:exclusiveGateway id="ExclusiveGateway_0fe690i" name="Delete Additional Networks?" default="SequenceFlow_1n7r495"> - <bpmn2:incoming>SequenceFlow_04vlq8r</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1n7r495</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_0dfkfh1</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_0dfkfh1" name="Yes" sourceRef="ExclusiveGateway_0fe690i" targetRef="ScriptTask_PrepareNetworkDelete"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELVAS_networksDeletedCount") < execution.getVariable("DELVAS_networksCount")}]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_0cmebdc" name="Yes" sourceRef="ExclusiveGateway_0b9wd4f" targetRef="ScriptTask_PrepareNetworkDelete"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELVAS_networksCount") > 0}]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:exclusiveGateway id="ExclusiveGateway_1os8cm5"> - <bpmn2:incoming>SequenceFlow_1n7r495</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_1f26zbk</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1j7n6qx</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_1f26zbk" name="No" sourceRef="ExclusiveGateway_0b9wd4f" targetRef="ExclusiveGateway_1os8cm5" /> - <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0nreq15" name="GoTo vIPR-ATM"> - <bpmn2:incoming>SequenceFlow_1j7n6qx</bpmn2:incoming> - <bpmn2:linkEventDefinition name="vIPR-ATM" /> - </bpmn2:intermediateThrowEvent> - <bpmn2:sequenceFlow id="SequenceFlow_1vwssu7" sourceRef="IntermediateCatchEvent_1nh09nr" targetRef="ExclusiveGateway_0b9wd4f" /> - <bpmn2:sequenceFlow id="SequenceFlow_1j7n6qx" sourceRef="ExclusiveGateway_1os8cm5" targetRef="IntermediateThrowEvent_0nreq15" /> - <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0rlqdvq" name="StartVnfs"> - <bpmn2:outgoing>SequenceFlow_10tbv62</bpmn2:outgoing> - <bpmn2:linkEventDefinition name="StartVnfs" /> - </bpmn2:intermediateCatchEvent> - <bpmn2:exclusiveGateway id="ExclusiveGateway_1nlocis" name="Delete VNF?" default="SequenceFlow_0w7328u"> - <bpmn2:incoming>SequenceFlow_10tbv62</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0bvecvm</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_0w7328u</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:exclusiveGateway id="ExclusiveGateway_04q1qud"> - <bpmn2:incoming>SequenceFlow_0w7328u</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_1wc8h5g</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0xowenu</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_10tbv62" sourceRef="IntermediateCatchEvent_0rlqdvq" targetRef="ExclusiveGateway_1nlocis" /> - <bpmn2:sequenceFlow id="SequenceFlow_0bvecvm" name="Yes" sourceRef="ExclusiveGateway_1nlocis" targetRef="ScriptTask_3"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELVAS_vnfsCount") > 0}]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_0w7328u" name="No" sourceRef="ExclusiveGateway_1nlocis" targetRef="ExclusiveGateway_04q1qud" /> - <bpmn2:sequenceFlow id="SequenceFlow_0xowenu" sourceRef="ExclusiveGateway_04q1qud" targetRef="IntermediateThrowEvent_4" /> - <bpmn2:scriptTask id="ScriptTask_04o8gb3" name="Validate Network Delete" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_12ag2bk</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_04vlq8r</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def DeleteGenericMacroServiceNetworkVnf= new DeleteGenericMacroServiceNetworkVnf() -DeleteGenericMacroServiceNetworkVnf.validateNetworkDelete(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_12ag2bk" sourceRef="doDeleteNetworkInstance_CallActivity" targetRef="ScriptTask_04o8gb3" /> - <bpmn2:sequenceFlow id="SequenceFlow_04vlq8r" sourceRef="ScriptTask_04o8gb3" targetRef="ExclusiveGateway_0fe690i" /> - <bpmn2:callActivity id="callGetServiceInstance" name="Get Service Instance" calledElement="GenericGetService"> - <bpmn2:extensionElements> - <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> - <camunda:in source="GENGS_type" target="GENGS_type" /> - <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> - <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> - <camunda:out source="GENGS_service" target="GENGS_service" /> - <camunda:out source="WorkflowException" target="WorkflowException" /> - <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" /> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_0jek18q</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1ttswdr</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:scriptTask id="ScriptTask_05m3m2e" name="Process Response & ready data for subflows" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_1ttswdr</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_18103ca</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def DeleteGenericMacroServiceNetworkVnf = new DeleteGenericMacroServiceNetworkVnf() -DeleteGenericMacroServiceNetworkVnf.prepareServiceInstanceDelete(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_112zjtp" name="QueryServiceInstance"> - <bpmn2:outgoing>SequenceFlow_0jek18q</bpmn2:outgoing> - <bpmn2:linkEventDefinition name="QueryServiceInstance" /> - </bpmn2:intermediateCatchEvent> - <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_162gs5w" name="GoToStartVnfs"> - <bpmn2:incoming>SequenceFlow_18103ca</bpmn2:incoming> - <bpmn2:linkEventDefinition name="StartVnfs" /> - </bpmn2:intermediateThrowEvent> - <bpmn2:sequenceFlow id="SequenceFlow_0jek18q" sourceRef="IntermediateCatchEvent_112zjtp" targetRef="callGetServiceInstance" /> - <bpmn2:sequenceFlow id="SequenceFlow_18103ca" sourceRef="ScriptTask_05m3m2e" targetRef="IntermediateThrowEvent_162gs5w" /> - <bpmn2:sequenceFlow id="SequenceFlow_04ao07f" sourceRef="doDeleteServiceInstance_CallActivity" targetRef="IntermediateThrowEvent_0prlju0" /> - <bpmn2:sequenceFlow id="SequenceFlow_1ttswdr" sourceRef="callGetServiceInstance" targetRef="ScriptTask_05m3m2e" /> - <bpmn2:scriptTask id="ScriptTask_1ildy3f" name="Validate VNF delete" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_1dmn40p</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0g2cw86</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def DeleteGenericMacroServiceNetworkVnf= new DeleteGenericMacroServiceNetworkVnf() -DeleteGenericMacroServiceNetworkVnf.validateVnfDelete(execution)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:exclusiveGateway id="ExclusiveGateway_1uds6yu" name="Delete Additional VNFs?" default="SequenceFlow_1wc8h5g"> - <bpmn2:incoming>SequenceFlow_0g2cw86</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0mr8jgt</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_1wc8h5g</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_1dmn40p" sourceRef="doDeleteVNFandModules_CallActivity" targetRef="ScriptTask_1ildy3f" /> - <bpmn2:sequenceFlow id="SequenceFlow_0g2cw86" sourceRef="ScriptTask_1ildy3f" targetRef="ExclusiveGateway_1uds6yu" /> - <bpmn2:sequenceFlow id="SequenceFlow_0mr8jgt" name="Yes" sourceRef="ExclusiveGateway_1uds6yu" targetRef="ScriptTask_3"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELVAS_vnfsDeletedCountt") < execution.getVariable("DELVAS_vnfsCount")}]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_1wc8h5g" name="No" sourceRef="ExclusiveGateway_1uds6yu" targetRef="ExclusiveGateway_04q1qud" /> - </bpmn2:process> - <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> - <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> - <bpmndi:BPMNDiagram id="BPMNDiagram_1"> - <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteGenericMacroServiceNetworkVnf"> - <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createVIPR_startEvent"> - <dc:Bounds x="96" y="90" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="82" y="131" width="65" height="22" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> - <dc:Bounds x="285" y="68" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> - <di:waypoint xsi:type="dc:Point" x="132" y="108" /> - <di:waypoint xsi:type="dc:Point" x="285" y="108" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="171" y="108" width="6" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_CallActivity_4" bpmnElement="callCompleteMsoProcess_CallActivity"> - <dc:Bounds x="476" y="1192" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask"> - <dc:Bounds x="285" y="1193" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_127"> - <di:waypoint xsi:type="dc:Point" x="385" y="108" /> - <di:waypoint xsi:type="dc:Point" x="476" y="108" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="271" y="69" width="6" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="sendSyncAckResponse_ScriptTask"> - <dc:Bounds x="476" y="68" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80" targetElement="_BPMNShape_CallActivity_4"> - <di:waypoint xsi:type="dc:Point" x="385" y="1233" /> - <di:waypoint xsi:type="dc:Point" x="476" y="1232" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="431" y="1217.5" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="DeleteVIPR_EndEvent"> - <dc:Bounds x="1046" y="1213" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1054" y="1254" width="19" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_CallActivity_4" targetElement="_BPMNShape_ScriptTask_337"> - <di:waypoint xsi:type="dc:Point" x="576" y="1233" /> - <di:waypoint xsi:type="dc:Point" x="636" y="1233" /> - <di:waypoint xsi:type="dc:Point" x="636" y="1230" /> - <di:waypoint xsi:type="dc:Point" x="803" y="1230" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="651" y="1231.5" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true"> - <dc:Bounds x="686" y="1374" width="405" height="205" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1"> - <dc:Bounds x="754" y="1479" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="772" y="1520" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1"> - <dc:Bounds x="829" y="1457" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1"> - <dc:Bounds x="982" y="1479" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1000" y="1520" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269"> - <di:waypoint xsi:type="dc:Point" x="790" y="1497" /> - <di:waypoint xsi:type="dc:Point" x="829" y="1497" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="818" y="1497" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219"> - <di:waypoint xsi:type="dc:Point" x="929" y="1497" /> - <di:waypoint xsi:type="dc:Point" x="962" y="1497" /> - <di:waypoint xsi:type="dc:Point" x="962" y="1497" /> - <di:waypoint xsi:type="dc:Point" x="982" y="1497" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="977" y="1497" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_CallActivity_75" bpmnElement="doDeleteServiceInstance_CallActivity"> - <dc:Bounds x="285" y="1009" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_127"> - <di:waypoint xsi:type="dc:Point" x="576" y="108" /> - <di:waypoint xsi:type="dc:Point" x="728" y="108" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="652" y="93" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_337" bpmnElement="ScriptTask_2"> - <dc:Bounds x="803" y="1191" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_337" targetElement="_BPMNShape_EndEvent_177"> - <di:waypoint xsi:type="dc:Point" x="903" y="1230" /> - <di:waypoint xsi:type="dc:Point" x="1046" y="1231" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="975" y="1215.5" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_CallActivity_76" bpmnElement="doDeleteNetworkInstance_CallActivity"> - <dc:Bounds x="555" y="722" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_35" bpmnElement="IntermediateCatchEvent_3"> - <dc:Bounds x="100" y="1031" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="92" y="1067" width="51" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_36" bpmnElement="IntermediateCatchEvent_4"> - <dc:Bounds x="100" y="1216" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="82" y="1252" width="71" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_51" bpmnElement="IntermediateThrowEvent_4"> - <dc:Bounds x="1036" y="524" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1011" y="565" width="85" height="24" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_341" bpmnElement="ScriptTask_PrepareNetworkDelete"> - <dc:Bounds x="413" y="719" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_342" bpmnElement="ScriptTask_3"> - <dc:Bounds x="413" y="435" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_CallActivity_81" bpmnElement="doDeleteVNFandModules_CallActivity"> - <dc:Bounds x="555" y="435" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_49" bpmnElement="IntermediateThrowEvent_2"> - <dc:Bounds x="728" y="90" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="703" y="131" width="86" height="26" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="SubProcess_0s6hpty_di" bpmnElement="SubProcess_0s6hpty" isExpanded="true"> - <dc:Bounds x="52" y="1375" width="598" height="203" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="StartEvent_1bwmffk_di" bpmnElement="StartEvent_1bwmffk"> - <dc:Bounds x="123" y="1448" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="117" y="1489" width="50" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="CallActivity_0jw5tqa_di" bpmnElement="CallActivity_0jw5tqa"> - <dc:Bounds x="384" y="1426" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="EndEvent_04xute7_di" bpmnElement="EndEvent_04xute7"> - <dc:Bounds x="539" y="1448" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="557" y="1489" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ScriptTask_0yk02h3_di" bpmnElement="ScriptTask_0yk02h3"> - <dc:Bounds x="237" y="1426" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_10o22u2_di" bpmnElement="SequenceFlow_10o22u2"> - <di:waypoint xsi:type="dc:Point" x="136" y="1049" /> - <di:waypoint xsi:type="dc:Point" x="285" y="1049" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="211" y="1034" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_12ilko1_di" bpmnElement="SequenceFlow_12ilko1"> - <di:waypoint xsi:type="dc:Point" x="136" y="1234" /> - <di:waypoint xsi:type="dc:Point" x="285" y="1233" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="211" y="1218.5" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0807ukc_di" bpmnElement="SequenceFlow_0807ukc"> - <di:waypoint xsi:type="dc:Point" x="337" y="1466" /> - <di:waypoint xsi:type="dc:Point" x="384" y="1466" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="361" y="1451" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_19yywk8_di" bpmnElement="SequenceFlow_19yywk8"> - <di:waypoint xsi:type="dc:Point" x="484" y="1466" /> - <di:waypoint xsi:type="dc:Point" x="539" y="1466" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="512" y="1451" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1bwbn7r_di" bpmnElement="SequenceFlow_1bwbn7r"> - <di:waypoint xsi:type="dc:Point" x="513" y="761" /> - <di:waypoint xsi:type="dc:Point" x="555" y="760" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="534" y="746" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1n7r495_di" bpmnElement="SequenceFlow_1n7r495"> - <di:waypoint xsi:type="dc:Point" x="891" y="762" /> - <di:waypoint xsi:type="dc:Point" x="936" y="762" /> - <di:waypoint xsi:type="dc:Point" x="936" y="792" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="908" y="747" width="14" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1h77psn_di" bpmnElement="SequenceFlow_1h77psn"> - <di:waypoint xsi:type="dc:Point" x="513" y="475" /> - <di:waypoint xsi:type="dc:Point" x="555" y="475" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="534" y="460" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="IntermediateCatchEvent_1nh09nr_di" bpmnElement="IntermediateCatchEvent_1nh09nr"> - <dc:Bounds x="96" y="786" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="80" y="822" width="68" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="IntermediateThrowEvent_0prlju0_di" bpmnElement="IntermediateThrowEvent_0prlju0"> - <dc:Bounds x="508" y="1031" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="491" y="1072" width="70" height="24" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_0b9wd4f_di" bpmnElement="ExclusiveGateway_0b9wd4f" isMarkerVisible="true"> - <dc:Bounds x="345" y="779" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="408" y="811" width="57" height="26" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_0fe690i_di" bpmnElement="ExclusiveGateway_0fe690i" isMarkerVisible="true"> - <dc:Bounds x="841" y="737" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="809" y="795" width="82" height="24" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0dfkfh1_di" bpmnElement="SequenceFlow_0dfkfh1"> - <di:waypoint xsi:type="dc:Point" x="866" y="737" /> - <di:waypoint xsi:type="dc:Point" x="866" y="657" /> - <di:waypoint xsi:type="dc:Point" x="463" y="657" /> - <di:waypoint xsi:type="dc:Point" x="463" y="717" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="657" y="642" width="18" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0cmebdc_di" bpmnElement="SequenceFlow_0cmebdc"> - <di:waypoint xsi:type="dc:Point" x="370" y="779" /> - <di:waypoint xsi:type="dc:Point" x="370" y="759" /> - <di:waypoint xsi:type="dc:Point" x="413" y="759" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="375" y="769" width="19" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ExclusiveGateway_1os8cm5_di" bpmnElement="ExclusiveGateway_1os8cm5" isMarkerVisible="true"> - <dc:Bounds x="911" y="792" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="936" y="847" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1f26zbk_di" bpmnElement="SequenceFlow_1f26zbk"> - <di:waypoint xsi:type="dc:Point" x="370" y="829" /> - <di:waypoint xsi:type="dc:Point" x="370" y="896" /> - <di:waypoint xsi:type="dc:Point" x="936" y="896" /> - <di:waypoint xsi:type="dc:Point" x="936" y="842" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="646" y="881" width="14" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="IntermediateThrowEvent_0nreq15_di" bpmnElement="IntermediateThrowEvent_0nreq15"> - <dc:Bounds x="1046" y="799" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1024" y="840" width="80" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1vwssu7_di" bpmnElement="SequenceFlow_1vwssu7"> - <di:waypoint xsi:type="dc:Point" x="132" y="804" /> - <di:waypoint xsi:type="dc:Point" x="345" y="804" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="239" y="789" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1j7n6qx_di" bpmnElement="SequenceFlow_1j7n6qx"> - <di:waypoint xsi:type="dc:Point" x="961" y="817" /> - <di:waypoint xsi:type="dc:Point" x="1046" y="817" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1004" y="792" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="IntermediateCatchEvent_0rlqdvq_di" bpmnElement="IntermediateCatchEvent_0rlqdvq"> - <dc:Bounds x="86" y="540" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="80" y="576" width="45" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_1nlocis_di" bpmnElement="ExclusiveGateway_1nlocis" isMarkerVisible="true"> - <dc:Bounds x="335" y="533" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="395" y="565" width="62" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_04q1qud_di" bpmnElement="ExclusiveGateway_04q1qud" isMarkerVisible="true"> - <dc:Bounds x="901" y="517" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="926" y="572" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_10tbv62_di" bpmnElement="SequenceFlow_10tbv62"> - <di:waypoint xsi:type="dc:Point" x="122" y="558" /> - <di:waypoint xsi:type="dc:Point" x="335" y="558" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="229" y="533" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0bvecvm_di" bpmnElement="SequenceFlow_0bvecvm"> - <di:waypoint xsi:type="dc:Point" x="360" y="533" /> - <di:waypoint xsi:type="dc:Point" x="360" y="475" /> - <di:waypoint xsi:type="dc:Point" x="413" y="475" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="366" y="494" width="18" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0w7328u_di" bpmnElement="SequenceFlow_0w7328u"> - <di:waypoint xsi:type="dc:Point" x="360" y="584" /> - <di:waypoint xsi:type="dc:Point" x="360" y="607" /> - <di:waypoint xsi:type="dc:Point" x="926" y="607" /> - <di:waypoint xsi:type="dc:Point" x="926" y="568" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="606" y="583" width="14" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0xowenu_di" bpmnElement="SequenceFlow_0xowenu"> - <di:waypoint xsi:type="dc:Point" x="951" y="542" /> - <di:waypoint xsi:type="dc:Point" x="1036" y="542" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="994" y="517" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_04o8gb3_di" bpmnElement="ScriptTask_04o8gb3"> - <dc:Bounds x="699" y="722" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_12ag2bk_di" bpmnElement="SequenceFlow_12ag2bk"> - <di:waypoint xsi:type="dc:Point" x="655" y="762" /> - <di:waypoint xsi:type="dc:Point" x="699" y="762" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="677" y="737" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_04vlq8r_di" bpmnElement="SequenceFlow_04vlq8r"> - <di:waypoint xsi:type="dc:Point" x="799" y="762" /> - <di:waypoint xsi:type="dc:Point" x="820" y="762" /> - <di:waypoint xsi:type="dc:Point" x="820" y="762" /> - <di:waypoint xsi:type="dc:Point" x="841" y="762" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="835" y="762" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="CallActivity_0nmoax4_di" bpmnElement="callGetServiceInstance"> - <dc:Bounds x="285" y="223" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ScriptTask_05m3m2e_di" bpmnElement="ScriptTask_05m3m2e"> - <dc:Bounds x="476" y="223" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="IntermediateCatchEvent_112zjtp_di" bpmnElement="IntermediateCatchEvent_112zjtp"> - <dc:Bounds x="96" y="245" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="72" y="281" width="82" height="25" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="IntermediateThrowEvent_162gs5w_di" bpmnElement="IntermediateThrowEvent_162gs5w"> - <dc:Bounds x="732" y="245" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="713" y="286" width="72" height="13" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0jek18q_di" bpmnElement="SequenceFlow_0jek18q"> - <di:waypoint xsi:type="dc:Point" x="132" y="263" /> - <di:waypoint xsi:type="dc:Point" x="285" y="263" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="209" y="248" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_18103ca_di" bpmnElement="SequenceFlow_18103ca"> - <di:waypoint xsi:type="dc:Point" x="576" y="263" /> - <di:waypoint xsi:type="dc:Point" x="732" y="263" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="654" y="248" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_04ao07f_di" bpmnElement="SequenceFlow_04ao07f"> - <di:waypoint xsi:type="dc:Point" x="385" y="1049" /> - <di:waypoint xsi:type="dc:Point" x="508" y="1049" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="447" y="1034" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1ttswdr_di" bpmnElement="SequenceFlow_1ttswdr"> - <di:waypoint xsi:type="dc:Point" x="385" y="263" /> - <di:waypoint xsi:type="dc:Point" x="422" y="263" /> - <di:waypoint xsi:type="dc:Point" x="422" y="263" /> - <di:waypoint xsi:type="dc:Point" x="476" y="263" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="437" y="263" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_1ildy3f_di" bpmnElement="ScriptTask_1ildy3f"> - <dc:Bounds x="687" y="435" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ExclusiveGateway_1uds6yu_di" bpmnElement="ExclusiveGateway_1uds6yu" isMarkerVisible="true"> - <dc:Bounds x="828" y="450" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="797" y="508" width="80" height="24" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1dmn40p_di" bpmnElement="SequenceFlow_1dmn40p"> - <di:waypoint xsi:type="dc:Point" x="655" y="475" /> - <di:waypoint xsi:type="dc:Point" x="687" y="475" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="671" y="450" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0g2cw86_di" bpmnElement="SequenceFlow_0g2cw86"> - <di:waypoint xsi:type="dc:Point" x="787" y="475" /> - <di:waypoint xsi:type="dc:Point" x="828" y="475" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="808" y="460" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0mr8jgt_di" bpmnElement="SequenceFlow_0mr8jgt"> - <di:waypoint xsi:type="dc:Point" x="853" y="453" /> - <di:waypoint xsi:type="dc:Point" x="853" y="364" /> - <di:waypoint xsi:type="dc:Point" x="463" y="364" /> - <di:waypoint xsi:type="dc:Point" x="463" y="435" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="649" y="349" width="18" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1wc8h5g_di" bpmnElement="SequenceFlow_1wc8h5g"> - <di:waypoint xsi:type="dc:Point" x="878" y="475" /> - <di:waypoint xsi:type="dc:Point" x="926" y="475" /> - <di:waypoint xsi:type="dc:Point" x="926" y="517" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="895" y="460" width="14" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_06llof4_di" bpmnElement="SequenceFlow_06llof4"> - <di:waypoint xsi:type="dc:Point" x="159" y="1466" /> - <di:waypoint xsi:type="dc:Point" x="237" y="1466" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="198" y="1441" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - </bpmndi:BPMNPlane> - </bpmndi:BPMNDiagram> -</bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteNetworkInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteNetworkInstance.bpmn index 951ae3c0b5..079599d7ca 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteNetworkInstance.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteNetworkInstance.bpmn @@ -116,7 +116,7 @@ DeleteNetworkInstance.prepareDBRequestError(execution)]]></bpmn2:script> <bpmn2:extensionElements>
<camunda:connector>
<camunda:inputOutput>
- <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter>
+ <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter>
<camunda:inputParameter name="payload">${DELNI_deleteDBRequest}</camunda:inputParameter>
<camunda:inputParameter name="headers">
<camunda:map>
@@ -368,4 +368,4 @@ DeleteNetworkInstance.sendSyncResponse(execution)]]></bpmn2:script> </bpmndi:BPMNShape>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
-</bpmn2:definitions>
\ No newline at end of file +</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVfModuleInfra.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVfModuleInfra.bpmn index 04369acba0..a687d5df87 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVfModuleInfra.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVfModuleInfra.bpmn @@ -79,11 +79,12 @@ dvfm.completionHandlerPrep(execution, 'DELVfModI_CompletionHandlerRequest') <bpmn2:extensionElements> <camunda:connector> <camunda:inputOutput> - <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> <camunda:inputParameter name="method">POST</camunda:inputParameter> <camunda:inputParameter name="headers"> <camunda:map> <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> </camunda:map> </camunda:inputParameter> <camunda:inputParameter name="payload">${DELVfModI_updateInfraRequest}</camunda:inputParameter> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVfModuleVolumeInfraV1.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVfModuleVolumeInfraV1.bpmn index d0051de976..21f74a2a29 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVfModuleVolumeInfraV1.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVfModuleVolumeInfraV1.bpmn @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="_MagIIMOUEeW8asg-vCEgWQ" exporter="camunda modeler" exporterVersion="2.7.0" targetNamespace="http://camunda.org/schema/1.0/bpmn"> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> <bpmn2:process id="DeleteVfModuleVolumeInfraV1" name="DeleteVfModuleVolumeInfraV1" isExecutable="true"> <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> @@ -10,11 +10,11 @@ deleteVfMod.executeMethod('preProcessRequest', execution, isDebugLogEnabled) ]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="sendSyncAckResponse_ScriptTask"/> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="sendSyncAckResponse_ScriptTask" /> <bpmn2:startEvent id="deleteNetwork_startEvent" name="Start Flow"> <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="deleteNetwork_startEvent" targetRef="preProcessRequest_ScriptTask"/> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="deleteNetwork_startEvent" targetRef="preProcessRequest_ScriptTask" /> <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> @@ -22,7 +22,7 @@ deleteVfMod.executeMethod('preProcessRequest', execution, isDebugLogEnabled) def deleteVfMod = new DeleteVfModuleVolumeInfraV1() deleteVfMod.executeMethod('sendSyncResponse', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="sendSyncAckResponse_ScriptTask" targetRef="ScriptTask_callRestCloudRegion"/> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="sendSyncAckResponse_ScriptTask" targetRef="ScriptTask_callRestCloudRegion" /> <bpmn2:scriptTask id="ScriptTask_callRestCloudRegion" name="Call REST Query Cloud Region " scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> @@ -37,10 +37,10 @@ delVfModuleVol.executeMethod('callRESTQueryAAICloudRegion', execution, isDebugLo def deleteVfMod = new DeleteVfModuleVolumeInfraV1() deleteVfMod.executeMethod('prepareVnfAdapterDeleteRequest', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="prepareVnfAdapterDelete_ScriptTask_1" targetRef="callVnfAdapterDeleteSubflow_CallActivity"/> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="prepareVnfAdapterDelete_ScriptTask_1" targetRef="callVnfAdapterDeleteSubflow_CallActivity" /> <bpmn2:endEvent id="EndEvent_5"> <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_1"/> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_1" /> </bpmn2:endEvent> <bpmn2:exclusiveGateway id="ExclusiveGateway_3" name="TenantId Match?" default="SequenceFlow_21"> <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> @@ -50,21 +50,21 @@ deleteVfMod.executeMethod('prepareVnfAdapterDeleteRequest', execution, isDebugLo <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="ExclusiveGateway_3" targetRef="prepareVnfAdapterDelete_ScriptTask_1"> <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELVfModVol_tenantId") == execution.getVariable("DELVfModVol_volumeGroupTenantId")}]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ExclusiveGateway_3" targetRef="ScriptTask_2"/> + <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ExclusiveGateway_3" targetRef="ScriptTask_2" /> <bpmn2:callActivity id="callVnfAdapterDeleteSubflow_CallActivity" name="Call Vnf Adapter Delete subflow" calledElement="vnfAdapterRestV1"> <bpmn2:extensionElements> - <camunda:in source="DELVfModVol_deleteVnfARequest" target="vnfAdapterRestV1Request"/> - <camunda:out source="vnfAdapterRestV1Response" target="DELVfModVol_deleteVnfAResponse"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in variables="all"/> - <camunda:out source="WorkflowException" target="WorkflowException"/> - <camunda:out source="VNFREST_SuccessIndicator" target="VNFREST_SuccessIndicator"/> + <camunda:in source="DELVfModVol_deleteVnfARequest" target="vnfAdapterRestV1Request" /> + <camunda:out source="vnfAdapterRestV1Response" target="DELVfModVol_deleteVnfAResponse" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in variables="all" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="VNFREST_SuccessIndicator" target="VNFREST_SuccessIndicator" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="callVnfAdapterDeleteSubflow_CallActivity" targetRef="ExclusiveGateway_2"/> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="callVnfAdapterDeleteSubflow_CallActivity" targetRef="ExclusiveGateway_2" /> <bpmn2:scriptTask id="callAAIQuery_scriptTask" name="Query AAI for Volume Group Info" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> @@ -73,7 +73,7 @@ def deleteVfMod = new DeleteVfModuleVolumeInfraV1() deleteVfMod.executeMethod('queryAAIForVolumeGroup', execution, isDebugLogEnabled) ]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="callAAIQuery_scriptTask" targetRef="ExclusiveGateway_3"/> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="callAAIQuery_scriptTask" targetRef="ExclusiveGateway_3" /> <bpmn2:scriptTask id="ScriptTask_2" name="Handle TenantId Mismatch" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing> @@ -81,27 +81,27 @@ deleteVfMod.executeMethod('queryAAIForVolumeGroup', execution, isDebugLogEnabled def deleteVfMod = new DeleteVfModuleVolumeInfraV1() deleteVfMod.executeMethod('handleTenantIdMismatch', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ScriptTask_2" targetRef="EndEvent_5"/> - <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_callRestCloudRegion" targetRef="ExclusiveGateway_1"/> + <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ScriptTask_2" targetRef="EndEvent_5" /> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_callRestCloudRegion" targetRef="ExclusiveGateway_1" /> <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="is Cloud Region Ok?" default="SequenceFlow_4"> <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ExclusiveGateway_1" targetRef="EndEvent_3"/> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ExclusiveGateway_1" targetRef="EndEvent_3" /> <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ExclusiveGateway_1" targetRef="callAAIQuery_scriptTask"> <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELVfModVol_isCloudRegionGood") == true}]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:endEvent id="EndEvent_3"> <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_3" errorRef="Error_1"/> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_3" errorRef="Error_1" /> </bpmn2:endEvent> <bpmn2:subProcess id="subProcessException_SubProcess" name="Subprocess For Exception / FalloutHandler " triggeredByEvent="true"> <bpmn2:startEvent id="subProcessStart_StartEvent" name="Fault Start"> <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_1"/> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="subProcessStart_StartEvent" targetRef="ExclusiveGateway_synResponseSent"/> + <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="subProcessStart_StartEvent" targetRef="ExclusiveGateway_synResponseSent" /> <bpmn2:exclusiveGateway id="ExclusiveGateway_synResponseSent" name="Sync response sent?" default="SequenceFlow_responseNotSent"> <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_responseNotSent</bpmn2:outgoing> @@ -114,7 +114,7 @@ deleteVfMod.executeMethod('handleTenantIdMismatch', execution, isDebugLogEnabled def deleteVfMod = new DeleteVfModuleVolumeInfraV1() deleteVfMod.executeMethod('sendSyncError', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_responseNotSent" name="No" sourceRef="ExclusiveGateway_synResponseSent" targetRef="ScriptTask_4"/> + <bpmn2:sequenceFlow id="SequenceFlow_responseNotSent" name="No" sourceRef="ExclusiveGateway_synResponseSent" targetRef="ScriptTask_4" /> <bpmn2:sequenceFlow id="SequenceFlow_responseSent" name="Yes" sourceRef="ExclusiveGateway_synResponseSent" targetRef="prepareFalloutHandler_ScriptTask"> <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{DELVfModVol_syncResponseSent == true}</bpmn2:conditionExpression> </bpmn2:sequenceFlow> @@ -127,27 +127,27 @@ def deleteVfMod = new DeleteVfModuleVolumeInfraV1() deleteVfMod.executeMethod('prepareFalloutHandler', execution, isDebugLogEnabled) ]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_25" name="" sourceRef="prepareFalloutHandler_ScriptTask" targetRef="faultHandler_CallActivity"/> + <bpmn2:sequenceFlow id="SequenceFlow_25" name="" sourceRef="prepareFalloutHandler_ScriptTask" targetRef="faultHandler_CallActivity" /> <bpmn2:callActivity id="faultHandler_CallActivity" name="Call FalloutHandlerV1" calledElement="FalloutHandler"> <bpmn2:extensionElements> - <camunda:in variables="all"/> - <camunda:out variables="all"/> - <camunda:in source="DELVfModVol_FalloutHandlerRequest" target="FalloutHandlerRequest"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:out source="FH_ResponseCode" target="FH_ResponseCode"/> - <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse"/> - <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse"/> + <camunda:in variables="all" /> + <camunda:out variables="all" /> + <camunda:in source="DELVfModVol_FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_25</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="faultHandler_CallActivity" targetRef="EndEvent_1"/> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="faultHandler_CallActivity" targetRef="EndEvent_1" /> <bpmn2:endEvent id="EndEvent_1"> <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> - <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1"/> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> </bpmn2:endEvent> - <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_4" targetRef="prepareFalloutHandler_ScriptTask"/> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_4" targetRef="prepareFalloutHandler_ScriptTask" /> </bpmn2:subProcess> <bpmn2:scriptTask id="prepareDBInfraRequest_ScriptTask" name="Prepare DB Infra Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming> @@ -158,7 +158,7 @@ deleteVfMod.executeMethod('prepareDBRequest', execution, isDebugLogEnabled) ]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_37" name="" sourceRef="prepareDBInfraRequest_ScriptTask" targetRef="callDBInfra_ServiceTask"/> + <bpmn2:sequenceFlow id="SequenceFlow_37" name="" sourceRef="prepareDBInfraRequest_ScriptTask" targetRef="callDBInfra_ServiceTask" /> <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Prepare Completion Handler Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing> @@ -167,55 +167,56 @@ def deleteVfMod = new DeleteVfModuleVolumeInfraV1() deleteVfMod.executeMethod('prepareCompletionHandlerRequest', execution, isDebugLogEnabled) ]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="callCompleteMsoProcess_CallActivity"/> + <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="callCompleteMsoProcess_CallActivity" /> <bpmn2:scriptTask id="ScriptTask_3" name="Set Success" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing> <bpmn2:script><![CDATA[// The following variable is checked by the unit test execution.setVariable("DELVfModVol_TransactionSuccessIndicator", true)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_24" name="" sourceRef="ScriptTask_3" targetRef="EndEvent_2"/> + <bpmn2:sequenceFlow id="SequenceFlow_24" name="" sourceRef="ScriptTask_3" targetRef="EndEvent_2" /> <bpmn2:callActivity id="callCompleteMsoProcess_CallActivity" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> <bpmn2:extensionElements> - <camunda:in variables="all"/> - <camunda:out variables="all"/> - <camunda:in source="DELVfModVol_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode"/> - <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse"/> - <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse"/> + <camunda:in variables="all" /> + <camunda:out variables="all" /> + <camunda:in source="DELVfModVol_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="callCompleteMsoProcess_CallActivity" targetRef="ScriptTask_3"/> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="callCompleteMsoProcess_CallActivity" targetRef="ScriptTask_3" /> <bpmn2:endEvent id="EndEvent_2" name="End"> <bpmn2:incoming>SequenceFlow_24</bpmn2:incoming> - <bpmn2:terminateEventDefinition id="TerminateEventDefinition_3"/> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_3" /> </bpmn2:endEvent> <bpmn2:serviceTask id="callDBInfra_ServiceTask" name="Call DB Infra Update"> <bpmn2:extensionElements> <camunda:connector> - <camunda:connectorId>http-connector</camunda:connectorId> <camunda:inputOutput> - <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> <camunda:inputParameter name="payload">${DELVfModVol_updateInfraRequest}</camunda:inputParameter> <camunda:inputParameter name="headers"> <camunda:map> <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> </camunda:map> </camunda:inputParameter> <camunda:inputParameter name="method">POST</camunda:inputParameter> <camunda:outputParameter name="DELVfModVol_createDBResponse">${response}</camunda:outputParameter> <camunda:outputParameter name="DELVfModVol_dbReturnCode">${statusCode}</camunda:outputParameter> </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> </camunda:connector> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_37</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_27</bpmn2:outgoing> </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="callDBInfra_ServiceTask" targetRef="postProcessAndCompletionRequest_ScriptTask"/> + <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="callDBInfra_ServiceTask" targetRef="postProcessAndCompletionRequest_ScriptTask" /> <bpmn2:scriptTask id="callRESTDeleteVolGrpId_ScriptTask" name="Call REST Delete AAI Vol Grp Id" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_vnfAdapterCallOK</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing> @@ -223,7 +224,7 @@ execution.setVariable("DELVfModVol_TransactionSuccessIndicator", true)]]></bpmn2 def deleteVfMod = new DeleteVfModuleVolumeInfraV1() deleteVfMod.executeMethod('deleteVolGrpId', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="callRESTDeleteVolGrpId_ScriptTask" targetRef="prepareDBInfraRequest_ScriptTask"/> + <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="callRESTDeleteVolGrpId_ScriptTask" targetRef="prepareDBInfraRequest_ScriptTask" /> <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="Is call to VNF Adapter OK?" default="SequenceFlow_vnfAdapterCallNotOK"> <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_vnfAdapterCallOK</bpmn2:outgoing> @@ -234,334 +235,334 @@ deleteVfMod.executeMethod('deleteVolGrpId', execution, isDebugLogEnabled)]]></bp </bpmn2:sequenceFlow> <bpmn2:endEvent id="EndEvent_6"> <bpmn2:incoming>SequenceFlow_vnfAdapterCallNotOK</bpmn2:incoming> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_5" errorRef="Error_1"/> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_5" errorRef="Error_1" /> </bpmn2:endEvent> - <bpmn2:sequenceFlow id="SequenceFlow_vnfAdapterCallNotOK" name="" sourceRef="ExclusiveGateway_2" targetRef="EndEvent_6"/> + <bpmn2:sequenceFlow id="SequenceFlow_vnfAdapterCallNotOK" name="" sourceRef="ExclusiveGateway_2" targetRef="EndEvent_6" /> </bpmn2:process> - <bpmn2:error id="Error_2" errorCode="java.lang.Exception" name="java.lang.Exception"/> - <bpmn2:error id="Error_1" errorCode="MSOWorkflowException" name="MSOWorkflowException"/> + <bpmn2:error id="Error_2" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteVfModuleVolumeInfraV1"> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="deleteNetwork_startEvent"> - <dc:Bounds height="36.0" width="36.0" x="103.0" y="94.0"/> + <dc:Bounds x="103" y="94" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="65.0" x="89.0" y="135.0"/> + <dc:Bounds x="89" y="135" width="65" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> - <dc:Bounds height="80.0" width="100.0" x="355.0" y="72.0"/> + <dc:Bounds x="355" y="72" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> - <di:waypoint xsi:type="dc:Point" x="139.0" y="112.0"/> - <di:waypoint xsi:type="dc:Point" x="355.0" y="112.0"/> + <di:waypoint xsi:type="dc:Point" x="139" y="112" /> + <di:waypoint xsi:type="dc:Point" x="355" y="112" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="116.0" y="12.0"/> + <dc:Bounds x="116" y="12" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_62" bpmnElement="callAAIQuery_scriptTask"> - <dc:Bounds height="80.0" width="100.0" x="864.0" y="72.0"/> + <dc:Bounds x="864" y="72" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_3" bpmnElement="faultHandler_CallActivity"> - <dc:Bounds height="80.0" width="100.0" x="438.0" y="360.0"/> + <dc:Bounds x="438" y="360" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_4" bpmnElement="callCompleteMsoProcess_CallActivity"> - <dc:Bounds height="80.0" width="100.0" x="993.0" y="985.0"/> + <dc:Bounds x="993" y="985" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_SubProcess_16" bpmnElement="subProcessException_SubProcess" isExpanded="true"> - <dc:Bounds height="337.0" width="660.0" x="37.0" y="288.0"/> + <dc:Bounds x="37" y="288" width="660" height="337" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="subProcessStart_StartEvent"> - <dc:Bounds height="36.0" width="36.0" x="60.0" y="383.0"/> + <dc:Bounds x="60" y="383" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="67.0" x="45.0" y="424.0"/> + <dc:Bounds x="45" y="424" width="67" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_79" bpmnElement="prepareFalloutHandler_ScriptTask"> - <dc:Bounds height="80.0" width="100.0" x="288.0" y="360.0"/> + <dc:Bounds x="288" y="360" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask"> - <dc:Bounds height="80.0" width="100.0" x="993.0" y="877.0"/> + <dc:Bounds x="993" y="877" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_83" bpmnElement="prepareDBInfraRequest_ScriptTask"> - <dc:Bounds height="80.0" width="100.0" x="993.0" y="660.0"/> + <dc:Bounds x="993" y="660" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_86" bpmnElement="callDBInfra_ServiceTask"> - <dc:Bounds height="80.0" width="100.0" x="993.0" y="769.0"/> + <dc:Bounds x="993" y="769" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_127"> - <di:waypoint xsi:type="dc:Point" x="455.0" y="112.0"/> - <di:waypoint xsi:type="dc:Point" x="496.0" y="112.0"/> + <di:waypoint xsi:type="dc:Point" x="455" y="112" /> + <di:waypoint xsi:type="dc:Point" x="496" y="112" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="486.0" y="112.0"/> + <dc:Bounds x="486" y="112" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="sendSyncAckResponse_ScriptTask"> - <dc:Bounds height="80.0" width="100.0" x="496.0" y="72.0"/> + <dc:Bounds x="496" y="72" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ExclusiveGateway_255"> - <di:waypoint xsi:type="dc:Point" x="96.0" y="401.0"/> - <di:waypoint xsi:type="dc:Point" x="118.0" y="401.0"/> - <di:waypoint xsi:type="dc:Point" x="118.0" y="400.0"/> - <di:waypoint xsi:type="dc:Point" x="144.0" y="400.0"/> + <di:waypoint xsi:type="dc:Point" x="96" y="401" /> + <di:waypoint xsi:type="dc:Point" x="118" y="401" /> + <di:waypoint xsi:type="dc:Point" x="118" y="400" /> + <di:waypoint xsi:type="dc:Point" x="144" y="400" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="99.0" y="401.0"/> + <dc:Bounds x="99" y="401" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_38" bpmnElement="SequenceFlow_25" sourceElement="_BPMNShape_ScriptTask_79" targetElement="_BPMNShape_CallActivity_3"> - <di:waypoint xsi:type="dc:Point" x="388.0" y="400.0"/> - <di:waypoint xsi:type="dc:Point" x="438.0" y="400.0"/> + <di:waypoint xsi:type="dc:Point" x="388" y="400" /> + <di:waypoint xsi:type="dc:Point" x="438" y="400" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="413.0" y="400.0"/> + <dc:Bounds x="413" y="400" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_40" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_ServiceTask_86" targetElement="_BPMNShape_ScriptTask_80"> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="849.0"/> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="877.0"/> + <di:waypoint xsi:type="dc:Point" x="1043" y="849" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="877" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1258.0" y="857.0"/> + <dc:Bounds x="1258" y="857" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80" targetElement="_BPMNShape_CallActivity_4"> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="957.0"/> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="985.0"/> + <di:waypoint xsi:type="dc:Point" x="1043" y="957" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="985" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1289.0" y="898.0"/> + <dc:Bounds x="1289" y="898" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_134" bpmnElement="callRESTDeleteVolGrpId_ScriptTask"> - <dc:Bounds height="80.0" width="100.0" x="993.0" y="528.0"/> + <dc:Bounds x="993" y="528" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_54" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_ScriptTask_134" targetElement="_BPMNShape_ScriptTask_83"> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="608.0"/> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="660.0"/> + <di:waypoint xsi:type="dc:Point" x="1043" y="608" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="660" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1291.0" y="557.0"/> + <dc:Bounds x="1291" y="557" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_58" bpmnElement="SequenceFlow_37" sourceElement="_BPMNShape_ScriptTask_83" targetElement="_BPMNShape_ServiceTask_86"> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="740.0"/> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="769.0"/> + <di:waypoint xsi:type="dc:Point" x="1043" y="740" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="769" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1258.0" y="751.0"/> + <dc:Bounds x="1258" y="751" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_22" bpmnElement="callVnfAdapterDeleteSubflow_CallActivity"> - <dc:Bounds height="80.0" width="100.0" x="993.0" y="300.0"/> + <dc:Bounds x="993" y="300" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_160" bpmnElement="prepareVnfAdapterDelete_ScriptTask_1"> - <dc:Bounds height="80.0" width="100.0" x="993.0" y="180.0"/> + <dc:Bounds x="993" y="180" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_160" targetElement="_BPMNShape_CallActivity_22"> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="260.0"/> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="300.0"/> + <di:waypoint xsi:type="dc:Point" x="1043" y="260" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="300" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1112.0" y="280.0"/> + <dc:Bounds x="1112" y="280" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_CallActivity_22" targetElement="_BPMNShape_ExclusiveGateway_252"> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="380.0"/> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="401.0"/> - <di:waypoint xsi:type="dc:Point" x="1042.0" y="401.0"/> - <di:waypoint xsi:type="dc:Point" x="1042.0" y="422.0"/> + <di:waypoint xsi:type="dc:Point" x="1043" y="380" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="401" /> + <di:waypoint xsi:type="dc:Point" x="1042" y="401" /> + <di:waypoint xsi:type="dc:Point" x="1042" y="422" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1039.0" y="415.0"/> + <dc:Bounds x="1039" y="415" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_163" bpmnElement="EndEvent_1"> - <dc:Bounds height="36.0" width="36.0" x="588.0" y="382.0"/> + <dc:Bounds x="588" y="382" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="606.0" y="423.0"/> + <dc:Bounds x="606" y="423" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_3" targetElement="_BPMNShape_EndEvent_163"> - <di:waypoint xsi:type="dc:Point" x="538.0" y="400.0"/> - <di:waypoint xsi:type="dc:Point" x="588.0" y="400.0"/> + <di:waypoint xsi:type="dc:Point" x="538" y="400" /> + <di:waypoint xsi:type="dc:Point" x="588" y="400" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="558.0" y="400.0"/> + <dc:Bounds x="558" y="400" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_167" bpmnElement="EndEvent_2"> - <dc:Bounds height="36.0" width="36.0" x="1025.0" y="1201.0"/> + <dc:Bounds x="1025" y="1201" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="1029.0" y="1242.0"/> + <dc:Bounds x="1029" y="1242" width="29" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_CallActivity_4" targetElement="_BPMNShape_ScriptTask_241"> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="1065.0"/> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="1093.0"/> + <di:waypoint xsi:type="dc:Point" x="1043" y="1065" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="1093" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1258.0" y="1083.0"/> + <dc:Bounds x="1258" y="1083" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_234" bpmnElement="ScriptTask_4"> - <dc:Bounds height="80.0" width="100.0" x="120.0" y="492.0"/> + <dc:Bounds x="120" y="492" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_ScriptTask_251"> - <di:waypoint xsi:type="dc:Point" x="596.0" y="112.0"/> - <di:waypoint xsi:type="dc:Point" x="623.0" y="112.0"/> - <di:waypoint xsi:type="dc:Point" x="623.0" y="115.0"/> - <di:waypoint xsi:type="dc:Point" x="636.0" y="115.0"/> + <di:waypoint xsi:type="dc:Point" x="596" y="112" /> + <di:waypoint xsi:type="dc:Point" x="623" y="112" /> + <di:waypoint xsi:type="dc:Point" x="623" y="115" /> + <di:waypoint xsi:type="dc:Point" x="636" y="115" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="613.0" y="112.0"/> + <dc:Bounds x="613" y="112" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_62" targetElement="_BPMNShape_ExclusiveGateway_203"> - <di:waypoint xsi:type="dc:Point" x="964.0" y="112.0"/> - <di:waypoint xsi:type="dc:Point" x="1017.0" y="111.0"/> + <di:waypoint xsi:type="dc:Point" x="964" y="112" /> + <di:waypoint xsi:type="dc:Point" x="1017" y="111" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1067.0" y="113.0"/> + <dc:Bounds x="1067" y="113" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_203" bpmnElement="ExclusiveGateway_3" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="1017.0" y="86.0"/> + <dc:Bounds x="1017" y="86" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="102.0" x="984.0" y="60.0"/> + <dc:Bounds x="984" y="60" width="102" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_240" bpmnElement="ScriptTask_2"> - <dc:Bounds height="80.0" width="100.0" x="1104.0" y="72.0"/> + <dc:Bounds x="1104" y="72" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ExclusiveGateway_203" targetElement="_BPMNShape_ScriptTask_160"> - <di:waypoint xsi:type="dc:Point" x="1042.0" y="136.0"/> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="180.0"/> + <di:waypoint xsi:type="dc:Point" x="1042" y="136" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="180" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1040.0" y="122.0"/> + <dc:Bounds x="1040" y="122" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ExclusiveGateway_203" targetElement="_BPMNShape_ScriptTask_240"> - <di:waypoint xsi:type="dc:Point" x="1067.0" y="111.0"/> - <di:waypoint xsi:type="dc:Point" x="1085.0" y="111.0"/> - <di:waypoint xsi:type="dc:Point" x="1085.0" y="112.0"/> - <di:waypoint xsi:type="dc:Point" x="1104.0" y="112.0"/> + <di:waypoint xsi:type="dc:Point" x="1067" y="111" /> + <di:waypoint xsi:type="dc:Point" x="1085" y="111" /> + <di:waypoint xsi:type="dc:Point" x="1085" y="112" /> + <di:waypoint xsi:type="dc:Point" x="1104" y="112" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1216.0" y="113.0"/> + <dc:Bounds x="1216" y="113" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_178" bpmnElement="EndEvent_5"> - <dc:Bounds height="36.0" width="36.0" x="1242.0" y="95.0"/> + <dc:Bounds x="1242" y="95" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="1260.0" y="136.0"/> + <dc:Bounds x="1260" y="136" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_240" targetElement="_BPMNShape_EndEvent_178"> - <di:waypoint xsi:type="dc:Point" x="1204.0" y="112.0"/> - <di:waypoint xsi:type="dc:Point" x="1222.0" y="112.0"/> - <di:waypoint xsi:type="dc:Point" x="1222.0" y="113.0"/> - <di:waypoint xsi:type="dc:Point" x="1242.0" y="113.0"/> + <di:waypoint xsi:type="dc:Point" x="1204" y="112" /> + <di:waypoint xsi:type="dc:Point" x="1222" y="112" /> + <di:waypoint xsi:type="dc:Point" x="1222" y="113" /> + <di:waypoint xsi:type="dc:Point" x="1242" y="113" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1220.0" y="113.0"/> + <dc:Bounds x="1220" y="113" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_241" bpmnElement="ScriptTask_3"> - <dc:Bounds height="80.0" width="100.0" x="993.0" y="1093.0"/> + <dc:Bounds x="993" y="1093" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ScriptTask_241" targetElement="_BPMNShape_EndEvent_167"> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="1173.0"/> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="1201.0"/> + <di:waypoint xsi:type="dc:Point" x="1043" y="1173" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="1201" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1040.0" y="1320.0"/> + <dc:Bounds x="1040" y="1320" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_251" bpmnElement="ScriptTask_callRestCloudRegion"> - <dc:Bounds height="80.0" width="100.0" x="636.0" y="75.0"/> + <dc:Bounds x="636" y="75" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_223" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="774.0" y="89.0"/> + <dc:Bounds x="774" y="89" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="125.0" x="735.0" y="40.0"/> + <dc:Bounds x="735" y="40" width="125" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_215" bpmnElement="EndEvent_3"> - <dc:Bounds height="36.0" width="36.0" x="781.0" y="170.0"/> + <dc:Bounds x="781" y="170" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="799.0" y="211.0"/> + <dc:Bounds x="799" y="211" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ExclusiveGateway_223" targetElement="_BPMNShape_EndEvent_215"> - <di:waypoint xsi:type="dc:Point" x="798.0" y="139.0"/> - <di:waypoint xsi:type="dc:Point" x="798.0" y="153.0"/> - <di:waypoint xsi:type="dc:Point" x="799.0" y="153.0"/> - <di:waypoint xsi:type="dc:Point" x="799.0" y="170.0"/> + <di:waypoint xsi:type="dc:Point" x="798" y="139" /> + <di:waypoint xsi:type="dc:Point" x="798" y="153" /> + <di:waypoint xsi:type="dc:Point" x="799" y="153" /> + <di:waypoint xsi:type="dc:Point" x="799" y="170" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="796.0" y="166.0"/> + <dc:Bounds x="796" y="166" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_251" targetElement="_BPMNShape_ExclusiveGateway_223"> - <di:waypoint xsi:type="dc:Point" x="736.0" y="115.0"/> - <di:waypoint xsi:type="dc:Point" x="754.0" y="115.0"/> - <di:waypoint xsi:type="dc:Point" x="754.0" y="114.0"/> - <di:waypoint xsi:type="dc:Point" x="774.0" y="114.0"/> + <di:waypoint xsi:type="dc:Point" x="736" y="115" /> + <di:waypoint xsi:type="dc:Point" x="754" y="115" /> + <di:waypoint xsi:type="dc:Point" x="754" y="114" /> + <di:waypoint xsi:type="dc:Point" x="774" y="114" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="752.0" y="114.0"/> + <dc:Bounds x="752" y="114" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ExclusiveGateway_223" targetElement="_BPMNShape_ScriptTask_62"> - <di:waypoint xsi:type="dc:Point" x="824.0" y="114.0"/> - <di:waypoint xsi:type="dc:Point" x="844.0" y="114.0"/> - <di:waypoint xsi:type="dc:Point" x="844.0" y="112.0"/> - <di:waypoint xsi:type="dc:Point" x="864.0" y="112.0"/> + <di:waypoint xsi:type="dc:Point" x="824" y="114" /> + <di:waypoint xsi:type="dc:Point" x="844" y="114" /> + <di:waypoint xsi:type="dc:Point" x="844" y="112" /> + <di:waypoint xsi:type="dc:Point" x="864" y="112" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="841.0" y="113.0"/> + <dc:Bounds x="841" y="113" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_252" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="1017.0" y="422.0"/> + <dc:Bounds x="1017" y="422" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="164.0" x="960.0" y="477.0"/> + <dc:Bounds x="960" y="477" width="164" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_vnfAdapterCallOK" sourceElement="_BPMNShape_ExclusiveGateway_252" targetElement="_BPMNShape_ScriptTask_134"> - <di:waypoint xsi:type="dc:Point" x="1042.0" y="472.0"/> - <di:waypoint xsi:type="dc:Point" x="1043.0" y="528.0"/> + <di:waypoint xsi:type="dc:Point" x="1042" y="472" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="528" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1040.0" y="500.0"/> + <dc:Bounds x="1040" y="500" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_236" bpmnElement="EndEvent_6"> - <dc:Bounds height="36.0" width="36.0" x="1168.0" y="430.0"/> + <dc:Bounds x="1168" y="430" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="1186.0" y="471.0"/> + <dc:Bounds x="1186" y="471" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_vnfAdapterCallNotOK" sourceElement="_BPMNShape_ExclusiveGateway_252" targetElement="_BPMNShape_EndEvent_236"> - <di:waypoint xsi:type="dc:Point" x="1067.0" y="447.0"/> - <di:waypoint xsi:type="dc:Point" x="1117.0" y="447.0"/> - <di:waypoint xsi:type="dc:Point" x="1117.0" y="448.0"/> - <di:waypoint xsi:type="dc:Point" x="1168.0" y="448.0"/> + <di:waypoint xsi:type="dc:Point" x="1067" y="447" /> + <di:waypoint xsi:type="dc:Point" x="1117" y="447" /> + <di:waypoint xsi:type="dc:Point" x="1117" y="448" /> + <di:waypoint xsi:type="dc:Point" x="1168" y="448" /> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_255" bpmnElement="ExclusiveGateway_synResponseSent" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="144.0" y="375.0"/> + <dc:Bounds x="144" y="375" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="129.0" x="106.0" y="439.0"/> + <dc:Bounds x="106" y="439" width="129" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_responseNotSent" sourceElement="_BPMNShape_ExclusiveGateway_255" targetElement="_BPMNShape_ScriptTask_234"> - <di:waypoint xsi:type="dc:Point" x="169.0" y="425.0"/> - <di:waypoint xsi:type="dc:Point" x="169.0" y="458.0"/> - <di:waypoint xsi:type="dc:Point" x="170.0" y="458.0"/> - <di:waypoint xsi:type="dc:Point" x="170.0" y="492.0"/> + <di:waypoint xsi:type="dc:Point" x="169" y="425" /> + <di:waypoint xsi:type="dc:Point" x="169" y="458" /> + <di:waypoint xsi:type="dc:Point" x="170" y="458" /> + <di:waypoint xsi:type="dc:Point" x="170" y="492" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="22.0" x="159.0" y="458.0"/> + <dc:Bounds x="159" y="458" width="22" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_responseSent" sourceElement="_BPMNShape_ExclusiveGateway_255" targetElement="_BPMNShape_ScriptTask_79"> - <di:waypoint xsi:type="dc:Point" x="194.0" y="400.0"/> - <di:waypoint xsi:type="dc:Point" x="288.0" y="400.0"/> + <di:waypoint xsi:type="dc:Point" x="194" y="400" /> + <di:waypoint xsi:type="dc:Point" x="288" y="400" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="204.0" y="400.0"/> + <dc:Bounds x="204" y="400" width="29" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_234" targetElement="_BPMNShape_ScriptTask_79"> - <di:waypoint xsi:type="dc:Point" x="220.0" y="532.0"/> - <di:waypoint xsi:type="dc:Point" x="254.0" y="532.0"/> - <di:waypoint xsi:type="dc:Point" x="336.0" y="532.0"/> - <di:waypoint xsi:type="dc:Point" x="336.0" y="508.0"/> - <di:waypoint xsi:type="dc:Point" x="336.0" y="482.0"/> - <di:waypoint xsi:type="dc:Point" x="337.0" y="440.0"/> + <di:waypoint xsi:type="dc:Point" x="220" y="532" /> + <di:waypoint xsi:type="dc:Point" x="254" y="532" /> + <di:waypoint xsi:type="dc:Point" x="336" y="532" /> + <di:waypoint xsi:type="dc:Point" x="336" y="508" /> + <di:waypoint xsi:type="dc:Point" x="336" y="482" /> + <di:waypoint xsi:type="dc:Point" x="337" y="440" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="317.0" y="532.0"/> + <dc:Bounds x="317" y="532" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> -</bpmn2:definitions>
\ No newline at end of file +</bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/ReplaceVnfInfra.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/ReplaceVnfInfra.bpmn new file mode 100644 index 0000000000..6c5e8f6522 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/ReplaceVnfInfra.bpmn @@ -0,0 +1,1177 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_F0omAMXGEeW834CKd-K10Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="ReplaceVnfInfra" name="ReplaceVnfInfra" isExecutable="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Send Synch Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0y0jt4l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.sendSynchResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="Task_1rxiqe1" targetRef="ExclusiveGateway_045e1uz" /> + <bpmn2:scriptTask id="PreProcessRequest" name="Pre-Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="PreProcessRequest" targetRef="ScriptTask_1" /> + <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="RPLVnfI_CompletionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_4" /> + <bpmn2:endEvent id="EndEvent_1" name="TheEnd"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_5" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_4" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test +execution.setVariable("UpdateVfModuleInfraSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_4" targetRef="EndEvent_1" /> + <bpmn2:scriptTask id="ScriptTask_10" name="Completion Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.completionHandlerPrep(execution, 'RPLVnfI_CompletionHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1" /> + <bpmn2:subProcess id="SubProcess_1" name="Error Handler" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_3" name="Catch All Errors"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="ScriptTask_3" /> + <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfra() +uvfm.falloutHandlerPrep(execution, 'RPLVnfI_FalloutHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ScriptTask_3" targetRef="CallActivity_2" /> + <bpmn2:callActivity id="CallActivity_2" name="Fallout Handler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="RPLVnfI_FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_2" targetRef="EndEvent_2" /> + </bpmn2:subProcess> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2" /> + </bpmn2:endEvent> + <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_3" /> + <bpmn2:startEvent id="StartEvent_1" name="Start"> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="StartEvent_1" targetRef="PreProcessRequest" /> + <bpmn2:callActivity id="ScriptTask_6" name="DoDeleteVnfAndModules" calledElement="DoDeleteVnfAndModules"> + <bpmn2:extensionElements> + <camunda:in source="RPLVnfI_requestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="RPLVnfI_vnfId" target="vnfId" /> + <camunda:in source="RPLVnfI_serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="RPLVnfI_sdncVersion" target="sdncVersion" /> + <camunda:in source="RPLVnfI_cloudConfiguration" target="cloudConfiguration" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_19ba94v</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0gzzeru</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="no" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="ScriptTask_10" /> + <bpmn2:sequenceFlow id="SequenceFlow_1w35ov3" sourceRef="Task_1gg76h7" targetRef="Task_1opcb4j" /> + <bpmn2:callActivity id="Task_1gg76h7" name="Decompose Service" calledElement="DecomposeService"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="RPLVnfI_serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="serviceDecomposition" target="serviceDecomposition" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0y0jt4l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1w35ov3</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_053qjfy" sourceRef="Task_1opcb4j" targetRef="Task_0vy2zge" /> + <bpmn2:scriptTask id="Task_1opcb4j" name="Get VnfResourceDecomposition" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1w35ov3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_053qjfy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.getVnfResourceDecomposition(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0y0jt4l" sourceRef="ScriptTask_1" targetRef="Task_1gg76h7" /> + <bpmn2:scriptTask id="Task_1rxiqe1" name="Check If VNF Is In Maintenance in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16mo99z</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_193t8ts</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.checkIfVnfInMaintInAAI(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0usxnlk" sourceRef="Task_0vy2zge" targetRef="ExclusiveGateway_0q323wc" /> + <bpmn2:sequenceFlow id="SequenceFlow_1bkhs8m" name="no" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="Task_1dtbnuy" /> + <bpmn2:sequenceFlow id="SequenceFlow_0gzzeru" sourceRef="ScriptTask_6" targetRef="ExclusiveGateway_0ulrq9g" /> + <bpmn2:scriptTask id="Task_0ap39ka" name="Set VNF inMaintenance Flag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0baosqi</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_18u8p2k</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0k3fx7p</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.setVnfInMaintFlagInAAI(execution, true) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1drglpt" name="Unset VNF In Maintenance Flag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_19lg15d</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1lsfn19</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12mfil6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.setVnfInMaintFlagInAAI(execution, false) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_0vy2zge" name="Check If Physical Servers Are Locked in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_053qjfy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0usxnlk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.checkIfPserversInMaintInAAI(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0xx8y1s" sourceRef="Task_1dtbnuy" targetRef="ExclusiveGateway_1slvyx2" /> + <bpmn2:sequenceFlow id="SequenceFlow_0a6pdza" sourceRef="Task_1fj63ov" targetRef="ExclusiveGateway_1ichg7h" /> + <bpmn2:sequenceFlow id="SequenceFlow_13h26h9" sourceRef="Task_1cfkcss" targetRef="ExclusiveGateway_1etgtgi" /> + <bpmn2:scriptTask id="Task_1dtbnuy" name="Call APP-C VNF Lock" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1bkhs8m</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0eueu1t</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xx8y1s</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action +import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.runAppcCommand(execution, Action.Lock) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1fj63ov" name="Call APP-C Health Check" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0qy68ib</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1sla5dr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0a6pdza</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action +import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.runAppcCommand(execution, Action.HealthCheck)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1cfkcss" name="Call APP-C VNF Graceful Stop" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0q0qan8</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0iektwg</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13h26h9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action +import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.runAppcCommand(execution, Action.Stop)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1uno5rs" sourceRef="Task_1hdg951" targetRef="ExclusiveGateway_02tj4dw" /> + <bpmn2:sequenceFlow id="SequenceFlow_1c79909" sourceRef="Task_1ca5ctq" targetRef="ExclusiveGateway_1gn5lab" /> + <bpmn2:scriptTask id="Task_1hdg951" name="Call APP-C VNF Start" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_04zwhw4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1uno5rs</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action +import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.runAppcCommand(execution, Action.Start)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1ca5ctq" name="Call APP-C Health Check" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_162mm0m</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1hx1ur7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c79909</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action +import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.runAppcCommand(execution, Action.HealthCheck)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1xfbwpi" sourceRef="Task_1sove95" targetRef="ExclusiveGateway_06mv93h" /> + <bpmn2:scriptTask id="Task_1sove95" name="Call APP-C VNF Unlock" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_197t3qk</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0ukzynj</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1xfbwpi</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action +import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.runAppcCommand(execution, Action.Unlock)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0q323wc" name="Error on PServers Check?" default="SequenceFlow_16mo99z"> + <bpmn2:incoming>SequenceFlow_0usxnlk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16mo99z</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1qmz2ez</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_16mo99z" name="no" sourceRef="ExclusiveGateway_0q323wc" targetRef="Task_1rxiqe1" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_045e1uz" name="Error On inMaintenance Check?" default="SequenceFlow_0baosqi"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0baosqi</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_03rkfbo</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0baosqi" name="no" sourceRef="ExclusiveGateway_045e1uz" targetRef="Task_0ap39ka" /> + <bpmn2:callActivity id="Task_0q5cdit" name="Rainy Day Handler" calledElement="RainyDayHandler"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="RPLVnfI_serviceType" target="serviceType" /> + <camunda:in source="RPLVnfI_nfRole" target="vnfType" /> + <camunda:in source="RPLVnfI_currentActivity" target="currentActivity" /> + <camunda:in source="RPLVnfI_workStep" target="workStep" /> + <camunda:in source="RPLVnfI_failedActivity" target="failedActivity" /> + <camunda:in source="RPLVnfI_errorCode" target="errorCode" /> + <camunda:in source="RPLVnfI_errorText" target="errorText" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="handlingCode" target="RPLVnfI_disposition" /> + <camunda:in source="RPLVnfI_requestorId" target="requestorId" /> + <camunda:out source="taskId" target="RPLVnfI_taskId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1qmz2ez</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_03rkfbo</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1lsm3bn</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0bduwog</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0uwar5b</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0i7hfj2</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_13yjc85</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0waedj5</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1hg9c2l</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0gej71y</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0pfydeg</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_10ek8l4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0v0u7mf</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1qmz2ez" name="yes" sourceRef="ExclusiveGateway_0q323wc" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_03rkfbo" name="yes" sourceRef="ExclusiveGateway_045e1uz" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0v0u7mf" sourceRef="Task_0q5cdit" targetRef="ExclusiveGateway_0xlxgl0" /> + <bpmn2:task id="Task_0zbogrm" name="Rollback Processing"> + <bpmn2:incoming>SequenceFlow_1qr8msw</bpmn2:incoming> + </bpmn2:task> + <bpmn2:sequenceFlow id="SequenceFlow_0vpd06n" name="Abort" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_1tg549h"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_disposition") == "Abort"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1qr8msw" name="Rollback" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_0zbogrm"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_disposition") == "Rollback"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ud5uwa" name="Eror on inMaintenance Set?" default="SequenceFlow_1bkhs8m"> + <bpmn2:incoming>SequenceFlow_0k3fx7p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1bkhs8m</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1lsm3bn</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0k3fx7p" sourceRef="Task_0ap39ka" targetRef="ExclusiveGateway_0ud5uwa" /> + <bpmn2:sequenceFlow id="SequenceFlow_1lsm3bn" name="yes" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1slvyx2" name="Error on VNF Lock?" default="SequenceFlow_0qy68ib"> + <bpmn2:incoming>SequenceFlow_0xx8y1s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0qy68ib</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0bduwog</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0qy68ib" name="no" sourceRef="ExclusiveGateway_1slvyx2" targetRef="Task_1fj63ov" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1ichg7h" name="Error on Pre Health Check?" default="SequenceFlow_0q0qan8"> + <bpmn2:incoming>SequenceFlow_0a6pdza</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0q0qan8</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0uwar5b</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0q0qan8" name="no" sourceRef="ExclusiveGateway_1ichg7h" targetRef="Task_1cfkcss" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1etgtgi" name="Error on VNF Stop?" default="SequenceFlow_1c0vdki"> + <bpmn2:incoming>SequenceFlow_13h26h9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c0vdki</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0i7hfj2</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1c0vdki" name="no" sourceRef="ExclusiveGateway_1etgtgi" targetRef="Task_0eae8go" /> + <bpmn2:sequenceFlow id="SequenceFlow_0bduwog" name="yes" sourceRef="ExclusiveGateway_1slvyx2" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0uwar5b" name="yes" sourceRef="ExclusiveGateway_1ichg7h" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0i7hfj2" name="yes" sourceRef="ExclusiveGateway_1etgtgi" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ulrq9g" name="Error on DoDeleteVnfAndNModules?" default="SequenceFlow_0bxgny0"> + <bpmn2:incoming>SequenceFlow_0gzzeru</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10ek8l4</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0bxgny0</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_04zwhw4" name="no" sourceRef="ExclusiveGateway_084iffr" targetRef="Task_1hdg951" /> + <bpmn2:sequenceFlow id="SequenceFlow_10ek8l4" name="yes" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_02tj4dw" name="Error on VNF Start?" default="SequenceFlow_162mm0m"> + <bpmn2:incoming>SequenceFlow_1uno5rs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_162mm0m</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0waedj5</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_162mm0m" name="no" sourceRef="ExclusiveGateway_02tj4dw" targetRef="Task_1ca5ctq" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1gn5lab" name="Error on Post Health Check?" default="SequenceFlow_197t3qk"> + <bpmn2:incoming>SequenceFlow_1c79909</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_197t3qk</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1hg9c2l</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_197t3qk" name="no" sourceRef="ExclusiveGateway_1gn5lab" targetRef="Task_1sove95" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_06mv93h" name="Error on VNF Unlock?" default="SequenceFlow_19lg15d"> + <bpmn2:incoming>SequenceFlow_1xfbwpi</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19lg15d</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0gej71y</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_19lg15d" name="no" sourceRef="ExclusiveGateway_06mv93h" targetRef="Task_1drglpt" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0l2z6wc" name="Erorr on inMaintenance Unset?" default="SequenceFlow_3"> + <bpmn2:incoming>SequenceFlow_12mfil6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13yjc85</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_12mfil6" sourceRef="Task_1drglpt" targetRef="ExclusiveGateway_0l2z6wc" /> + <bpmn2:sequenceFlow id="SequenceFlow_13yjc85" name="yes" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0waedj5" name="yes" sourceRef="ExclusiveGateway_02tj4dw" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1hg9c2l" name="yes" sourceRef="ExclusiveGateway_1gn5lab" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0gej71y" name="yes" sourceRef="ExclusiveGateway_06mv93h" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="Task_1tg549h" name="Abort Processing" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0vpd06n</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_051zp79</bpmn2:incoming> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.abortProcessing(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0xlxgl0" name="Check Disposition"> + <bpmn2:incoming>SequenceFlow_0v0u7mf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0vpd06n</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1qr8msw</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_05gpym3</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0y82zzx" name="Which step to skip?" default="SequenceFlow_051zp79"> + <bpmn2:incoming>SequenceFlow_05gpym3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1sla5dr</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0iektwg</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1ttepat</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1hx1ur7</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0ukzynj</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1lsfn19</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_051zp79</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_193t8ts</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_18u8p2k</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0eueu1t</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_05gpym3" name="Skip" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="ExclusiveGateway_0y82zzx"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_disposition") == "Skip"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1sla5dr" name="Skip APP-C VNF Lock" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1fj63ov"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "LockVNF"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0iektwg" name="Skip APP-C VNF Pre Health Check" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1cfkcss"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "HealthCheckVNF1"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1ttepat" name="Skip APP-C VNF Stop" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_0eae8go"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "StopVNF"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1hx1ur7" name="Skip APP-C VNF Start" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1ca5ctq"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "StartVNF"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0ukzynj" name="Skip APP-C Post Health Check" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1sove95"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "HealthCheckVNF2"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1lsfn19" name="Skip APP-C VNF Unlock" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1drglpt"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "UnlockVNF"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_19ba94v" sourceRef="Task_0eae8go" targetRef="ScriptTask_6" /> + <bpmn2:scriptTask id="Task_0eae8go" name="Prepare DoDeleteVnfAndModules" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1c0vdki</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1ttepat</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19ba94v</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.prepDoDeleteVnfAndModules(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_040hi91" name="Prepare DoCreateVnfAndModules" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0bxgny0</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qm0ygo</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.prepDoCreateVnfAndModules(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="Task_15hpowt" name="DoCreateVnfAndModules" calledElement="DoCreateVnfAndModules"> + <bpmn2:incoming>SequenceFlow_1qm0ygo</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0he2w4b</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:exclusiveGateway id="ExclusiveGateway_084iffr" name="Error on DoCreateVnfModules?"> + <bpmn2:incoming>SequenceFlow_0he2w4b</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0pfydeg</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_04zwhw4</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0pfydeg" name="yes" sourceRef="ExclusiveGateway_084iffr" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0bxgny0" name="no" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="Task_040hi91" /> + <bpmn2:sequenceFlow id="SequenceFlow_1qm0ygo" sourceRef="Task_040hi91" targetRef="Task_15hpowt" /> + <bpmn2:sequenceFlow id="SequenceFlow_0he2w4b" sourceRef="Task_15hpowt" targetRef="ExclusiveGateway_084iffr" /> + <bpmn2:sequenceFlow id="SequenceFlow_051zp79" name="" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1tg549h" /> + <bpmn2:sequenceFlow id="SequenceFlow_193t8ts" name="Skip Check if PServers Locked in AAI" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1rxiqe1"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "checkIfPserversInMaintInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_18u8p2k" name="Skip If VNF Is in Maint in AAI" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_0ap39ka"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "checkIfVnfInMaintInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0eueu1t" name="Skip Set VNF In Maint in AAI" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1dtbnuy"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "setVnfInMaintFlagInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ReplaceVnfInfra"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1"> + <dc:Bounds x="97" y="72" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="103" y="113" width="23" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1"> + <dc:Bounds x="595" y="975" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="594" y="1016" width="38" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124"> + <di:waypoint xsi:type="dc:Point" x="133" y="90" /> + <di:waypoint xsi:type="dc:Point" x="209" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="171" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="PreProcessRequest"> + <dc:Bounds x="209" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_ScriptTask_125"> + <di:waypoint xsi:type="dc:Point" x="309" y="90" /> + <di:waypoint xsi:type="dc:Point" x="373" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="341" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_125" bpmnElement="ScriptTask_1"> + <dc:Bounds x="373" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_125"> + <di:waypoint xsi:type="dc:Point" x="525" y="237" /> + <di:waypoint xsi:type="dc:Point" x="601" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="563" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4"> + <dc:Bounds x="439" y="953" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_EndEvent_125"> + <di:waypoint xsi:type="dc:Point" x="539" y="993" /> + <di:waypoint xsi:type="dc:Point" x="595" y="993" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="716" y="834" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10"> + <dc:Bounds x="139" y="953" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1"> + <dc:Bounds x="289" y="953" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_CallActivity_27"> + <di:waypoint xsi:type="dc:Point" x="239" y="993" /> + <di:waypoint xsi:type="dc:Point" x="289" y="993" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="264" y="999" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true"> + <dc:Bounds x="85" y="1189" width="565" height="241" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3"> + <dc:Bounds x="149" y="1283" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="128" y="1324" width="77" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3"> + <dc:Bounds x="229" y="1261" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_52" targetElement="_BPMNShape_ScriptTask_136"> + <di:waypoint xsi:type="dc:Point" x="185" y="1301" /> + <di:waypoint xsi:type="dc:Point" x="229" y="1301" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="232" y="1601" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_136" targetElement="_BPMNShape_CallActivity_28"> + <di:waypoint xsi:type="dc:Point" x="329" y="1301" /> + <di:waypoint xsi:type="dc:Point" x="397" y="1301" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="345" y="1301" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2"> + <dc:Bounds x="553" y="1283" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="571" y="1324" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1"> + <dc:Bounds x="632" y="1283" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="650" y="1324" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3"> + <dc:Bounds x="726" y="1283" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="744" y="1324" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_BoundaryEvent_43" targetElement="_BPMNShape_EndEvent_127"> + <di:waypoint xsi:type="dc:Point" x="668" y="1301" /> + <di:waypoint xsi:type="dc:Point" x="726" y="1301" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="697" y="1286" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2"> + <dc:Bounds x="397" y="1261" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_27" targetElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="389" y="993" /> + <di:waypoint xsi:type="dc:Point" x="439" y="993" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="432" y="961" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_28" targetElement="_BPMNShape_EndEvent_126"> + <di:waypoint xsi:type="dc:Point" x="497" y="1301" /> + <di:waypoint xsi:type="dc:Point" x="553" y="1301" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="390" y="1361" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_181" bpmnElement="ScriptTask_6"> + <dc:Bounds x="289" y="559" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_181" targetElement="_BPMNShape_ScriptTask_133"> + <di:waypoint xsi:type="dc:Point" x="1130" y="835" /> + <di:waypoint xsi:type="dc:Point" x="1130" y="900" /> + <di:waypoint xsi:type="dc:Point" x="99" y="900" /> + <di:waypoint xsi:type="dc:Point" x="99" y="993" /> + <di:waypoint xsi:type="dc:Point" x="139" y="993" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1109" y="862" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1w35ov3_di" bpmnElement="SequenceFlow_1w35ov3"> + <di:waypoint xsi:type="dc:Point" x="655" y="90" /> + <di:waypoint xsi:type="dc:Point" x="718" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="687" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0qfx7sz_di" bpmnElement="Task_1gg76h7"> + <dc:Bounds x="555" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_053qjfy_di" bpmnElement="SequenceFlow_053qjfy"> + <di:waypoint xsi:type="dc:Point" x="818" y="90" /> + <di:waypoint xsi:type="dc:Point" x="982" y="90" /> + <di:waypoint xsi:type="dc:Point" x="982" y="156" /> + <di:waypoint xsi:type="dc:Point" x="103" y="156" /> + <di:waypoint xsi:type="dc:Point" x="103" y="237" /> + <di:waypoint xsi:type="dc:Point" x="131" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="543" y="141" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_08xzuox_di" bpmnElement="Task_1opcb4j"> + <dc:Bounds x="718" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0y0jt4l_di" bpmnElement="SequenceFlow_0y0jt4l"> + <di:waypoint xsi:type="dc:Point" x="473" y="90" /> + <di:waypoint xsi:type="dc:Point" x="555" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="514" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_19pf9z8_di" bpmnElement="Task_1rxiqe1"> + <dc:Bounds x="425" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0usxnlk_di" bpmnElement="SequenceFlow_0usxnlk"> + <di:waypoint xsi:type="dc:Point" x="231" y="237" /> + <di:waypoint xsi:type="dc:Point" x="292" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="262" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1bkhs8m_di" bpmnElement="SequenceFlow_1bkhs8m"> + <di:waypoint xsi:type="dc:Point" x="896" y="264" /> + <di:waypoint xsi:type="dc:Point" x="896" y="339" /> + <di:waypoint xsi:type="dc:Point" x="98" y="339" /> + <di:waypoint xsi:type="dc:Point" x="98" y="427" /> + <di:waypoint xsi:type="dc:Point" x="139" y="427" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="905" y="313.95238095238096" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0gzzeru_di" bpmnElement="SequenceFlow_0gzzeru"> + <di:waypoint xsi:type="dc:Point" x="389" y="599" /> + <di:waypoint xsi:type="dc:Point" x="441" y="599" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="415" y="584" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0wa4zya_di" bpmnElement="Task_0ap39ka"> + <dc:Bounds x="714" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0sgm9bu_di" bpmnElement="Task_1drglpt"> + <dc:Bounds x="960" y="770" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_16jtt5t_di" bpmnElement="Task_0vy2zge"> + <dc:Bounds x="131" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xx8y1s_di" bpmnElement="SequenceFlow_0xx8y1s"> + <di:waypoint xsi:type="dc:Point" x="239" y="427" /> + <di:waypoint xsi:type="dc:Point" x="292" y="427" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="266" y="412" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0a6pdza_di" bpmnElement="SequenceFlow_0a6pdza"> + <di:waypoint xsi:type="dc:Point" x="525" y="427" /> + <di:waypoint xsi:type="dc:Point" x="601" y="427" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="563" y="412" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_13h26h9_di" bpmnElement="SequenceFlow_13h26h9"> + <di:waypoint xsi:type="dc:Point" x="814" y="427" /> + <di:waypoint xsi:type="dc:Point" x="871" y="427" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="843" y="412" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_02wc9i0_di" bpmnElement="Task_1dtbnuy"> + <dc:Bounds x="139" y="387" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0mz2hdm_di" bpmnElement="Task_1fj63ov"> + <dc:Bounds x="425" y="387" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1wagy2o_di" bpmnElement="Task_1cfkcss"> + <dc:Bounds x="714" y="387" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1uno5rs_di" bpmnElement="SequenceFlow_1uno5rs"> + <di:waypoint xsi:type="dc:Point" x="239" y="810" /> + <di:waypoint xsi:type="dc:Point" x="292" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="266" y="795" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1c79909_di" bpmnElement="SequenceFlow_1c79909"> + <di:waypoint xsi:type="dc:Point" x="525" y="810" /> + <di:waypoint xsi:type="dc:Point" x="601" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="563" y="795" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_13zephm_di" bpmnElement="Task_1hdg951"> + <dc:Bounds x="139" y="770" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_11xqphb_di" bpmnElement="Task_1ca5ctq"> + <dc:Bounds x="425" y="770" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1xfbwpi_di" bpmnElement="SequenceFlow_1xfbwpi"> + <di:waypoint xsi:type="dc:Point" x="814" y="810" /> + <di:waypoint xsi:type="dc:Point" x="871" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="843" y="795" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0a4ovfa_di" bpmnElement="Task_1sove95"> + <dc:Bounds x="714" y="770" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0q323wc_di" bpmnElement="ExclusiveGateway_0q323wc" isMarkerVisible="true"> + <dc:Bounds x="291.803" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="274" y="262" width="86" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16mo99z_di" bpmnElement="SequenceFlow_16mo99z"> + <di:waypoint xsi:type="dc:Point" x="342" y="237" /> + <di:waypoint xsi:type="dc:Point" x="425" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="373" y="213" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_045e1uz_di" bpmnElement="ExclusiveGateway_045e1uz" isMarkerVisible="true"> + <dc:Bounds x="601" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="589" y="262" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0baosqi_di" bpmnElement="SequenceFlow_0baosqi"> + <di:waypoint xsi:type="dc:Point" x="651" y="237" /> + <di:waypoint xsi:type="dc:Point" x="714" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="673" y="214" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1k5n5d1_di" bpmnElement="Task_0q5cdit"> + <dc:Bounds x="1132" y="470" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qmz2ez_di" bpmnElement="SequenceFlow_1qmz2ez"> + <di:waypoint xsi:type="dc:Point" x="317" y="212" /> + <di:waypoint xsi:type="dc:Point" x="317" y="191" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="191" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="378" y="196" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_03rkfbo_di" bpmnElement="SequenceFlow_03rkfbo"> + <di:waypoint xsi:type="dc:Point" x="626" y="212" /> + <di:waypoint xsi:type="dc:Point" x="626" y="187" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="187" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="683" y="166" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0v0u7mf_di" bpmnElement="SequenceFlow_0v0u7mf"> + <di:waypoint xsi:type="dc:Point" x="1232" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1314" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1273" y="495" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="Task_0zbogrm_di" bpmnElement="Task_0zbogrm"> + <dc:Bounds x="1438" y="470" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0vpd06n_di" bpmnElement="SequenceFlow_0vpd06n"> + <di:waypoint xsi:type="dc:Point" x="1339" y="485" /> + <di:waypoint xsi:type="dc:Point" x="1339" y="373" /> + <di:waypoint xsi:type="dc:Point" x="1438" y="373" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1390" y="377" width="26" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qr8msw_di" bpmnElement="SequenceFlow_1qr8msw"> + <di:waypoint xsi:type="dc:Point" x="1364" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1405" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1405" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1438" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1380" y="515" width="42" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0ud5uwa_di" bpmnElement="ExclusiveGateway_0ud5uwa" isMarkerVisible="true"> + <dc:Bounds x="871.1194471865745" y="211.86673247778873" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="904" y="257.86673247778873" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0k3fx7p_di" bpmnElement="SequenceFlow_0k3fx7p"> + <di:waypoint xsi:type="dc:Point" x="814" y="237" /> + <di:waypoint xsi:type="dc:Point" x="871" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="843" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1lsm3bn_di" bpmnElement="SequenceFlow_1lsm3bn"> + <di:waypoint xsi:type="dc:Point" x="921" y="237" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="237" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1044" y="214" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1slvyx2_di" bpmnElement="ExclusiveGateway_1slvyx2" isMarkerVisible="true"> + <dc:Bounds x="292" y="402" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="283" y="452" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0qy68ib_di" bpmnElement="SequenceFlow_0qy68ib"> + <di:waypoint xsi:type="dc:Point" x="342" y="427" /> + <di:waypoint xsi:type="dc:Point" x="425" y="427" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="378" y="412" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1ichg7h_di" bpmnElement="ExclusiveGateway_1ichg7h" isMarkerVisible="true"> + <dc:Bounds x="601" y="402" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="590" y="452" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0q0qan8_di" bpmnElement="SequenceFlow_0q0qan8"> + <di:waypoint xsi:type="dc:Point" x="651" y="427" /> + <di:waypoint xsi:type="dc:Point" x="714" y="427" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="677" y="412" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1etgtgi_di" bpmnElement="ExclusiveGateway_1etgtgi" isMarkerVisible="true"> + <dc:Bounds x="870.9141164856861" y="402" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="909" y="445" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1c0vdki_di" bpmnElement="SequenceFlow_1c0vdki"> + <di:waypoint xsi:type="dc:Point" x="896" y="452" /> + <di:waypoint xsi:type="dc:Point" x="896" y="507" /> + <di:waypoint xsi:type="dc:Point" x="90" y="507" /> + <di:waypoint xsi:type="dc:Point" x="90" y="599" /> + <di:waypoint xsi:type="dc:Point" x="131" y="599" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="906" y="484" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0bduwog_di" bpmnElement="SequenceFlow_0bduwog"> + <di:waypoint xsi:type="dc:Point" x="317" y="402" /> + <di:waypoint xsi:type="dc:Point" x="317" y="354" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="354" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="375" y="356" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0uwar5b_di" bpmnElement="SequenceFlow_0uwar5b"> + <di:waypoint xsi:type="dc:Point" x="626" y="402" /> + <di:waypoint xsi:type="dc:Point" x="626" y="359" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="359" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="676" y="367" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0i7hfj2_di" bpmnElement="SequenceFlow_0i7hfj2"> + <di:waypoint xsi:type="dc:Point" x="921" y="427" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="427" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1044" y="412" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0ulrq9g_di" bpmnElement="ExclusiveGateway_0ulrq9g" isMarkerVisible="true"> + <dc:Bounds x="441" y="574" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="445" y="631" width="88" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_04zwhw4_di" bpmnElement="SequenceFlow_04zwhw4"> + <di:waypoint xsi:type="dc:Point" x="896" y="625" /> + <di:waypoint xsi:type="dc:Point" x="896" y="683" /> + <di:waypoint xsi:type="dc:Point" x="91" y="683" /> + <di:waypoint xsi:type="dc:Point" x="91" y="810" /> + <di:waypoint xsi:type="dc:Point" x="139" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="94" y="740.2320415029827" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_10ek8l4_di" bpmnElement="SequenceFlow_10ek8l4"> + <di:waypoint xsi:type="dc:Point" x="466" y="574" /> + <di:waypoint xsi:type="dc:Point" x="466" y="530" /> + <di:waypoint xsi:type="dc:Point" x="1132" y="530" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1039" y="503.5367415795749" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_02tj4dw_di" bpmnElement="ExclusiveGateway_02tj4dw" isMarkerVisible="true"> + <dc:Bounds x="292.1076011846002" y="785" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="284" y="835" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_162mm0m_di" bpmnElement="SequenceFlow_162mm0m"> + <di:waypoint xsi:type="dc:Point" x="342" y="810" /> + <di:waypoint xsi:type="dc:Point" x="425" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="378" y="795" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1gn5lab_di" bpmnElement="ExclusiveGateway_1gn5lab" isMarkerVisible="true"> + <dc:Bounds x="601.1076011846002" y="785" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="591" y="835" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_197t3qk_di" bpmnElement="SequenceFlow_197t3qk"> + <di:waypoint xsi:type="dc:Point" x="651.1076011846002" y="810" /> + <di:waypoint xsi:type="dc:Point" x="714" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="677" y="795" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_06mv93h_di" bpmnElement="ExclusiveGateway_06mv93h" isMarkerVisible="true"> + <dc:Bounds x="871" y="785" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="862" y="835" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_19lg15d_di" bpmnElement="SequenceFlow_19lg15d"> + <di:waypoint xsi:type="dc:Point" x="921" y="810" /> + <di:waypoint xsi:type="dc:Point" x="960" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="935" y="795" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0l2z6wc_di" bpmnElement="ExclusiveGateway_0l2z6wc" isMarkerVisible="true"> + <dc:Bounds x="1105.1076011846003" y="785" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1145" y="833" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_12mfil6_di" bpmnElement="SequenceFlow_12mfil6"> + <di:waypoint xsi:type="dc:Point" x="1060" y="810" /> + <di:waypoint xsi:type="dc:Point" x="1105" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1083" y="785" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_13yjc85_di" bpmnElement="SequenceFlow_13yjc85"> + <di:waypoint xsi:type="dc:Point" x="1155" y="810" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="810" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1160" y="795" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0waedj5_di" bpmnElement="SequenceFlow_0waedj5"> + <di:waypoint xsi:type="dc:Point" x="317" y="785" /> + <di:waypoint xsi:type="dc:Point" x="317" y="711" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="711" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="370" y="716" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1hg9c2l_di" bpmnElement="SequenceFlow_1hg9c2l"> + <di:waypoint xsi:type="dc:Point" x="626" y="785" /> + <di:waypoint xsi:type="dc:Point" x="626" y="714" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="714" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="669" y="717" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0gej71y_di" bpmnElement="SequenceFlow_0gej71y"> + <di:waypoint xsi:type="dc:Point" x="896" y="785" /> + <di:waypoint xsi:type="dc:Point" x="896" y="720" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="720" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="905" y="738" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1lb0lk5_di" bpmnElement="Task_1tg549h"> + <dc:Bounds x="1438" y="333" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1gmvi7n_di" bpmnElement="ExclusiveGateway_0xlxgl0" isMarkerVisible="true"> + <dc:Bounds x="1314" y="485" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1295" y="534.2201382033564" width="87" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0y82zzx_di" bpmnElement="ExclusiveGateway_0y82zzx" isMarkerVisible="true"> + <dc:Bounds x="1463" y="671" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1522" y="684" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_05gpym3_di" bpmnElement="SequenceFlow_05gpym3"> + <di:waypoint xsi:type="dc:Point" x="1339" y="535" /> + <di:waypoint xsi:type="dc:Point" x="1339" y="648" /> + <di:waypoint xsi:type="dc:Point" x="1490" y="648" /> + <di:waypoint xsi:type="dc:Point" x="1489" y="672" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1404" y="633" width="21" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1sla5dr_di" bpmnElement="SequenceFlow_1sla5dr"> + <di:waypoint xsi:type="dc:Point" x="1463" y="696" /> + <di:waypoint xsi:type="dc:Point" x="440" y="696" /> + <di:waypoint xsi:type="dc:Point" x="440" y="467" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1227" y="699.0112438804176" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0iektwg_di" bpmnElement="SequenceFlow_0iektwg"> + <di:waypoint xsi:type="dc:Point" x="1467" y="692" /> + <di:waypoint xsi:type="dc:Point" x="1323" y="667" /> + <di:waypoint xsi:type="dc:Point" x="764" y="667" /> + <di:waypoint xsi:type="dc:Point" x="764" y="467" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1214" y="631" width="87" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ttepat_di" bpmnElement="SequenceFlow_1ttepat"> + <di:waypoint xsi:type="dc:Point" x="1468" y="701" /> + <di:waypoint xsi:type="dc:Point" x="1346" y="735" /> + <di:waypoint xsi:type="dc:Point" x="189" y="735" /> + <di:waypoint xsi:type="dc:Point" x="189" y="639" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1230" y="743" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1hx1ur7_di" bpmnElement="SequenceFlow_1hx1ur7"> + <di:waypoint xsi:type="dc:Point" x="1488" y="721" /> + <di:waypoint xsi:type="dc:Point" x="1488" y="789" /> + <di:waypoint xsi:type="dc:Point" x="1322" y="883" /> + <di:waypoint xsi:type="dc:Point" x="475" y="883" /> + <di:waypoint xsi:type="dc:Point" x="475" y="850" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1316" y="811" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ukzynj_di" bpmnElement="SequenceFlow_0ukzynj"> + <di:waypoint xsi:type="dc:Point" x="1488" y="721" /> + <di:waypoint xsi:type="dc:Point" x="1488" y="818" /> + <di:waypoint xsi:type="dc:Point" x="1346" y="918" /> + <di:waypoint xsi:type="dc:Point" x="764" y="918" /> + <di:waypoint xsi:type="dc:Point" x="764" y="850" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1374" y="853.0052048946286" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1lsfn19_di" bpmnElement="SequenceFlow_1lsfn19"> + <di:waypoint xsi:type="dc:Point" x="1488" y="721" /> + <di:waypoint xsi:type="dc:Point" x="1488" y="858" /> + <di:waypoint xsi:type="dc:Point" x="1368" y="952" /> + <di:waypoint xsi:type="dc:Point" x="1010" y="952" /> + <di:waypoint xsi:type="dc:Point" x="1010" y="850" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1402" y="937.143889853408" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19ba94v_di" bpmnElement="SequenceFlow_19ba94v"> + <di:waypoint xsi:type="dc:Point" x="231" y="599" /> + <di:waypoint xsi:type="dc:Point" x="289" y="599" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="260" y="584" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0rqgdju_di" bpmnElement="Task_0eae8go"> + <dc:Bounds x="131" y="559" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_13zzxzd_di" bpmnElement="Task_040hi91"> + <dc:Bounds x="513" y="559" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1qpajth_di" bpmnElement="Task_15hpowt"> + <dc:Bounds x="645" y="559" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_084iffr_di" bpmnElement="ExclusiveGateway_084iffr" isMarkerVisible="true"> + <dc:Bounds x="871" y="574" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="924" y="599" width="84" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0pfydeg_di" bpmnElement="SequenceFlow_0pfydeg"> + <di:waypoint xsi:type="dc:Point" x="921" y="599" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="599" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1043" y="584" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0bxgny0_di" bpmnElement="SequenceFlow_0bxgny0"> + <di:waypoint xsi:type="dc:Point" x="491" y="599" /> + <di:waypoint xsi:type="dc:Point" x="513" y="599" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="496" y="574" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qm0ygo_di" bpmnElement="SequenceFlow_1qm0ygo"> + <di:waypoint xsi:type="dc:Point" x="613" y="599" /> + <di:waypoint xsi:type="dc:Point" x="645" y="599" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="629" y="574" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0he2w4b_di" bpmnElement="SequenceFlow_0he2w4b"> + <di:waypoint xsi:type="dc:Point" x="745" y="599" /> + <di:waypoint xsi:type="dc:Point" x="871" y="599" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="808" y="574" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_051zp79_di" bpmnElement="SequenceFlow_051zp79"> + <di:waypoint xsi:type="dc:Point" x="1499" y="682" /> + <di:waypoint xsi:type="dc:Point" x="1627" y="512" /> + <di:waypoint xsi:type="dc:Point" x="1627" y="373" /> + <di:waypoint xsi:type="dc:Point" x="1538" y="373" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1728" y="551.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_193t8ts_di" bpmnElement="SequenceFlow_193t8ts"> + <di:waypoint xsi:type="dc:Point" x="1505" y="688" /> + <di:waypoint xsi:type="dc:Point" x="1677" y="614" /> + <di:waypoint xsi:type="dc:Point" x="1677" y="310" /> + <di:waypoint xsi:type="dc:Point" x="475" y="310" /> + <di:waypoint xsi:type="dc:Point" x="475" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1575" y="581" width="88" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_18u8p2k_di" bpmnElement="SequenceFlow_18u8p2k"> + <di:waypoint xsi:type="dc:Point" x="1508" y="691" /> + <di:waypoint xsi:type="dc:Point" x="1776" y="618" /> + <di:waypoint xsi:type="dc:Point" x="1776" y="311" /> + <di:waypoint xsi:type="dc:Point" x="764" y="311" /> + <di:waypoint xsi:type="dc:Point" x="764" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1689" y="577.5" width="81" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0eueu1t_di" bpmnElement="SequenceFlow_0eueu1t"> + <di:waypoint xsi:type="dc:Point" x="1510" y="693" /> + <di:waypoint xsi:type="dc:Point" x="1865" y="635" /> + <di:waypoint xsi:type="dc:Point" x="1865" y="309" /> + <di:waypoint xsi:type="dc:Point" x="189" y="309" /> + <di:waypoint xsi:type="dc:Point" x="189" y="387" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1784" y="579" width="80" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/TestHelloWorld.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/TestHelloWorld.bpmn new file mode 100644 index 0000000000..15399f4488 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/TestHelloWorld.bpmn @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2"> + <bpmn:process id="Process_1" isExecutable="false"> + <bpmn:startEvent id="StartEvent_1" name="start"> + <bpmn:outgoing>SequenceFlow_0bav304</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:sequenceFlow id="SequenceFlow_0bav304" sourceRef="StartEvent_1" targetRef="Task_1omdjv6" /> + <bpmn:endEvent id="EndEvent_102s4ct" name="end"> + <bpmn:incoming>SequenceFlow_02tq5ta</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_02tq5ta" sourceRef="Task_1omdjv6" targetRef="EndEvent_102s4ct" /> + <bpmn:serviceTask id="Task_1omdjv6" name="log hello world" camunda:expression="${AAIRestClientImpl.logHelloWorld()}"> + <bpmn:incoming>SequenceFlow_0bav304</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_02tq5ta</bpmn:outgoing> + </bpmn:serviceTask> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="173" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="180" y="138" width="22" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0bav304_di" bpmnElement="SequenceFlow_0bav304"> + <di:waypoint xsi:type="dc:Point" x="209" y="120" /> + <di:waypoint xsi:type="dc:Point" x="237" y="120" /> + <di:waypoint xsi:type="dc:Point" x="237" y="120" /> + <di:waypoint xsi:type="dc:Point" x="265" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="252" y="114" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_102s4ct_di" bpmnElement="EndEvent_102s4ct"> + <dc:Bounds x="429" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="438" y="142" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_02tq5ta_di" bpmnElement="SequenceFlow_02tq5ta"> + <di:waypoint xsi:type="dc:Point" x="365" y="120" /> + <di:waypoint xsi:type="dc:Point" x="429" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="397" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_0bl4qfz_di" bpmnElement="Task_1omdjv6"> + <dc:Bounds x="265" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateNetworkInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateNetworkInstance.bpmn index a19e0c632b..7e54b805e1 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateNetworkInstance.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateNetworkInstance.bpmn @@ -116,11 +116,12 @@ UpdateNetworkInstance.prepareDBRequestError(execution)]]></bpmn2:script> <bpmn2:extensionElements> <camunda:connector> <camunda:inputOutput> - <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> <camunda:inputParameter name="payload">${UPDNI_createDBRequest}</camunda:inputParameter> <camunda:inputParameter name="headers"> <camunda:map> <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> </camunda:map> </camunda:inputParameter> <camunda:inputParameter name="method">POST</camunda:inputParameter> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVfModuleInfra.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVfModuleInfra.bpmn index 1d20bd099c..fd554e0729 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVfModuleInfra.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVfModuleInfra.bpmn @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="_F0omAMXGEeW834CKd-K10Q" exporter="camunda modeler" exporterVersion="2.7.0" targetNamespace="http://camunda.org/schema/1.0/bpmn"> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_F0omAMXGEeW834CKd-K10Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> <bpmn2:process id="UpdateVfModuleInfra" name="UpdateVfModuleInfra" isExecutable="true"> <bpmn2:scriptTask id="ScriptTask_1" name="Send Synch Response" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> @@ -8,7 +8,7 @@ def uvfm = new UpdateVfModuleInfra() uvfm.sendSynchResponse(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="ScriptTask_1" targetRef="ScriptTask_7"/> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="ScriptTask_1" targetRef="ScriptTask_7" /> <bpmn2:scriptTask id="ScriptTask_2" name="Pre-Process Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> @@ -17,7 +17,7 @@ def uvfm = new UpdateVfModuleInfra() uvfm.preProcessRequest(execution) ]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_2" targetRef="ScriptTask_1"/> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_2" targetRef="ScriptTask_1" /> <bpmn2:scriptTask id="ScriptTask_7" name="DoUpdateVfModule (prep)" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> @@ -25,32 +25,21 @@ uvfm.preProcessRequest(execution) def uvfm = new UpdateVfModuleInfra() uvfm.prepDoUpdateVfModule(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:callActivity id="ScriptTask_6" name="DoUpdateVfModule" calledElement="DoUpdateVfModule"> - <bpmn2:extensionElements> - <camunda:in source="UPDVfModI_Request" target="DoUpdateVfModuleRequest"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> - <camunda:out source="WorkflowException" target="WorkflowException"/> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="ScriptTask_7" targetRef="ScriptTask_6"/> + <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="ScriptTask_7" targetRef="ScriptTask_6" /> <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess"> <bpmn2:extensionElements> - <camunda:in source="UPDVfModI_CompletionHandlerRequest" target="CompleteMsoProcessRequest"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> + <camunda:in source="UPDVfModI_CompletionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_4"/> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_4" /> <bpmn2:endEvent id="EndEvent_1" name="TheEnd"> <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> - <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_5"/> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_5" /> </bpmn2:endEvent> <bpmn2:scriptTask id="ScriptTask_4" name="Set Success Indicator" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> @@ -58,7 +47,7 @@ uvfm.prepDoUpdateVfModule(execution)]]></bpmn2:script> <bpmn2:script><![CDATA[// The following variable is checked by the unit test execution.setVariable("UpdateVfModuleInfraSuccessIndicator", true)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_4" targetRef="EndEvent_1"/> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_4" targetRef="EndEvent_1" /> <bpmn2:scriptTask id="ScriptTask_10" name="Completion Handler (prep)" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> @@ -67,13 +56,13 @@ def uvfm = new UpdateVfModuleInfra() uvfm.completionHandlerPrep(execution, 'UPDVfModI_CompletionHandlerRequest') ]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1"/> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1" /> <bpmn2:subProcess id="SubProcess_1" name="Error Handler" triggeredByEvent="true"> <bpmn2:startEvent id="StartEvent_3" name="Catch All Errors"> <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_1"/> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="ScriptTask_3"/> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="ScriptTask_3" /> <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> @@ -82,192 +71,225 @@ def uvfm = new UpdateVfModuleInfra() uvfm.falloutHandlerPrep(execution, 'UPDVfModI_FalloutHandlerRequest') ]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ScriptTask_3" targetRef="CallActivity_2"/> + <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ScriptTask_3" targetRef="CallActivity_2" /> <bpmn2:callActivity id="CallActivity_2" name="Fallout Handler" calledElement="FalloutHandler"> <bpmn2:extensionElements> - <camunda:in source="UPDVfModI_FalloutHandlerRequest" target="FalloutHandlerRequest"/> + <camunda:in source="UPDVfModI_FalloutHandlerRequest" target="FalloutHandlerRequest" /> <camunda:in source="mso-request-id" target="mso-request-id"/> <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> </bpmn2:callActivity> <bpmn2:endEvent id="EndEvent_2"> <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> - <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1"/> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> </bpmn2:endEvent> - <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_2" targetRef="EndEvent_2"/> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_2" targetRef="EndEvent_2" /> </bpmn2:subProcess> <bpmn2:endEvent id="EndEvent_3"> <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> - <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2"/> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2" /> </bpmn2:endEvent> <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_2"/> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" /> </bpmn2:boundaryEvent> - <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_3"/> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_3" /> <bpmn2:startEvent id="StartEvent_1" name="Start"> <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_2"/> - <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="ScriptTask_6" targetRef="ScriptTask_10"/> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_2" /> + <bpmn2:callActivity id="ScriptTask_6" name="DoUpdateVfModule" calledElement="DoUpdateVfModule"> + <bpmn2:extensionElements> + <camunda:in source="UPDVfModI_requestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:in source="UPDVfModI_vnfType" target="vnfType" /> + <camunda:in source="UPDVfModI_vnfName" target="vnfName" /> + <camunda:in source="UPDVfModI_vnfId" target="vnfId" /> + <camunda:in source="UPDVfModI_vfModuleName" target="vfModuleName" /> + <camunda:in source="UPDVfModI_vfModuleType" target="vfModuleType" /> + <camunda:in source="UPDVfModI_vfModuleId" target="vfModuleId" /> + <camunda:in source="UPDVfModI_volumeGroupId" target="volumeGroupId" /> + <camunda:in source="UPDVfModI_volumeGroupName" target="volumeGroupName" /> + <camunda:in source="UPDVfModI_isBaseVfModule" target="isBaseVfModule" /> + <camunda:in source="UPDVfModI_asdcServiceModelVersion" target="asdcServiceModelVersion" /> + <camunda:in source="UPDVfModI_serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="UPDVfModI_serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="UPDVfModI_vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="UPDVfModI_globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="UPDVfModI_lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="UPDVfModI_tenantId" target="tenantId" /> + <camunda:in source="UPDVfModI_sdncVersion" target="sdncVersion" /> + <camunda:in source="UPDVfModI_vfModuleModelInfo" target="vfModuleModelInfo" /> + <camunda:in source="UPDVfModI_usePreload" target="usePreload" /> + <camunda:in source="UPDVfModI_vfModuleInputParams" target="vfModuleInputParams" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="ScriptTask_6" targetRef="ScriptTask_10" /> </bpmn2:process> - <bpmn2:error id="Error_1" errorCode="MSOWorkflowException" name="MSOWorkflowException"/> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateVfModuleInfra"> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1"> - <dc:Bounds height="36.0" width="36.0" x="149.0" y="72.0"/> + <dc:Bounds x="149" y="72" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="34.0" x="150.0" y="113.0"/> + <dc:Bounds x="150" y="113" width="34" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1"> - <dc:Bounds height="36.0" width="36.0" x="605.0" y="370.0"/> + <dc:Bounds x="605" y="370" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="50.0" x="598.0" y="411.0"/> + <dc:Bounds x="598" y="411" width="50" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124"> - <di:waypoint xsi:type="dc:Point" x="185.0" y="90.0"/> - <di:waypoint xsi:type="dc:Point" x="299.0" y="90.0"/> + <di:waypoint xsi:type="dc:Point" x="185" y="90" /> + <di:waypoint xsi:type="dc:Point" x="299" y="90" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="235.0" y="90.0"/> + <dc:Bounds x="235" y="90" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="ScriptTask_2"> - <dc:Bounds height="80.0" width="100.0" x="299.0" y="50.0"/> + <dc:Bounds x="299" y="50" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_ScriptTask_125"> - <di:waypoint xsi:type="dc:Point" x="399.0" y="90.0"/> - <di:waypoint xsi:type="dc:Point" x="449.0" y="90.0"/> + <di:waypoint xsi:type="dc:Point" x="399" y="90" /> + <di:waypoint xsi:type="dc:Point" x="449" y="90" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="433.0" y="90.0"/> + <dc:Bounds x="433" y="90" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_125" bpmnElement="ScriptTask_1"> - <dc:Bounds height="80.0" width="100.0" x="449.0" y="50.0"/> + <dc:Bounds x="449" y="50" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_125" targetElement="_BPMNShape_ScriptTask_130"> - <di:waypoint xsi:type="dc:Point" x="498.0" y="130.0"/> - <di:waypoint xsi:type="dc:Point" x="498.0" y="160.0"/> - <di:waypoint xsi:type="dc:Point" x="199.0" y="160.0"/> - <di:waypoint xsi:type="dc:Point" x="199.0" y="190.0"/> + <di:waypoint xsi:type="dc:Point" x="498" y="130" /> + <di:waypoint xsi:type="dc:Point" x="498" y="160" /> + <di:waypoint xsi:type="dc:Point" x="199" y="160" /> + <di:waypoint xsi:type="dc:Point" x="199" y="190" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="717.0" y="169.0"/> + <dc:Bounds x="717" y="169" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4"> - <dc:Bounds height="80.0" width="100.0" x="449.0" y="348.0"/> + <dc:Bounds x="449" y="348" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_EndEvent_125"> - <di:waypoint xsi:type="dc:Point" x="549.0" y="388.0"/> - <di:waypoint xsi:type="dc:Point" x="605.0" y="388.0"/> + <di:waypoint xsi:type="dc:Point" x="549" y="388" /> + <di:waypoint xsi:type="dc:Point" x="605" y="388" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="723.0" y="186.0"/> + <dc:Bounds x="723" y="186" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_130" bpmnElement="ScriptTask_7"> - <dc:Bounds height="80.0" width="100.0" x="149.0" y="190.0"/> + <dc:Bounds x="149" y="190" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10"> - <dc:Bounds height="80.0" width="100.0" x="149.0" y="348.0"/> + <dc:Bounds x="149" y="348" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1"> - <dc:Bounds height="80.0" width="100.0" x="299.0" y="348.0"/> + <dc:Bounds x="299" y="348" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_CallActivity_27"> - <di:waypoint xsi:type="dc:Point" x="249.0" y="388.0"/> - <di:waypoint xsi:type="dc:Point" x="299.0" y="388.0"/> + <di:waypoint xsi:type="dc:Point" x="249" y="388" /> + <di:waypoint xsi:type="dc:Point" x="299" y="388" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="271.0" y="394.0"/> + <dc:Bounds x="271" y="394" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true"> - <dc:Bounds height="241.0" width="565.0" x="65.0" y="536.0"/> + <dc:Bounds x="65" y="536" width="565" height="241" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3"> - <dc:Bounds height="36.0" width="36.0" x="129.0" y="630.0"/> + <dc:Bounds x="129" y="630" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="98.0" x="98.0" y="671.0"/> + <dc:Bounds x="98" y="671" width="98" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3"> - <dc:Bounds height="80.0" width="100.0" x="209.0" y="608.0"/> + <dc:Bounds x="209" y="608" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_52" targetElement="_BPMNShape_ScriptTask_136"> - <di:waypoint xsi:type="dc:Point" x="165.0" y="648.0"/> - <di:waypoint xsi:type="dc:Point" x="209.0" y="648.0"/> + <di:waypoint xsi:type="dc:Point" x="165" y="648" /> + <di:waypoint xsi:type="dc:Point" x="209" y="648" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="209.0" y="948.0"/> + <dc:Bounds x="209" y="948" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_136" targetElement="_BPMNShape_CallActivity_28"> - <di:waypoint xsi:type="dc:Point" x="309.0" y="648.0"/> - <di:waypoint xsi:type="dc:Point" x="377.0" y="648.0"/> + <di:waypoint xsi:type="dc:Point" x="309" y="648" /> + <di:waypoint xsi:type="dc:Point" x="377" y="648" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="325.0" y="648.0"/> + <dc:Bounds x="325" y="648" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2"> - <dc:Bounds height="36.0" width="36.0" x="533.0" y="630.0"/> + <dc:Bounds x="533" y="630" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="551.0" y="671.0"/> + <dc:Bounds x="551" y="671" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1"> - <dc:Bounds height="36.0" width="36.0" x="612.0" y="630.0"/> + <dc:Bounds x="612" y="630" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="627.0" y="671.0"/> + <dc:Bounds x="627" y="671" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3"> - <dc:Bounds height="36.0" width="36.0" x="704.0" y="630.0"/> + <dc:Bounds x="704" y="630" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="722.0" y="671.0"/> + <dc:Bounds x="722" y="671" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_BoundaryEvent_43" targetElement="_BPMNShape_EndEvent_127"> - <di:waypoint xsi:type="dc:Point" x="648.0" y="648.0"/> - <di:waypoint xsi:type="dc:Point" x="704.0" y="648.0"/> + <di:waypoint xsi:type="dc:Point" x="648" y="648" /> + <di:waypoint xsi:type="dc:Point" x="704" y="648" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="693.0" y="948.0"/> + <dc:Bounds x="693" y="948" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2"> - <dc:Bounds height="80.0" width="100.0" x="377.0" y="608.0"/> + <dc:Bounds x="377" y="608" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_27" targetElement="_BPMNShape_ScriptTask_127"> - <di:waypoint xsi:type="dc:Point" x="399.0" y="388.0"/> - <di:waypoint xsi:type="dc:Point" x="449.0" y="388.0"/> + <di:waypoint xsi:type="dc:Point" x="399" y="388" /> + <di:waypoint xsi:type="dc:Point" x="449" y="388" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="439.0" y="356.0"/> + <dc:Bounds x="439" y="356" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_28" targetElement="_BPMNShape_EndEvent_126"> - <di:waypoint xsi:type="dc:Point" x="477.0" y="648.0"/> - <di:waypoint xsi:type="dc:Point" x="533.0" y="648.0"/> + <di:waypoint xsi:type="dc:Point" x="477" y="648" /> + <di:waypoint xsi:type="dc:Point" x="533" y="648" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="373.0" y="456.0"/> + <dc:Bounds x="373" y="456" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_181" bpmnElement="ScriptTask_6"> - <dc:Bounds height="80.0" width="100.0" x="299.0" y="190.0"/> - </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_130" targetElement="_BPMNShape_ScriptTask_181"> - <di:waypoint xsi:type="dc:Point" x="249.0" y="230.0"/> - <di:waypoint xsi:type="dc:Point" x="299.0" y="230.0"/> + <di:waypoint xsi:type="dc:Point" x="249" y="230" /> + <di:waypoint xsi:type="dc:Point" x="299" y="230" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="274" y="205" width="0" height="0" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_181" bpmnElement="ScriptTask_6"> + <dc:Bounds x="299" y="190" width="100" height="80" /> + </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_181" targetElement="_BPMNShape_ScriptTask_133"> - <di:waypoint xsi:type="dc:Point" x="399.0" y="231.0"/> - <di:waypoint xsi:type="dc:Point" x="624.0" y="233.0"/> - <di:waypoint xsi:type="dc:Point" x="624.0" y="294.0"/> - <di:waypoint xsi:type="dc:Point" x="99.0" y="294.0"/> - <di:waypoint xsi:type="dc:Point" x="99.0" y="388.0"/> - <di:waypoint xsi:type="dc:Point" x="149.0" y="388.0"/> + <di:waypoint xsi:type="dc:Point" x="399" y="231" /> + <di:waypoint xsi:type="dc:Point" x="624" y="233" /> + <di:waypoint xsi:type="dc:Point" x="624" y="294" /> + <di:waypoint xsi:type="dc:Point" x="99" y="294" /> + <di:waypoint xsi:type="dc:Point" x="99" y="388" /> + <di:waypoint xsi:type="dc:Point" x="149" y="388" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="500.0" y="232.0"/> + <dc:Bounds x="503" y="232" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVfModuleInfraV2.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVfModuleInfraV2.bpmn new file mode 100644 index 0000000000..ebdd459288 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVfModuleInfraV2.bpmn @@ -0,0 +1,412 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="_F0omAMXGEeW834CKd-K10Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="UpdateVfModuleInfraV2" name="UpdateVfModuleInfraV2" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1" name="start"> + <bpmn2:outgoing>SequenceFlow_07r1tup</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_07r1tup" sourceRef="StartEvent_1" targetRef="preProcessRequest" /> + <bpmn2:scriptTask id="checkPserverFlag" name="Pserver Flag Check (A&AI)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_09izs9b</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0gyzpu9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.checkPserverFlag(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="preProcessRequest" name="Pre-Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_07r1tup</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04cyigk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="sendSynchResponse" name="Send Synch Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_04cyigk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_09izs9b</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.sendSynchResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="vfFlagCheck" name="VF+ Flag Check (A&AI)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0gyzpu9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16xzdgi</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.vfFlagCheck(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="lockAppC" name="Lock (App-c)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1oa0jsk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ozbxok</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.lockAppC(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="healthCheckAppC" name="Health Check (App-c)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ozbxok</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17c5hhe</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.healthCheckAppC(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="healthDiagnosticSDNO" name="Health Diagnostic (SDN-O)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_17c5hhe</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1pqikpt</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.healthDiagnosticSDNO(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="stopVfModuleController" name="Stop VF Module (App-c)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1pqikpt</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0m6q3pf</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.stopVfModuleController(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="healthCheckController" name="Health Check (App-c)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0vj0wfl</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0cskhwy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.healthCheckController(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="startVfModuleController" name="Start VF Module (App-c)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0cskhwy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_067f4jv</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.startVfModuleController(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="vFFlagUnset" name="VF+ Flag Unset (A&AI)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_067f4jv</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1trqy93</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.vFFlagUnset(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="unlockAppC" name="Unlock (App-C)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1trqy93</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0fc550l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.unlockAppC(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="postUpgradeHealthCheckController" name="Post-Upgrade Health Check (App-c)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0fc550l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1uquo5r</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.postUpgradeHealthCheckController(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_04cyigk" sourceRef="preProcessRequest" targetRef="sendSynchResponse" /> + <bpmn2:sequenceFlow id="SequenceFlow_09izs9b" sourceRef="sendSynchResponse" targetRef="checkPserverFlag" /> + <bpmn2:sequenceFlow id="SequenceFlow_0gyzpu9" sourceRef="checkPserverFlag" targetRef="vfFlagCheck" /> + <bpmn2:sequenceFlow id="SequenceFlow_1pqikpt" sourceRef="healthDiagnosticSDNO" targetRef="stopVfModuleController" /> + <bpmn2:sequenceFlow id="SequenceFlow_0cskhwy" sourceRef="healthCheckController" targetRef="startVfModuleController" /> + <bpmn2:sequenceFlow id="SequenceFlow_067f4jv" sourceRef="startVfModuleController" targetRef="vFFlagUnset" /> + <bpmn2:sequenceFlow id="SequenceFlow_1trqy93" sourceRef="vFFlagUnset" targetRef="unlockAppC" /> + <bpmn2:sequenceFlow id="SequenceFlow_0fc550l" sourceRef="unlockAppC" targetRef="postUpgradeHealthCheckController" /> + <bpmn2:sequenceFlow id="SequenceFlow_1uquo5r" sourceRef="postUpgradeHealthCheckController" targetRef="EndEvent_1" /> + <bpmn2:scriptTask id="doUpdateVfModulePrep" name="DoUpdateVfModule (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0m6q3pf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ykv4yr</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.doUpdateVfModulePrep(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="completionHandlerPrep" name="Completion Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1x3xeba</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_01yr04k</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.completionHandlerPrep(execution,"UPDVfModI_CompletionHandlerRequest")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="setSuccessIndicator" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1rfmnuo</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0vj0wfl</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test
+execution.setVariable("UpdateVfModuleInfraSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1ozbxok" sourceRef="lockAppC" targetRef="healthCheckAppC" /> + <bpmn2:sequenceFlow id="SequenceFlow_17c5hhe" sourceRef="healthCheckAppC" targetRef="healthDiagnosticSDNO" /> + <bpmn2:sequenceFlow id="SequenceFlow_0m6q3pf" sourceRef="stopVfModuleController" targetRef="doUpdateVfModulePrep" /> + <bpmn2:sequenceFlow id="SequenceFlow_0vj0wfl" sourceRef="setSuccessIndicator" targetRef="healthCheckController" /> + <bpmn2:endEvent id="EndEvent_1" name="end"> + <bpmn2:incoming>SequenceFlow_1uquo5r</bpmn2:incoming> + <bpmn2:terminateEventDefinition /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_16xzdgi" sourceRef="vfFlagCheck" targetRef="vfFlagSet" /> + <bpmn2:sequenceFlow id="SequenceFlow_1oa0jsk" sourceRef="vfFlagSet" targetRef="lockAppC" /> + <bpmn2:scriptTask id="vfFlagSet" name="VF+ Flag Set(A&AI)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16xzdgi</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1oa0jsk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.vfFlagSet(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1rfmnuo" sourceRef="CallActivity_1mn9pxh" targetRef="setSuccessIndicator" /> + <bpmn2:callActivity id="CallActivity_12if1z7" name="DoUpdateVfModule" calledElement="DoUpdateVfModule"> + <bpmn2:extensionElements> + <camunda:in source="UPDVfModI_requestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:in source="UPDVfModI_vnfType" target="vnfType" /> + <camunda:in source="UPDVfModI_vnfName" target="vnfName" /> + <camunda:in source="UPDVfModI_vnfId" target="vnfId" /> + <camunda:in source="UPDVfModI_vfModuleName" target="vfModuleName" /> + <camunda:in source="UPDVfModI_vfModuleType" target="vfModuleType" /> + <camunda:in source="UPDVfModI_vfModuleId" target="vfModuleId" /> + <camunda:in source="UPDVfModI_volumeGroupId" target="volumeGroupId" /> + <camunda:in source="UPDVfModI_volumeGroupName" target="volumeGroupName" /> + <camunda:in source="UPDVfModI_isBaseVfModule" target="isBaseVfModule" /> + <camunda:in source="UPDVfModI_asdcServiceModelVersion" target="asdcServiceModelVersion" /> + <camunda:in source="UPDVfModI_serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="UPDVfModI_serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="UPDVfModI_vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="UPDVfModI_globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="UPDVfModI_lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="UPDVfModI_tenantId" target="tenantId" /> + <camunda:in source="UPDVfModI_sdncVersion" target="sdncVersion" /> + <camunda:in source="UPDVfModI_vfModuleModelInfo" target="vfModuleModelInfo" /> + <camunda:in source="UPDVfModI_usePreload" target="usePreload" /> + <camunda:in source="UPDVfModI_vfModuleInputParams" target="vfModuleInputParams" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1ykv4yr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1x3xeba</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1ykv4yr" sourceRef="doUpdateVfModulePrep" targetRef="CallActivity_12if1z7" /> + <bpmn2:sequenceFlow id="SequenceFlow_1x3xeba" sourceRef="CallActivity_12if1z7" targetRef="completionHandlerPrep" /> + <bpmn2:callActivity id="CallActivity_1mn9pxh" name="Completion Handler" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="UPDVfModI_CompletionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_01yr04k</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1rfmnuo</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_01yr04k" sourceRef="completionHandlerPrep" targetRef="CallActivity_1mn9pxh" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateVfModuleInfraV2"> + <bpmndi:BPMNShape id="StartEvent_0twxl8d_di" bpmnElement="StartEvent_1"> + <dc:Bounds x="191" y="241" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="198" y="281" width="22" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_07r1tup_di" bpmnElement="SequenceFlow_07r1tup"> + <di:waypoint xsi:type="dc:Point" x="227" y="259" /> + <di:waypoint xsi:type="dc:Point" x="282" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="209.5" y="238" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_01hwh3t_di" bpmnElement="checkPserverFlag"> + <dc:Bounds x="581" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0f4oi4p_di" bpmnElement="preProcessRequest"> + <dc:Bounds x="282" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_03hqi4p_di" bpmnElement="sendSynchResponse"> + <dc:Bounds x="430" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1s24r7g_di" bpmnElement="vfFlagCheck"> + <dc:Bounds x="722" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1tjbc0n_di" bpmnElement="lockAppC"> + <dc:Bounds x="1000" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0jqyljl_di" bpmnElement="healthCheckAppC"> + <dc:Bounds x="1137" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0xd9t6y_di" bpmnElement="healthDiagnosticSDNO"> + <dc:Bounds x="369" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_07v5qul_di" bpmnElement="stopVfModuleController"> + <dc:Bounds x="521" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1fhh3ik_di" bpmnElement="healthCheckController"> + <dc:Bounds x="521" y="493" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0y2p8lc_di" bpmnElement="startVfModuleController"> + <dc:Bounds x="672" y="493" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0getlx7_di" bpmnElement="vFFlagUnset"> + <dc:Bounds x="809" y="493" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_13ngoxl_di" bpmnElement="unlockAppC"> + <dc:Bounds x="955" y="493" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_023ov5w_di" bpmnElement="postUpgradeHealthCheckController"> + <dc:Bounds x="1103" y="493" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_04cyigk_di" bpmnElement="SequenceFlow_04cyigk"> + <di:waypoint xsi:type="dc:Point" x="382" y="259" /> + <di:waypoint xsi:type="dc:Point" x="430" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="361" y="238" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_09izs9b_di" bpmnElement="SequenceFlow_09izs9b"> + <di:waypoint xsi:type="dc:Point" x="530" y="259" /> + <di:waypoint xsi:type="dc:Point" x="581" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="510.5" y="238" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0gyzpu9_di" bpmnElement="SequenceFlow_0gyzpu9"> + <di:waypoint xsi:type="dc:Point" x="681" y="259" /> + <di:waypoint xsi:type="dc:Point" x="722" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="656.5" y="238" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1pqikpt_di" bpmnElement="SequenceFlow_1pqikpt"> + <di:waypoint xsi:type="dc:Point" x="469" y="394" /> + <di:waypoint xsi:type="dc:Point" x="521" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="495" y="373" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0cskhwy_di" bpmnElement="SequenceFlow_0cskhwy"> + <di:waypoint xsi:type="dc:Point" x="621" y="533" /> + <di:waypoint xsi:type="dc:Point" x="672" y="533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="646.5" y="512" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_067f4jv_di" bpmnElement="SequenceFlow_067f4jv"> + <di:waypoint xsi:type="dc:Point" x="772" y="533" /> + <di:waypoint xsi:type="dc:Point" x="809" y="533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="790.5" y="512" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1trqy93_di" bpmnElement="SequenceFlow_1trqy93"> + <di:waypoint xsi:type="dc:Point" x="909" y="533" /> + <di:waypoint xsi:type="dc:Point" x="955" y="533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="932" y="512" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0fc550l_di" bpmnElement="SequenceFlow_0fc550l"> + <di:waypoint xsi:type="dc:Point" x="1055" y="533" /> + <di:waypoint xsi:type="dc:Point" x="1079" y="533" /> + <di:waypoint xsi:type="dc:Point" x="1079" y="533" /> + <di:waypoint xsi:type="dc:Point" x="1103" y="533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1094" y="527" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1uquo5r_di" bpmnElement="SequenceFlow_1uquo5r"> + <di:waypoint xsi:type="dc:Point" x="1203" y="533" /> + <di:waypoint xsi:type="dc:Point" x="1254" y="533" /> + <di:waypoint xsi:type="dc:Point" x="1254" y="533" /> + <di:waypoint xsi:type="dc:Point" x="1304" y="533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1224" y="527" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_00bft3s_di" bpmnElement="doUpdateVfModulePrep"> + <dc:Bounds x="672" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_00moxf8_di" bpmnElement="completionHandlerPrep"> + <dc:Bounds x="955" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_02qf1er_di" bpmnElement="setSuccessIndicator"> + <dc:Bounds x="369" y="493" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ozbxok_di" bpmnElement="SequenceFlow_1ozbxok"> + <di:waypoint xsi:type="dc:Point" x="1100" y="259" /> + <di:waypoint xsi:type="dc:Point" x="1137" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1073.5" y="238" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17c5hhe_di" bpmnElement="SequenceFlow_17c5hhe"> + <di:waypoint xsi:type="dc:Point" x="1187" y="299" /> + <di:waypoint xsi:type="dc:Point" x="1187" y="324" /> + <di:waypoint xsi:type="dc:Point" x="419" y="324" /> + <di:waypoint xsi:type="dc:Point" x="419" y="354" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="758" y="303" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0m6q3pf_di" bpmnElement="SequenceFlow_0m6q3pf"> + <di:waypoint xsi:type="dc:Point" x="621" y="394" /> + <di:waypoint xsi:type="dc:Point" x="672" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="646.5" y="373" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0vj0wfl_di" bpmnElement="SequenceFlow_0vj0wfl"> + <di:waypoint xsi:type="dc:Point" x="469" y="533" /> + <di:waypoint xsi:type="dc:Point" x="521" y="533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="495" y="512" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_12zreeo_di" bpmnElement="EndEvent_1"> + <dc:Bounds x="1304" y="515" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1313" y="555" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16xzdgi_di" bpmnElement="SequenceFlow_16xzdgi"> + <di:waypoint xsi:type="dc:Point" x="822" y="259" /> + <di:waypoint xsi:type="dc:Point" x="872" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="847" y="238" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1oa0jsk_di" bpmnElement="SequenceFlow_1oa0jsk"> + <di:waypoint xsi:type="dc:Point" x="972" y="259" /> + <di:waypoint xsi:type="dc:Point" x="1000" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="986" y="238" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0zgcd21_di" bpmnElement="vfFlagSet"> + <dc:Bounds x="872" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rfmnuo_di" bpmnElement="SequenceFlow_1rfmnuo"> + <di:waypoint xsi:type="dc:Point" x="1153" y="436" /> + <di:waypoint xsi:type="dc:Point" x="1153" y="465" /> + <di:waypoint xsi:type="dc:Point" x="419" y="465" /> + <di:waypoint xsi:type="dc:Point" x="419" y="493" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="741" y="444" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_12if1z7_di" bpmnElement="CallActivity_12if1z7"> + <dc:Bounds x="809" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ykv4yr_di" bpmnElement="SequenceFlow_1ykv4yr"> + <di:waypoint xsi:type="dc:Point" x="772" y="394" /> + <di:waypoint xsi:type="dc:Point" x="809" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="790.5" y="373" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1x3xeba_di" bpmnElement="SequenceFlow_1x3xeba"> + <di:waypoint xsi:type="dc:Point" x="909" y="394" /> + <di:waypoint xsi:type="dc:Point" x="955" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="932" y="373" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1mn9pxh_di" bpmnElement="CallActivity_1mn9pxh"> + <dc:Bounds x="1103" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_01yr04k_di" bpmnElement="SequenceFlow_01yr04k"> + <di:waypoint xsi:type="dc:Point" x="1055" y="394" /> + <di:waypoint xsi:type="dc:Point" x="1103" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1079" y="373" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVfModuleVolumeInfraV1.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVfModuleVolumeInfraV1.bpmn index 96c0681c48..15b5bc7fcf 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVfModuleVolumeInfraV1.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVfModuleVolumeInfraV1.bpmn @@ -1,44 +1,45 @@ <?xml version="1.0" encoding="UTF-8"?> -<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="_ZBLUcCkQEeaY6ZhIaNLwzg" exporter="camunda modeler" exporterVersion="2.7.0" targetNamespace="http://camunda.org/schema/1.0/bpmn"> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_ZBLUcCkQEeaY6ZhIaNLwzg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> <bpmn2:process id="UpdateVfModuleVolumeInfraV1" name="UpdateVfModuleVolumeInfraV1" isExecutable="true"> <bpmn2:endEvent id="EndEvent_4" name="TheEnd"> <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> - <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1"/> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> </bpmn2:endEvent> <bpmn2:callActivity id="CallActivity_completionHandler" name="Completion Handler" calledElement="CompleteMsoProcess"> <bpmn2:extensionElements> - <camunda:in source="UPDVfModVol_CompletionHandlerRequest" target="CompleteMsoProcessRequest"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:out source="CMSO_ResponseCode" target="UPDVfModVol_CMSO_ResponseCode"/> - <camunda:out source="CMSO_ErrorResponse" target="UPDVfModVol_CMSO_ErrorResponse"/> + <camunda:in source="UPDVfModVol_CompletionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="UPDVfModVol_CMSO_ResponseCode" /> + <camunda:out source="CMSO_ErrorResponse" target="UPDVfModVol_CMSO_ErrorResponse" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_completionHandler" targetRef="ScriptTask_postProcessTemp"/> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_completionHandler" targetRef="ScriptTask_postProcessTemp" /> <bpmn2:serviceTask id="ServiceTask_callUpdateInfraDb" name="Call Update Infra DB"> <bpmn2:extensionElements> <camunda:connector> - <camunda:connectorId>http-connector</camunda:connectorId> <camunda:inputOutput> - <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> <camunda:inputParameter name="payload">${UPDVfModVol_updateInfraRequest}</camunda:inputParameter> <camunda:inputParameter name="headers"> <camunda:map> <camunda:entry key="content-type">aapplication/soap+xml</camunda:entry> + <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> </camunda:map> </camunda:inputParameter> <camunda:inputParameter name="method">POST</camunda:inputParameter> <camunda:outputParameter name="UPDVfModVol_createDBResponse">${response}</camunda:outputParameter> <camunda:outputParameter name="UPDVfModVol_dbReturnCode">${statusCode}</camunda:outputParameter> </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> </camunda:connector> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="ServiceTask_callUpdateInfraDb" targetRef="ScriptTask_prepCompletionHandlerRequest"/> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="ServiceTask_callUpdateInfraDb" targetRef="ScriptTask_prepCompletionHandlerRequest" /> <bpmn2:scriptTask id="ScriptTask_prepVnfRest" name="Prepare VNF Adapter Rest Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing> @@ -46,7 +47,7 @@ def uvmv = new UpdateVfModuleVolumeInfraV1() uvmv.executeMethod('prepVnfAdapterRest', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ScriptTask_prepVnfRest" targetRef="CallActivity_callVNFAdapterRest"/> + <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ScriptTask_prepVnfRest" targetRef="CallActivity_callVNFAdapterRest" /> <bpmn2:scriptTask id="ScriptTask_prepCompletionHandlerRequest" name="Prep Completion Handler Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> @@ -54,20 +55,20 @@ uvmv.executeMethod('prepVnfAdapterRest', execution, isDebugLogEnabled)]]></bpmn2 def uvmv = new UpdateVfModuleVolumeInfraV1() uvmv.executeMethod('prepCompletionHandlerRequest', execution, UPDVfModVol_requestId, 'UPDATE', UPDVfModVol_source, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_prepCompletionHandlerRequest" targetRef="CallActivity_completionHandler"/> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_prepCompletionHandlerRequest" targetRef="CallActivity_completionHandler" /> <bpmn2:callActivity id="CallActivity_callVNFAdapterRest" name="VNFAdapterRest" calledElement="vnfAdapterRestV1"> <bpmn2:extensionElements> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:out source="vnfAdapterRestV1Response" target="UPDVfModVol_vnfAdapterRestResponse"/> - <camunda:out source="WorkflowException" target="WorkflowException"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in source="UPDVfModVol_vnfAdapterRestRequest" target="vnfAdapterRestV1Request"/> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:out source="vnfAdapterRestV1Response" target="UPDVfModVol_vnfAdapterRestResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="UPDVfModVol_vnfAdapterRestRequest" target="vnfAdapterRestV1Request" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_callVNFAdapterRest" targetRef="ScriptTask_prepDbInfraRequest"/> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_callVNFAdapterRest" targetRef="ScriptTask_prepDbInfraRequest" /> <bpmn2:scriptTask id="ScriptTask_prepDbInfraRequest" name="Prep DB Infra Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> @@ -75,14 +76,14 @@ uvmv.executeMethod('prepCompletionHandlerRequest', execution, UPDVfModVol_reques def uvmv = new UpdateVfModuleVolumeInfraV1() uvmv.executeMethod('prepDbInfraDbRequest', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="ScriptTask_prepDbInfraRequest" targetRef="ServiceTask_callUpdateInfraDb"/> + <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="ScriptTask_prepDbInfraRequest" targetRef="ServiceTask_callUpdateInfraDb" /> <bpmn2:scriptTask id="ScriptTask_postProcessTemp" name="Set Success" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> <bpmn2:script><![CDATA[// The following variable is checked by the unit test execution.setVariable("UpdateVfModuleVolumeSuccessIndicator", true)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="ScriptTask_postProcessTemp" targetRef="EndEvent_4"/> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="ScriptTask_postProcessTemp" targetRef="EndEvent_4" /> <bpmn2:exclusiveGateway id="ExclusiveGateway_2"> <bpmn2:incoming>SequenceFlow_noVfModuleRelation</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_personaModelIdMatchYes</bpmn2:incoming> @@ -91,13 +92,13 @@ execution.setVariable("UpdateVfModuleVolumeSuccessIndicator", true)]]></bpmn2:sc <bpmn2:subProcess id="SubProcess_errorHandler" name="Error Handler" triggeredByEvent="true"> <bpmn2:startEvent id="StartEvent_catchAllErrors" name="Catch All Errors"> <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> - <bpmn2:errorEventDefinition id="_ErrorEventDefinition_77"/> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_77" /> </bpmn2:startEvent> <bpmn2:endEvent id="EndEvent_3"> <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> - <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_11"/> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_11" /> </bpmn2:endEvent> - <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="StartEvent_catchAllErrors" targetRef="ScriptTask_preFalloutHandler"/> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="StartEvent_catchAllErrors" targetRef="ScriptTask_preFalloutHandler" /> <bpmn2:scriptTask id="ScriptTask_preFalloutHandler" name="Fallout Handler (prep)" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> @@ -105,24 +106,24 @@ execution.setVariable("UpdateVfModuleVolumeSuccessIndicator", true)]]></bpmn2:sc def uvmv = new UpdateVfModuleVolumeInfraV1() uvmv.executeMethod('prepFalloutHandler', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ScriptTask_preFalloutHandler" targetRef="CallActivity_falloutHandler"/> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ScriptTask_preFalloutHandler" targetRef="CallActivity_falloutHandler" /> <bpmn2:callActivity id="CallActivity_falloutHandler" name="Fallout Handler" calledElement="FalloutHandler"> <bpmn2:extensionElements> - <camunda:in source="UPDVfModVol_FalloutHandlerRequest" target="FalloutHandlerRequest"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> - <camunda:out source="FH_ResponseCode" target="UPDVfModVol_FH_ResponseCode"/> - <camunda:out source="FH_ErrorResponse" target="UPDVfModVol_FH_ErrorResponse"/> - <camunda:out source="FalloutHandlerResponse" target="UPDVfModVol_FalloutHandlerResponse"/> + <camunda:in source="UPDVfModVol_FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="FH_ResponseCode" target="UPDVfModVol_FH_ResponseCode" /> + <camunda:out source="FH_ErrorResponse" target="UPDVfModVol_FH_ErrorResponse" /> + <camunda:out source="FalloutHandlerResponse" target="UPDVfModVol_FalloutHandlerResponse" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="CallActivity_falloutHandler" targetRef="EndEvent_3"/> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="CallActivity_falloutHandler" targetRef="EndEvent_3" /> </bpmn2:subProcess> - <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ExclusiveGateway_2" targetRef="ScriptTask_prepVnfRest"/> - <bpmn2:exclusiveGateway id="ExclusiveGateway_personaModelIdMatch" name="Persona Model ID match?"> + <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ExclusiveGateway_2" targetRef="ScriptTask_prepVnfRest" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_personaModelIdMatch" name="Persona Model ID match?" default="SequenceFlow_personaModelidMatchNo"> <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_personaModelIdMatchYes</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_personaModelidMatchNo</bpmn2:outgoing> @@ -130,7 +131,7 @@ uvmv.executeMethod('prepFalloutHandler', execution, isDebugLogEnabled)]]></bpmn2 <bpmn2:sequenceFlow id="SequenceFlow_personaModelIdMatchYes" name="Yes" sourceRef="ExclusiveGateway_personaModelIdMatch" targetRef="ExclusiveGateway_2"> <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{UPDVfModVol_modelInvariantId == UPDVfModVol_personaModelId}</bpmn2:conditionExpression> </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_personaModelidMatchNo" name="No" sourceRef="ExclusiveGateway_personaModelIdMatch" targetRef="ScriptTask_handlePersonaModelIdMismatch"/> + <bpmn2:sequenceFlow id="SequenceFlow_personaModelidMatchNo" name="No" sourceRef="ExclusiveGateway_personaModelIdMatch" targetRef="ScriptTask_handlePersonaModelIdMismatch" /> <bpmn2:scriptTask id="ScriptTask_queryAaiForVfModule" name="Query AAI for VF Module" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_YesVfModuleRelation</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> @@ -138,7 +139,7 @@ uvmv.executeMethod('prepFalloutHandler', execution, isDebugLogEnabled)]]></bpmn2 def uvmv = new UpdateVfModuleVolumeInfraV1() uvmv.executeMethod('queryAAIForVfModule', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ScriptTask_queryAaiForVfModule" targetRef="ExclusiveGateway_personaModelIdMatch"/> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ScriptTask_queryAaiForVfModule" targetRef="ExclusiveGateway_personaModelIdMatch" /> <bpmn2:scriptTask id="ScriptTask_handlePersonaModelIdMismatch" name="Handle Persona Model ID Mismatch" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_personaModelidMatchNo</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> @@ -146,10 +147,10 @@ uvmv.executeMethod('queryAAIForVfModule', execution, isDebugLogEnabled)]]></bpmn def uvmv = new UpdateVfModuleVolumeInfraV1() uvmv.executeMethod('handlePersonaModelIdMismatch', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="ScriptTask_handlePersonaModelIdMismatch" targetRef="EndEvent_personaModelIdMismatch"/> + <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="ScriptTask_handlePersonaModelIdMismatch" targetRef="EndEvent_personaModelIdMismatch" /> <bpmn2:endEvent id="EndEvent_personaModelIdMismatch"> <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_1"/> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_1" /> </bpmn2:endEvent> <bpmn2:scriptTask id="ScriptTask_preProcessRequest" name="Pre-process Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> @@ -158,11 +159,11 @@ uvmv.executeMethod('handlePersonaModelIdMismatch', execution, isDebugLogEnabled) def uvmv = new UpdateVfModuleVolumeInfraV1() uvmv.executeMethod('preProcessRequest', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="ScriptTask_preProcessRequest" targetRef="ScriptTask_sendSynchResponse"/> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="ScriptTask_preProcessRequest" targetRef="ScriptTask_sendSynchResponse" /> <bpmn2:startEvent id="StartEvent_1" name="Start"> <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_preProcessRequest"/> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_preProcessRequest" /> <bpmn2:scriptTask id="ScriptTask_sendSynchResponse" name="Send Synch Response" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing> @@ -170,22 +171,22 @@ uvmv.executeMethod('preProcessRequest', execution, isDebugLogEnabled)]]></bpmn2: def uvmv = new UpdateVfModuleVolumeInfraV1() uvmv.executeMethod('sendSynchResponse', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_20" name="" sourceRef="ScriptTask_sendSynchResponse" targetRef="ScriptTask_queryAaiGenricVnf"/> + <bpmn2:sequenceFlow id="SequenceFlow_20" name="" sourceRef="ScriptTask_sendSynchResponse" targetRef="ScriptTask_queryAaiGenricVnf" /> <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="VF-MODULE relation?" default="SequenceFlow_noVfModuleRelation"> <bpmn2:incoming>SequenceFlow_tenantIsMatch</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_YesVfModuleRelation</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_noVfModuleRelation</bpmn2:outgoing> </bpmn2:exclusiveGateway> <bpmn2:sequenceFlow id="SequenceFlow_YesVfModuleRelation" name="Yes" sourceRef="ExclusiveGateway_1" targetRef="ScriptTask_queryAaiForVfModule"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{UPDVfModVol_relatedVfModuleLink != ''}</bpmn2:conditionExpression> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{UPDVfModVol_relatedVfModuleLink != ''}]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_noVfModuleRelation" name="No" sourceRef="ExclusiveGateway_1" targetRef="ExclusiveGateway_2"/> + <bpmn2:sequenceFlow id="SequenceFlow_noVfModuleRelation" name="No" sourceRef="ExclusiveGateway_1" targetRef="ExclusiveGateway_2" /> <bpmn2:exclusiveGateway id="ExclusiveGateway_isTenantMatch" name="TenantId Match?" default="SequenceFlow_NoTenantMatch"> <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_NoTenantMatch</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_tenantIsMatch</bpmn2:outgoing> </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_NoTenantMatch" name="No" sourceRef="ExclusiveGateway_isTenantMatch" targetRef="ScriptTask_tenantIdMismatch"/> + <bpmn2:sequenceFlow id="SequenceFlow_NoTenantMatch" name="No" sourceRef="ExclusiveGateway_isTenantMatch" targetRef="ScriptTask_tenantIdMismatch" /> <bpmn2:sequenceFlow id="SequenceFlow_tenantIsMatch" name="Yes" sourceRef="ExclusiveGateway_isTenantMatch" targetRef="ExclusiveGateway_1"> <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{UPDVfModVol_tenantId == UPDVfModVol_volumeGroupTenantId}</bpmn2:conditionExpression> </bpmn2:sequenceFlow> @@ -196,10 +197,10 @@ uvmv.executeMethod('sendSynchResponse', execution, isDebugLogEnabled)]]></bpmn2: def uvmv = new UpdateVfModuleVolumeInfraV1() uvmv.executeMethod('handleTenantIdMismatch', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_tenantIdMismatch" targetRef="EndEvent_2"/> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_tenantIdMismatch" targetRef="EndEvent_2" /> <bpmn2:endEvent id="EndEvent_2"> <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> - <bpmn2:errorEventDefinition id="_ErrorEventDefinition_76" errorRef="Error_1"/> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_76" errorRef="Error_1" /> </bpmn2:endEvent> <bpmn2:scriptTask id="ScriptTask_queryAAI" name="Query AAI for Volume Group Info" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> @@ -208,7 +209,7 @@ uvmv.executeMethod('handleTenantIdMismatch', execution, isDebugLogEnabled)]]></b def uvmv = new UpdateVfModuleVolumeInfraV1() uvmv.executeMethod('queryAAIForVolumeGroup', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="ScriptTask_queryAAI" targetRef="ExclusiveGateway_isTenantMatch"/> + <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="ScriptTask_queryAAI" targetRef="ExclusiveGateway_isTenantMatch" /> <bpmn2:scriptTask id="ScriptTask_queryAaiGenricVnf" name="Query AAI for Generic VNF" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> @@ -216,301 +217,301 @@ uvmv.executeMethod('queryAAIForVolumeGroup', execution, isDebugLogEnabled)]]></b def uvmv = new UpdateVfModuleVolumeInfraV1() uvmv.executeMethod('queryAAIForGenericVnf', execution, isDebugLogEnabled)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_queryAaiGenricVnf" targetRef="ScriptTask_queryAAI"/> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_queryAaiGenricVnf" targetRef="ScriptTask_queryAAI" /> </bpmn2:process> - <bpmn2:error id="Error_1" errorCode="MSOWorkflowException" name="MSOWorkflowException"/> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateVfModuleVolumeInfraV1"> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_62" bpmnElement="StartEvent_1"> - <dc:Bounds height="37.0" width="37.0" x="191.0" y="131.0"/> + <dc:Bounds x="191" y="131" width="37" height="37" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="34.0" x="192.0" y="173.0"/> + <dc:Bounds x="192" y="173" width="34" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_StartEvent_62" targetElement="_BPMNShape_ScriptTask_231"> - <di:waypoint xsi:type="dc:Point" x="227.0" y="149.0"/> - <di:waypoint xsi:type="dc:Point" x="268.0" y="149.0"/> - <di:waypoint xsi:type="dc:Point" x="268.0" y="150.0"/> - <di:waypoint xsi:type="dc:Point" x="295.0" y="150.0"/> + <di:waypoint xsi:type="dc:Point" x="227" y="149" /> + <di:waypoint xsi:type="dc:Point" x="268" y="149" /> + <di:waypoint xsi:type="dc:Point" x="268" y="150" /> + <di:waypoint xsi:type="dc:Point" x="295" y="150" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="248.0" y="149.0"/> + <dc:Bounds x="248" y="149" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_42" bpmnElement="CallActivity_callVNFAdapterRest"> - <dc:Bounds height="80.0" width="100.0" x="591.0" y="420.0"/> + <dc:Bounds x="591" y="420" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_230" bpmnElement="ScriptTask_postProcessTemp"> - <dc:Bounds height="80.0" width="109.0" x="1318.0" y="420.0"/> + <dc:Bounds x="1318" y="420" width="109" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_231" bpmnElement="ScriptTask_preProcessRequest"> - <dc:Bounds height="78.0" width="109.0" x="295.0" y="111.0"/> + <dc:Bounds x="295" y="111" width="109" height="78" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_232" bpmnElement="ScriptTask_sendSynchResponse"> - <dc:Bounds height="76.0" width="109.0" x="454.0" y="112.0"/> + <dc:Bounds x="454" y="112" width="109" height="76" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_231" targetElement="_BPMNShape_ScriptTask_232"> - <di:waypoint xsi:type="dc:Point" x="403.0" y="150.0"/> - <di:waypoint xsi:type="dc:Point" x="454.0" y="150.0"/> + <di:waypoint xsi:type="dc:Point" x="403" y="150" /> + <di:waypoint xsi:type="dc:Point" x="454" y="150" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="418.0" y="150.0"/> + <dc:Bounds x="418" y="150" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_233" bpmnElement="ScriptTask_prepDbInfraRequest"> - <dc:Bounds height="80.0" width="109.0" x="730.0" y="420.0"/> + <dc:Bounds x="730" y="420" width="109" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_101" bpmnElement="ServiceTask_callUpdateInfraDb"> - <dc:Bounds height="80.0" width="109.0" x="868.0" y="420.0"/> + <dc:Bounds x="868" y="420" width="109" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_233" targetElement="_BPMNShape_ServiceTask_101"> - <di:waypoint xsi:type="dc:Point" x="838.0" y="460.0"/> - <di:waypoint xsi:type="dc:Point" x="868.0" y="460.0"/> + <di:waypoint xsi:type="dc:Point" x="838" y="460" /> + <di:waypoint xsi:type="dc:Point" x="868" y="460" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="853.0" y="491.0"/> + <dc:Bounds x="853" y="491" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_ServiceTask_101" targetElement="_BPMNShape_ScriptTask_234"> - <di:waypoint xsi:type="dc:Point" x="976.0" y="460.0"/> - <di:waypoint xsi:type="dc:Point" x="1014.0" y="460.0"/> + <di:waypoint xsi:type="dc:Point" x="976" y="460" /> + <di:waypoint xsi:type="dc:Point" x="1014" y="460" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="959.0" y="497.0"/> + <dc:Bounds x="959" y="497" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_234" bpmnElement="ScriptTask_prepCompletionHandlerRequest"> - <dc:Bounds height="80.0" width="109.0" x="1014.0" y="420.0"/> + <dc:Bounds x="1014" y="420" width="109" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_43" bpmnElement="CallActivity_completionHandler"> - <dc:Bounds height="61.0" width="109.0" x="1162.0" y="429.0"/> + <dc:Bounds x="1162" y="429" width="109" height="61" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_234" targetElement="_BPMNShape_CallActivity_43"> - <di:waypoint xsi:type="dc:Point" x="1122.0" y="460.0"/> - <di:waypoint xsi:type="dc:Point" x="1162.0" y="459.0"/> + <di:waypoint xsi:type="dc:Point" x="1122" y="460" /> + <di:waypoint xsi:type="dc:Point" x="1162" y="459" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1134.0" y="477.0"/> + <dc:Bounds x="1134" y="477" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_43" targetElement="_BPMNShape_ScriptTask_230"> - <di:waypoint xsi:type="dc:Point" x="1270.0" y="459.0"/> - <di:waypoint xsi:type="dc:Point" x="1318.0" y="460.0"/> + <di:waypoint xsi:type="dc:Point" x="1270" y="459" /> + <di:waypoint xsi:type="dc:Point" x="1318" y="460" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1216.0" y="521.0"/> + <dc:Bounds x="1216" y="521" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_235" bpmnElement="ScriptTask_queryAAI"> - <dc:Bounds height="73.0" width="109.0" x="742.0" y="113.0"/> + <dc:Bounds x="742" y="113" width="109" height="73" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_126" bpmnElement="ExclusiveGateway_isTenantMatch" isMarkerVisible="true"> - <dc:Bounds height="34.0" width="34.0" x="931.0" y="132.0"/> + <dc:Bounds x="931" y="132" width="34" height="34" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="102.0" x="898.0" y="113.0"/> + <dc:Bounds x="898" y="113" width="102" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_236" bpmnElement="ScriptTask_tenantIdMismatch"> - <dc:Bounds height="75.0" width="97.0" x="1064.0" y="112.0"/> + <dc:Bounds x="1064" y="112" width="97" height="75" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_235" targetElement="_BPMNShape_ExclusiveGateway_126"> - <di:waypoint xsi:type="dc:Point" x="850.0" y="149.0"/> - <di:waypoint xsi:type="dc:Point" x="931.0" y="149.0"/> + <di:waypoint xsi:type="dc:Point" x="850" y="149" /> + <di:waypoint xsi:type="dc:Point" x="931" y="149" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="877.0" y="149.0"/> + <dc:Bounds x="877" y="149" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_NoTenantMatch" sourceElement="_BPMNShape_ExclusiveGateway_126" targetElement="_BPMNShape_ScriptTask_236"> - <di:waypoint xsi:type="dc:Point" x="965.0" y="149.0"/> - <di:waypoint xsi:type="dc:Point" x="1064.0" y="149.0"/> + <di:waypoint xsi:type="dc:Point" x="965" y="149" /> + <di:waypoint xsi:type="dc:Point" x="1064" y="149" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="22.0" x="986.0" y="149.0"/> + <dc:Bounds x="986" y="149" width="22" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_169" bpmnElement="EndEvent_2"> - <dc:Bounds height="49.0" width="49.0" x="1225.0" y="125.0"/> + <dc:Bounds x="1225" y="125" width="49" height="49" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="1249.0" y="179.0"/> + <dc:Bounds x="1249" y="179" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_236" targetElement="_BPMNShape_EndEvent_169"> - <di:waypoint xsi:type="dc:Point" x="1160.0" y="149.0"/> - <di:waypoint xsi:type="dc:Point" x="1225.0" y="149.0"/> + <di:waypoint xsi:type="dc:Point" x="1160" y="149" /> + <di:waypoint xsi:type="dc:Point" x="1225" y="149" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1179.0" y="149.0"/> + <dc:Bounds x="1179" y="149" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_tenantIsMatch" sourceElement="_BPMNShape_ExclusiveGateway_126" targetElement="_BPMNShape_ExclusiveGateway_254"> - <di:waypoint xsi:type="dc:Point" x="948.0" y="166.0"/> - <di:waypoint xsi:type="dc:Point" x="948.0" y="244.0"/> + <di:waypoint xsi:type="dc:Point" x="948" y="166" /> + <di:waypoint xsi:type="dc:Point" x="948" y="244" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="915.0" y="173.0"/> + <dc:Bounds x="915" y="173" width="29" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_42" targetElement="_BPMNShape_ScriptTask_233"> - <di:waypoint xsi:type="dc:Point" x="691.0" y="460.0"/> - <di:waypoint xsi:type="dc:Point" x="730.0" y="460.0"/> + <di:waypoint xsi:type="dc:Point" x="691" y="460" /> + <di:waypoint xsi:type="dc:Point" x="730" y="460" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="712.0" y="531.0"/> + <dc:Bounds x="712" y="531" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ScriptTask_232" targetElement="_BPMNShape_ScriptTask_318"> - <di:waypoint xsi:type="dc:Point" x="562.0" y="150.0"/> - <di:waypoint xsi:type="dc:Point" x="581.0" y="150.0"/> - <di:waypoint xsi:type="dc:Point" x="581.0" y="149.0"/> - <di:waypoint xsi:type="dc:Point" x="612.0" y="149.0"/> + <di:waypoint xsi:type="dc:Point" x="562" y="150" /> + <di:waypoint xsi:type="dc:Point" x="581" y="150" /> + <di:waypoint xsi:type="dc:Point" x="581" y="149" /> + <di:waypoint xsi:type="dc:Point" x="612" y="149" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="578.0" y="150.0"/> + <dc:Bounds x="578" y="150" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_237" bpmnElement="ScriptTask_prepVnfRest"> - <dc:Bounds height="80.0" width="109.0" x="454.0" y="420.0"/> + <dc:Bounds x="454" y="420" width="109" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ScriptTask_237" targetElement="_BPMNShape_CallActivity_42"> - <di:waypoint xsi:type="dc:Point" x="562.0" y="460.0"/> - <di:waypoint xsi:type="dc:Point" x="591.0" y="460.0"/> + <di:waypoint xsi:type="dc:Point" x="562" y="460" /> + <di:waypoint xsi:type="dc:Point" x="591" y="460" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="446.0" y="460.0"/> + <dc:Bounds x="446" y="460" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_SubProcess_18" bpmnElement="SubProcess_errorHandler" isExpanded="true"> - <dc:Bounds height="187.0" width="781.0" x="250.0" y="786.0"/> + <dc:Bounds x="250" y="786" width="781" height="187" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_63" bpmnElement="StartEvent_catchAllErrors"> - <dc:Bounds height="37.0" width="37.0" x="301.0" y="844.0"/> + <dc:Bounds x="301" y="844" width="37" height="37" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="98.0" x="270.0" y="886.0"/> + <dc:Bounds x="270" y="886" width="98" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_238" bpmnElement="ScriptTask_preFalloutHandler"> - <dc:Bounds height="61.0" width="109.0" x="445.0" y="832.0"/> + <dc:Bounds x="445" y="832" width="109" height="61" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_44" bpmnElement="CallActivity_falloutHandler"> - <dc:Bounds height="61.0" width="109.0" x="639.0" y="832.0"/> + <dc:Bounds x="639" y="832" width="109" height="61" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_238" targetElement="_BPMNShape_CallActivity_44"> - <di:waypoint xsi:type="dc:Point" x="553.0" y="862.0"/> - <di:waypoint xsi:type="dc:Point" x="639.0" y="862.0"/> + <di:waypoint xsi:type="dc:Point" x="553" y="862" /> + <di:waypoint xsi:type="dc:Point" x="639" y="862" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="573.0" y="946.0"/> + <dc:Bounds x="573" y="946" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_170" bpmnElement="EndEvent_3"> - <dc:Bounds height="37.0" width="37.0" x="862.0" y="844.0"/> + <dc:Bounds x="862" y="844" width="37" height="37" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="880.0" y="886.0"/> + <dc:Bounds x="880" y="886" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_CallActivity_44" targetElement="_BPMNShape_EndEvent_170"> - <di:waypoint xsi:type="dc:Point" x="747.0" y="862.0"/> - <di:waypoint xsi:type="dc:Point" x="862.0" y="862.0"/> + <di:waypoint xsi:type="dc:Point" x="747" y="862" /> + <di:waypoint xsi:type="dc:Point" x="862" y="862" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="765.0" y="1030.0"/> + <dc:Bounds x="765" y="1030" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_171" bpmnElement="EndEvent_4"> - <dc:Bounds height="43.0" width="43.0" x="1461.0" y="438.0"/> + <dc:Bounds x="1461" y="438" width="43" height="43" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="50.0" x="1457.0" y="486.0"/> + <dc:Bounds x="1457" y="486" width="50" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_ScriptTask_230" targetElement="_BPMNShape_EndEvent_171"> - <di:waypoint xsi:type="dc:Point" x="1426.0" y="460.0"/> - <di:waypoint xsi:type="dc:Point" x="1461.0" y="459.0"/> + <di:waypoint xsi:type="dc:Point" x="1426" y="460" /> + <di:waypoint xsi:type="dc:Point" x="1461" y="459" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1442.0" y="467.0"/> + <dc:Bounds x="1442" y="467" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_StartEvent_63" targetElement="_BPMNShape_ScriptTask_238"> - <di:waypoint xsi:type="dc:Point" x="337.0" y="862.0"/> - <di:waypoint xsi:type="dc:Point" x="445.0" y="862.0"/> + <di:waypoint xsi:type="dc:Point" x="337" y="862" /> + <di:waypoint xsi:type="dc:Point" x="445" y="862" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="385.0" y="1030.0"/> + <dc:Bounds x="385" y="1030" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_254" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true"> - <dc:Bounds height="34.0" width="34.0" x="931.0" y="244.0"/> + <dc:Bounds x="931" y="244" width="34" height="34" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="135.0" x="881.0" y="283.0"/> + <dc:Bounds x="881" y="283" width="135" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_YesVfModuleRelation" sourceElement="_BPMNShape_ExclusiveGateway_254" targetElement="_BPMNShape_ScriptTask_313"> - <di:waypoint xsi:type="dc:Point" x="931.0" y="261.0"/> - <di:waypoint xsi:type="dc:Point" x="634.0" y="261.0"/> - <di:waypoint xsi:type="dc:Point" x="634.0" y="262.0"/> - <di:waypoint xsi:type="dc:Point" x="405.0" y="262.0"/> + <di:waypoint xsi:type="dc:Point" x="931" y="261" /> + <di:waypoint xsi:type="dc:Point" x="634" y="261" /> + <di:waypoint xsi:type="dc:Point" x="634" y="262" /> + <di:waypoint xsi:type="dc:Point" x="405" y="262" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="729.0" y="261.0"/> + <dc:Bounds x="729" y="261" width="29" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_313" bpmnElement="ScriptTask_queryAaiForVfModule"> - <dc:Bounds height="80.0" width="109.0" x="297.0" y="222.0"/> + <dc:Bounds x="297" y="222" width="109" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_255" bpmnElement="ExclusiveGateway_personaModelIdMatch" isMarkerVisible="true"> - <dc:Bounds height="34.0" width="34.0" x="333.0" y="346.0"/> + <dc:Bounds x="333" y="346" width="34" height="34" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="156.0" x="272.0" y="385.0"/> + <dc:Bounds x="272" y="385" width="156" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ScriptTask_313" targetElement="_BPMNShape_ExclusiveGateway_255"> - <di:waypoint xsi:type="dc:Point" x="350.0" y="302.0"/> - <di:waypoint xsi:type="dc:Point" x="350.0" y="329.0"/> - <di:waypoint xsi:type="dc:Point" x="350.0" y="346.0"/> + <di:waypoint xsi:type="dc:Point" x="350" y="302" /> + <di:waypoint xsi:type="dc:Point" x="350" y="329" /> + <di:waypoint xsi:type="dc:Point" x="350" y="346" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="347.0" y="318.0"/> + <dc:Bounds x="347" y="318" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_personaModelIdMatchYes" sourceElement="_BPMNShape_ExclusiveGateway_255" targetElement="_BPMNShape_ExclusiveGateway_256"> - <di:waypoint xsi:type="dc:Point" x="367.0" y="363.0"/> - <di:waypoint xsi:type="dc:Point" x="491.0" y="363.0"/> + <di:waypoint xsi:type="dc:Point" x="367" y="363" /> + <di:waypoint xsi:type="dc:Point" x="491" y="363" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="398.0" y="363.0"/> + <dc:Bounds x="398" y="363" width="29" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_256" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true"> - <dc:Bounds height="34.0" width="34.0" x="491.0" y="346.0"/> + <dc:Bounds x="491" y="346" width="34" height="34" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="508.0" y="385.0"/> + <dc:Bounds x="508" y="385" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_noVfModuleRelation" sourceElement="_BPMNShape_ExclusiveGateway_254" targetElement="_BPMNShape_ExclusiveGateway_256"> - <di:waypoint xsi:type="dc:Point" x="948.0" y="278.0"/> - <di:waypoint xsi:type="dc:Point" x="948.0" y="363.0"/> - <di:waypoint xsi:type="dc:Point" x="701.0" y="363.0"/> - <di:waypoint xsi:type="dc:Point" x="525.0" y="363.0"/> + <di:waypoint xsi:type="dc:Point" x="948" y="278" /> + <di:waypoint xsi:type="dc:Point" x="948" y="363" /> + <di:waypoint xsi:type="dc:Point" x="701" y="363" /> + <di:waypoint xsi:type="dc:Point" x="525" y="363" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="22.0" x="795.0" y="363.0"/> + <dc:Bounds x="795" y="363" width="22" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_personaModelidMatchNo" sourceElement="_BPMNShape_ExclusiveGateway_255" targetElement="_BPMNShape_ScriptTask_315"> - <di:waypoint xsi:type="dc:Point" x="350.0" y="380.0"/> - <di:waypoint xsi:type="dc:Point" x="350.0" y="401.0"/> - <di:waypoint xsi:type="dc:Point" x="351.0" y="460.0"/> + <di:waypoint xsi:type="dc:Point" x="350" y="380" /> + <di:waypoint xsi:type="dc:Point" x="350" y="401" /> + <di:waypoint xsi:type="dc:Point" x="351" y="460" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="22.0" x="350.0" y="409.0"/> + <dc:Bounds x="350" y="409" width="22" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_315" bpmnElement="ScriptTask_handlePersonaModelIdMismatch"> - <dc:Bounds height="80.0" width="109.0" x="297.0" y="460.0"/> + <dc:Bounds x="297" y="460" width="109" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_172" bpmnElement="EndEvent_personaModelIdMismatch"> - <dc:Bounds height="43.0" width="43.0" x="330.0" y="600.0"/> + <dc:Bounds x="330" y="600" width="43" height="43" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="351.0" y="648.0"/> + <dc:Bounds x="351" y="648" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_ScriptTask_315" targetElement="_BPMNShape_EndEvent_172"> - <di:waypoint xsi:type="dc:Point" x="351.0" y="540.0"/> - <di:waypoint xsi:type="dc:Point" x="351.0" y="600.0"/> + <di:waypoint xsi:type="dc:Point" x="351" y="540" /> + <di:waypoint xsi:type="dc:Point" x="351" y="600" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="348.0" y="560.0"/> + <dc:Bounds x="348" y="560" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ExclusiveGateway_256" targetElement="_BPMNShape_ScriptTask_237"> - <di:waypoint xsi:type="dc:Point" x="508.0" y="380.0"/> - <di:waypoint xsi:type="dc:Point" x="508.0" y="420.0"/> + <di:waypoint xsi:type="dc:Point" x="508" y="380" /> + <di:waypoint xsi:type="dc:Point" x="508" y="420" /> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_318" bpmnElement="ScriptTask_queryAaiGenricVnf"> - <dc:Bounds height="75.0" width="97.0" x="612.0" y="112.0"/> + <dc:Bounds x="612" y="112" width="97" height="75" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_318" targetElement="_BPMNShape_ScriptTask_235"> - <di:waypoint xsi:type="dc:Point" x="708.0" y="149.0"/> - <di:waypoint xsi:type="dc:Point" x="742.0" y="149.0"/> + <di:waypoint xsi:type="dc:Point" x="708" y="149" /> + <di:waypoint xsi:type="dc:Point" x="742" y="149" /> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> -</bpmn2:definitions>
\ No newline at end of file +</bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVnfInfra.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVnfInfra.bpmn new file mode 100644 index 0000000000..2631da1987 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVnfInfra.bpmn @@ -0,0 +1,1123 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_F0omAMXGEeW834CKd-K10Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="UpdateVnfInfra" name="UpdateVnfInfra" isExecutable="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Send Synch Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0y0jt4l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.sendSynchResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="Task_1rxiqe1" targetRef="ExclusiveGateway_045e1uz" /> + <bpmn2:scriptTask id="PreProcessRequest" name="Pre-Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="PreProcessRequest" targetRef="ScriptTask_1" /> + <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="UPDVnfI_CompletionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_4" /> + <bpmn2:endEvent id="EndEvent_1" name="TheEnd"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_5" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_4" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test +execution.setVariable("UpdateVfModuleInfraSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_4" targetRef="EndEvent_1" /> + <bpmn2:scriptTask id="ScriptTask_10" name="Completion Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.completionHandlerPrep(execution, 'UPDVnfI_CompletionHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1" /> + <bpmn2:subProcess id="SubProcess_1" name="Error Handler" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_3" name="Catch All Errors"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="ScriptTask_3" /> + <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfra() +uvfm.falloutHandlerPrep(execution, 'UPDVnfI_FalloutHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ScriptTask_3" targetRef="CallActivity_2" /> + <bpmn2:callActivity id="CallActivity_2" name="Fallout Handler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="UPDVnfI_FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_2" targetRef="EndEvent_2" /> + </bpmn2:subProcess> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2" /> + </bpmn2:endEvent> + <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_3" /> + <bpmn2:startEvent id="StartEvent_1" name="Start"> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="StartEvent_1" targetRef="PreProcessRequest" /> + <bpmn2:callActivity id="ScriptTask_6" name="DoUpdateVnfAndModules" calledElement="DoUpdateVnfAndModules"> + <bpmn2:extensionElements> + <camunda:in source="UPDVnfI_requestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:in source="UPDVnfI_vnfType" target="vnfType" /> + <camunda:in source="UPDVnfI_vnfName" target="vnfName" /> + <camunda:in source="UPDVnfI_vnfId" target="vnfId" /> + <camunda:in source="UPDVnfI_asdcServiceModelVersion" target="asdcServiceModelVersion" /> + <camunda:in source="UPDVnfI_serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="UPDVnfI_serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="UPDVnfI_vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="UPDVnfI_globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="UPDVnfI_lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="UPDVnfI_tenantId" target="tenantId" /> + <camunda:in source="UPDVnfI_sdncVersion" target="sdncVersion" /> + <camunda:in source="UPDVnfI_usePreload" target="usePreload" /> + <camunda:in source="UPDVnfI_vnfResourceDecomposition" target="vnfResourceDecomposition" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_19ba94v</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0gzzeru</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="no" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="ScriptTask_10" /> + <bpmn2:sequenceFlow id="SequenceFlow_1w35ov3" sourceRef="Task_1gg76h7" targetRef="Task_1opcb4j" /> + <bpmn2:callActivity id="Task_1gg76h7" name="Decompose Service" calledElement="DecomposeService"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="UPDVnfI_serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="serviceDecomposition" target="serviceDecomposition" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0y0jt4l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1w35ov3</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_053qjfy" sourceRef="Task_1opcb4j" targetRef="Task_0vy2zge" /> + <bpmn2:scriptTask id="Task_1opcb4j" name="Get VnfResourceDecomposition" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1w35ov3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_053qjfy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.getVnfResourceDecomposition(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0y0jt4l" sourceRef="ScriptTask_1" targetRef="Task_1gg76h7" /> + <bpmn2:scriptTask id="Task_1rxiqe1" name="Check If VNF Is In Maintenance in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16mo99z</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0fxuur5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.checkIfVnfInMaintInAAI(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0usxnlk" sourceRef="Task_0vy2zge" targetRef="ExclusiveGateway_0q323wc" /> + <bpmn2:sequenceFlow id="SequenceFlow_1bkhs8m" name="no" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="Task_1dtbnuy" /> + <bpmn2:sequenceFlow id="SequenceFlow_0gzzeru" sourceRef="ScriptTask_6" targetRef="ExclusiveGateway_0ulrq9g" /> + <bpmn2:scriptTask id="Task_0ap39ka" name="Set VNF inMaintenance Flag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0baosqi</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1wax44p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0k3fx7p</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.setVnfInMaintFlagInAAI(execution, true) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1drglpt" name="Unset VNF In Maintenance Flag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_19lg15d</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1lsfn19</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12mfil6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.setVnfInMaintFlagInAAI(execution, false) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_0vy2zge" name="Check If Physical Servers Are Locked in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_053qjfy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0usxnlk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.checkIfPserversInMaintInAAI(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0xx8y1s" sourceRef="Task_1dtbnuy" targetRef="ExclusiveGateway_1slvyx2" /> + <bpmn2:sequenceFlow id="SequenceFlow_0a6pdza" sourceRef="Task_1fj63ov" targetRef="ExclusiveGateway_1ichg7h" /> + <bpmn2:sequenceFlow id="SequenceFlow_13h26h9" sourceRef="Task_1cfkcss" targetRef="ExclusiveGateway_1etgtgi" /> + <bpmn2:scriptTask id="Task_1dtbnuy" name="Call APP-C VNF Lock" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1bkhs8m</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1nlqlwn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xx8y1s</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action +import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.runAppcCommand(execution, Action.Lock) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1fj63ov" name="Call APP-C Health Check" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0qy68ib</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1sla5dr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0a6pdza</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action +import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.runAppcCommand(execution, Action.HealthCheck)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1cfkcss" name="Call APP-C VNF Graceful Stop" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0q0qan8</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0iektwg</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13h26h9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action +import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.runAppcCommand(execution, Action.Stop)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1uno5rs" sourceRef="Task_1hdg951" targetRef="ExclusiveGateway_02tj4dw" /> + <bpmn2:sequenceFlow id="SequenceFlow_1c79909" sourceRef="Task_1ca5ctq" targetRef="ExclusiveGateway_1gn5lab" /> + <bpmn2:scriptTask id="Task_1hdg951" name="Call APP-C VNF Start" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_04zwhw4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1uno5rs</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action +import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.runAppcCommand(execution, Action.Start)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1ca5ctq" name="Call APP-C Health Check" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_162mm0m</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1hx1ur7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c79909</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action +import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.runAppcCommand(execution, Action.HealthCheck)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1xfbwpi" sourceRef="Task_1sove95" targetRef="ExclusiveGateway_06mv93h" /> + <bpmn2:scriptTask id="Task_1sove95" name="Call APP-C VNF Unlock" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_197t3qk</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0ukzynj</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1xfbwpi</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action +import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.runAppcCommand(execution, Action.Unlock)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0q323wc" name="Error on PServers Check?" default="SequenceFlow_16mo99z"> + <bpmn2:incoming>SequenceFlow_0usxnlk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16mo99z</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1qmz2ez</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_16mo99z" name="no" sourceRef="ExclusiveGateway_0q323wc" targetRef="Task_1rxiqe1" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_045e1uz" name="Error On inMaintenance Check?" default="SequenceFlow_0baosqi"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0baosqi</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_03rkfbo</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0baosqi" name="no" sourceRef="ExclusiveGateway_045e1uz" targetRef="Task_0ap39ka" /> + <bpmn2:callActivity id="Task_0q5cdit" name="Rainy Day Handler" calledElement="RainyDayHandler"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="UPDVnfI_serviceType" target="serviceType" /> + <camunda:in source="UPDVnfI_nfRole" target="vnfType" /> + <camunda:in source="UPDVnfI_currentActivity" target="currentActivity" /> + <camunda:in source="UPDVnfI_workStep" target="workStep" /> + <camunda:in source="UPDVnfI_failedActivity" target="failedActivity" /> + <camunda:in source="UPDVnfI_errorCode" target="errorCode" /> + <camunda:in source="UPDVnfI_errorText" target="errorText" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="handlingCode" target="UPDVnfI_disposition" /> + <camunda:in source="UPDVnfI_requestorId" target="requestorId" /> + <camunda:out source="taskId" target="UPDVnfI_taskId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1qmz2ez</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_03rkfbo</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1lsm3bn</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0bduwog</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0uwar5b</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0i7hfj2</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_10ek8l4</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_13yjc85</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0waedj5</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1hg9c2l</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0gej71y</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0v0u7mf</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1qmz2ez" name="yes" sourceRef="ExclusiveGateway_0q323wc" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_03rkfbo" name="yes" sourceRef="ExclusiveGateway_045e1uz" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0v0u7mf" sourceRef="Task_0q5cdit" targetRef="ExclusiveGateway_0xlxgl0" /> + <bpmn2:task id="Task_0zbogrm" name="Rollback Processing"> + <bpmn2:incoming>SequenceFlow_1qr8msw</bpmn2:incoming> + </bpmn2:task> + <bpmn2:sequenceFlow id="SequenceFlow_0vpd06n" name="Abort" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_1tg549h"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_disposition") == "Abort"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1qr8msw" name="Rollback" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_0zbogrm"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_disposition") == "Rollback"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ud5uwa" name="Eror on inMaintenance Set?" default="SequenceFlow_1bkhs8m"> + <bpmn2:incoming>SequenceFlow_0k3fx7p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1bkhs8m</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1lsm3bn</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0k3fx7p" sourceRef="Task_0ap39ka" targetRef="ExclusiveGateway_0ud5uwa" /> + <bpmn2:sequenceFlow id="SequenceFlow_1lsm3bn" name="yes" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1slvyx2" name="Error on VNF Lock?" default="SequenceFlow_0qy68ib"> + <bpmn2:incoming>SequenceFlow_0xx8y1s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0qy68ib</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0bduwog</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0qy68ib" name="no" sourceRef="ExclusiveGateway_1slvyx2" targetRef="Task_1fj63ov" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1ichg7h" name="Error on Pre Health Check?" default="SequenceFlow_0q0qan8"> + <bpmn2:incoming>SequenceFlow_0a6pdza</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0q0qan8</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0uwar5b</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0q0qan8" name="no" sourceRef="ExclusiveGateway_1ichg7h" targetRef="Task_1cfkcss" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1etgtgi" name="Error on VNF Stop?" default="SequenceFlow_1c0vdki"> + <bpmn2:incoming>SequenceFlow_13h26h9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c0vdki</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0i7hfj2</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1c0vdki" name="no" sourceRef="ExclusiveGateway_1etgtgi" targetRef="Task_0eae8go" /> + <bpmn2:sequenceFlow id="SequenceFlow_0bduwog" name="yes" sourceRef="ExclusiveGateway_1slvyx2" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0uwar5b" name="yes" sourceRef="ExclusiveGateway_1ichg7h" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0i7hfj2" name="yes" sourceRef="ExclusiveGateway_1etgtgi" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ulrq9g" name="Error on DoUpdateVnfAndNModules?" default="SequenceFlow_04zwhw4"> + <bpmn2:incoming>SequenceFlow_0gzzeru</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04zwhw4</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_10ek8l4</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_04zwhw4" name="no" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="Task_1hdg951" /> + <bpmn2:sequenceFlow id="SequenceFlow_10ek8l4" name="yes" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_02tj4dw" name="Error on VNF Start?" default="SequenceFlow_162mm0m"> + <bpmn2:incoming>SequenceFlow_1uno5rs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_162mm0m</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0waedj5</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_162mm0m" name="no" sourceRef="ExclusiveGateway_02tj4dw" targetRef="Task_1ca5ctq" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1gn5lab" name="Error on Post Health Check?" default="SequenceFlow_197t3qk"> + <bpmn2:incoming>SequenceFlow_1c79909</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_197t3qk</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1hg9c2l</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_197t3qk" name="no" sourceRef="ExclusiveGateway_1gn5lab" targetRef="Task_1sove95" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_06mv93h" name="Error on VNF Unlock?" default="SequenceFlow_19lg15d"> + <bpmn2:incoming>SequenceFlow_1xfbwpi</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19lg15d</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0gej71y</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_19lg15d" name="no" sourceRef="ExclusiveGateway_06mv93h" targetRef="Task_1drglpt" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0l2z6wc" name="Erorr on inMaintenance Unset?" default="SequenceFlow_3"> + <bpmn2:incoming>SequenceFlow_12mfil6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13yjc85</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_12mfil6" sourceRef="Task_1drglpt" targetRef="ExclusiveGateway_0l2z6wc" /> + <bpmn2:sequenceFlow id="SequenceFlow_13yjc85" name="yes" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0waedj5" name="yes" sourceRef="ExclusiveGateway_02tj4dw" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1hg9c2l" name="yes" sourceRef="ExclusiveGateway_1gn5lab" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0gej71y" name="yes" sourceRef="ExclusiveGateway_06mv93h" targetRef="Task_0q5cdit"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="Task_1tg549h" name="Abort Processing" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0vpd06n</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1c022sy</bpmn2:incoming> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.abortProcessing(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0xlxgl0" name="Check Disposition"> + <bpmn2:incoming>SequenceFlow_0v0u7mf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0vpd06n</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1qr8msw</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_05gpym3</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0y82zzx" name="Which step to skip?" default="SequenceFlow_1c022sy"> + <bpmn2:incoming>SequenceFlow_05gpym3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1sla5dr</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0iektwg</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1ttepat</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1hx1ur7</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0ukzynj</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1lsfn19</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0fxuur5</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1wax44p</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1nlqlwn</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1c022sy</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_05gpym3" name="Skip" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="ExclusiveGateway_0y82zzx"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_disposition") == "Skip"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1sla5dr" name="Skip APP-C VNF Lock" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1fj63ov"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "LockVNF"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0iektwg" name="Skip APP-C VNF Pre Health Check" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1cfkcss"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "HealthCheckVNF1"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1ttepat" name="Skip APP-C VNF Stop" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_0eae8go"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "StopVNF"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1hx1ur7" name="Skip APP-C VNF Start" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1ca5ctq"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "StartVNF"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0ukzynj" name="Skip APP-C Post Health Check" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1sove95"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "HealthCheckVNF2"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1lsfn19" name="Skip APP-C VNF Unlock" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1drglpt"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "UnlockVNF"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_19ba94v" sourceRef="Task_0eae8go" targetRef="ScriptTask_6" /> + <bpmn2:scriptTask id="Task_0eae8go" name="Prepare DoUpdateVnfAndModules" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1c0vdki</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1ttepat</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19ba94v</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.prepDoUpdateVnfAndModules(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0fxuur5" name="Skip Check if PServers Locked in AAI" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1rxiqe1"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "checkIfPserversInMaintInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1wax44p" name="Skip If VNF Is in Maint in AAI" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_0ap39ka"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "checkIfVnfInMaintInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1nlqlwn" name="Skip Set VNF In Maint in AAI" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1dtbnuy"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "setVnfInMaintFlagInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1c022sy" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1tg549h" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateVnfInfra"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1"> + <dc:Bounds x="97" y="72" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="103" y="113" width="23" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1"> + <dc:Bounds x="595" y="975" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="594" y="1016" width="38" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124"> + <di:waypoint xsi:type="dc:Point" x="133" y="90" /> + <di:waypoint xsi:type="dc:Point" x="209" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="171" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="PreProcessRequest"> + <dc:Bounds x="209" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_ScriptTask_125"> + <di:waypoint xsi:type="dc:Point" x="309" y="90" /> + <di:waypoint xsi:type="dc:Point" x="373" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="341" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_125" bpmnElement="ScriptTask_1"> + <dc:Bounds x="373" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_125"> + <di:waypoint xsi:type="dc:Point" x="525" y="237" /> + <di:waypoint xsi:type="dc:Point" x="601" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="563" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4"> + <dc:Bounds x="439" y="953" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_EndEvent_125"> + <di:waypoint xsi:type="dc:Point" x="539" y="993" /> + <di:waypoint xsi:type="dc:Point" x="595" y="993" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="716" y="834" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10"> + <dc:Bounds x="139" y="953" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1"> + <dc:Bounds x="289" y="953" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_CallActivity_27"> + <di:waypoint xsi:type="dc:Point" x="239" y="993" /> + <di:waypoint xsi:type="dc:Point" x="289" y="993" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="264" y="999" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true"> + <dc:Bounds x="85" y="1189" width="565" height="241" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3"> + <dc:Bounds x="149" y="1283" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="128" y="1324" width="77" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3"> + <dc:Bounds x="229" y="1261" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_52" targetElement="_BPMNShape_ScriptTask_136"> + <di:waypoint xsi:type="dc:Point" x="185" y="1301" /> + <di:waypoint xsi:type="dc:Point" x="229" y="1301" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="232" y="1601" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_136" targetElement="_BPMNShape_CallActivity_28"> + <di:waypoint xsi:type="dc:Point" x="329" y="1301" /> + <di:waypoint xsi:type="dc:Point" x="397" y="1301" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="345" y="1301" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2"> + <dc:Bounds x="553" y="1283" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="571" y="1324" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1"> + <dc:Bounds x="632" y="1283" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="650" y="1324" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3"> + <dc:Bounds x="726" y="1283" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="744" y="1324" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_BoundaryEvent_43" targetElement="_BPMNShape_EndEvent_127"> + <di:waypoint xsi:type="dc:Point" x="668" y="1301" /> + <di:waypoint xsi:type="dc:Point" x="726" y="1301" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="697" y="1286" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2"> + <dc:Bounds x="397" y="1261" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_27" targetElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="389" y="993" /> + <di:waypoint xsi:type="dc:Point" x="439" y="993" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="432" y="961" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_28" targetElement="_BPMNShape_EndEvent_126"> + <di:waypoint xsi:type="dc:Point" x="497" y="1301" /> + <di:waypoint xsi:type="dc:Point" x="553" y="1301" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="390" y="1361" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_181" bpmnElement="ScriptTask_6"> + <dc:Bounds x="454" y="559" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_181" targetElement="_BPMNShape_ScriptTask_133"> + <di:waypoint xsi:type="dc:Point" x="1130" y="835" /> + <di:waypoint xsi:type="dc:Point" x="1130" y="900" /> + <di:waypoint xsi:type="dc:Point" x="99" y="900" /> + <di:waypoint xsi:type="dc:Point" x="99" y="993" /> + <di:waypoint xsi:type="dc:Point" x="139" y="993" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1109" y="862" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1w35ov3_di" bpmnElement="SequenceFlow_1w35ov3"> + <di:waypoint xsi:type="dc:Point" x="655" y="90" /> + <di:waypoint xsi:type="dc:Point" x="718" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="687" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0qfx7sz_di" bpmnElement="Task_1gg76h7"> + <dc:Bounds x="555" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_053qjfy_di" bpmnElement="SequenceFlow_053qjfy"> + <di:waypoint xsi:type="dc:Point" x="818" y="90" /> + <di:waypoint xsi:type="dc:Point" x="982" y="90" /> + <di:waypoint xsi:type="dc:Point" x="982" y="156" /> + <di:waypoint xsi:type="dc:Point" x="103" y="156" /> + <di:waypoint xsi:type="dc:Point" x="103" y="237" /> + <di:waypoint xsi:type="dc:Point" x="131" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="543" y="141" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_08xzuox_di" bpmnElement="Task_1opcb4j"> + <dc:Bounds x="718" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0y0jt4l_di" bpmnElement="SequenceFlow_0y0jt4l"> + <di:waypoint xsi:type="dc:Point" x="473" y="90" /> + <di:waypoint xsi:type="dc:Point" x="555" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="514" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_19pf9z8_di" bpmnElement="Task_1rxiqe1"> + <dc:Bounds x="425" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0usxnlk_di" bpmnElement="SequenceFlow_0usxnlk"> + <di:waypoint xsi:type="dc:Point" x="231" y="237" /> + <di:waypoint xsi:type="dc:Point" x="292" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="262" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1bkhs8m_di" bpmnElement="SequenceFlow_1bkhs8m"> + <di:waypoint xsi:type="dc:Point" x="896" y="264" /> + <di:waypoint xsi:type="dc:Point" x="896" y="339" /> + <di:waypoint xsi:type="dc:Point" x="98" y="339" /> + <di:waypoint xsi:type="dc:Point" x="98" y="427" /> + <di:waypoint xsi:type="dc:Point" x="139" y="427" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="905" y="313.95238095238096" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0gzzeru_di" bpmnElement="SequenceFlow_0gzzeru"> + <di:waypoint xsi:type="dc:Point" x="554" y="599" /> + <di:waypoint xsi:type="dc:Point" x="617" y="599" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="586" y="584" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0wa4zya_di" bpmnElement="Task_0ap39ka"> + <dc:Bounds x="714" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0sgm9bu_di" bpmnElement="Task_1drglpt"> + <dc:Bounds x="960" y="770" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_16jtt5t_di" bpmnElement="Task_0vy2zge"> + <dc:Bounds x="131" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xx8y1s_di" bpmnElement="SequenceFlow_0xx8y1s"> + <di:waypoint xsi:type="dc:Point" x="239" y="427" /> + <di:waypoint xsi:type="dc:Point" x="292" y="427" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="266" y="412" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0a6pdza_di" bpmnElement="SequenceFlow_0a6pdza"> + <di:waypoint xsi:type="dc:Point" x="525" y="427" /> + <di:waypoint xsi:type="dc:Point" x="601" y="427" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="563" y="412" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_13h26h9_di" bpmnElement="SequenceFlow_13h26h9"> + <di:waypoint xsi:type="dc:Point" x="814" y="427" /> + <di:waypoint xsi:type="dc:Point" x="871" y="427" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="843" y="412" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_02wc9i0_di" bpmnElement="Task_1dtbnuy"> + <dc:Bounds x="139" y="387" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0mz2hdm_di" bpmnElement="Task_1fj63ov"> + <dc:Bounds x="425" y="387" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1wagy2o_di" bpmnElement="Task_1cfkcss"> + <dc:Bounds x="714" y="387" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1uno5rs_di" bpmnElement="SequenceFlow_1uno5rs"> + <di:waypoint xsi:type="dc:Point" x="239" y="810" /> + <di:waypoint xsi:type="dc:Point" x="292" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="266" y="795" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1c79909_di" bpmnElement="SequenceFlow_1c79909"> + <di:waypoint xsi:type="dc:Point" x="525" y="810" /> + <di:waypoint xsi:type="dc:Point" x="601" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="563" y="795" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_13zephm_di" bpmnElement="Task_1hdg951"> + <dc:Bounds x="139" y="770" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_11xqphb_di" bpmnElement="Task_1ca5ctq"> + <dc:Bounds x="425" y="770" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1xfbwpi_di" bpmnElement="SequenceFlow_1xfbwpi"> + <di:waypoint xsi:type="dc:Point" x="814" y="810" /> + <di:waypoint xsi:type="dc:Point" x="871" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="843" y="795" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0a4ovfa_di" bpmnElement="Task_1sove95"> + <dc:Bounds x="714" y="770" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0q323wc_di" bpmnElement="ExclusiveGateway_0q323wc" isMarkerVisible="true"> + <dc:Bounds x="291.803" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="274" y="262" width="86" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16mo99z_di" bpmnElement="SequenceFlow_16mo99z"> + <di:waypoint xsi:type="dc:Point" x="342" y="237" /> + <di:waypoint xsi:type="dc:Point" x="425" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="373" y="213" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_045e1uz_di" bpmnElement="ExclusiveGateway_045e1uz" isMarkerVisible="true"> + <dc:Bounds x="601" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="589" y="262" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0baosqi_di" bpmnElement="SequenceFlow_0baosqi"> + <di:waypoint xsi:type="dc:Point" x="651" y="237" /> + <di:waypoint xsi:type="dc:Point" x="714" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="673" y="214" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1k5n5d1_di" bpmnElement="Task_0q5cdit"> + <dc:Bounds x="1132" y="470" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qmz2ez_di" bpmnElement="SequenceFlow_1qmz2ez"> + <di:waypoint xsi:type="dc:Point" x="317" y="212" /> + <di:waypoint xsi:type="dc:Point" x="317" y="191" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="191" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="378" y="196" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_03rkfbo_di" bpmnElement="SequenceFlow_03rkfbo"> + <di:waypoint xsi:type="dc:Point" x="626" y="212" /> + <di:waypoint xsi:type="dc:Point" x="626" y="187" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="187" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="683" y="166" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0v0u7mf_di" bpmnElement="SequenceFlow_0v0u7mf"> + <di:waypoint xsi:type="dc:Point" x="1232" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1314" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1273" y="495" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="Task_0zbogrm_di" bpmnElement="Task_0zbogrm"> + <dc:Bounds x="1438" y="470" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0vpd06n_di" bpmnElement="SequenceFlow_0vpd06n"> + <di:waypoint xsi:type="dc:Point" x="1339" y="485" /> + <di:waypoint xsi:type="dc:Point" x="1339" y="373" /> + <di:waypoint xsi:type="dc:Point" x="1438" y="373" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1390" y="377" width="26" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qr8msw_di" bpmnElement="SequenceFlow_1qr8msw"> + <di:waypoint xsi:type="dc:Point" x="1364" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1405" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1405" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1438" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1379" y="516" width="42" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0ud5uwa_di" bpmnElement="ExclusiveGateway_0ud5uwa" isMarkerVisible="true"> + <dc:Bounds x="871.1194471865745" y="211.86673247778873" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="904" y="257.86673247778873" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0k3fx7p_di" bpmnElement="SequenceFlow_0k3fx7p"> + <di:waypoint xsi:type="dc:Point" x="814" y="237" /> + <di:waypoint xsi:type="dc:Point" x="871" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="843" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1lsm3bn_di" bpmnElement="SequenceFlow_1lsm3bn"> + <di:waypoint xsi:type="dc:Point" x="921" y="237" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="237" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1044" y="214" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1slvyx2_di" bpmnElement="ExclusiveGateway_1slvyx2" isMarkerVisible="true"> + <dc:Bounds x="292" y="402" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="283" y="452" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0qy68ib_di" bpmnElement="SequenceFlow_0qy68ib"> + <di:waypoint xsi:type="dc:Point" x="342" y="427" /> + <di:waypoint xsi:type="dc:Point" x="425" y="427" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="378" y="412" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1ichg7h_di" bpmnElement="ExclusiveGateway_1ichg7h" isMarkerVisible="true"> + <dc:Bounds x="601" y="402" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="590" y="452" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0q0qan8_di" bpmnElement="SequenceFlow_0q0qan8"> + <di:waypoint xsi:type="dc:Point" x="651" y="427" /> + <di:waypoint xsi:type="dc:Point" x="714" y="427" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="677" y="412" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1etgtgi_di" bpmnElement="ExclusiveGateway_1etgtgi" isMarkerVisible="true"> + <dc:Bounds x="870.9141164856861" y="402" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="909" y="445" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1c0vdki_di" bpmnElement="SequenceFlow_1c0vdki"> + <di:waypoint xsi:type="dc:Point" x="896" y="452" /> + <di:waypoint xsi:type="dc:Point" x="896" y="507" /> + <di:waypoint xsi:type="dc:Point" x="90" y="507" /> + <di:waypoint xsi:type="dc:Point" x="90" y="599" /> + <di:waypoint xsi:type="dc:Point" x="219" y="599" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="906" y="484" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0bduwog_di" bpmnElement="SequenceFlow_0bduwog"> + <di:waypoint xsi:type="dc:Point" x="317" y="402" /> + <di:waypoint xsi:type="dc:Point" x="317" y="354" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="354" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="375" y="356" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0uwar5b_di" bpmnElement="SequenceFlow_0uwar5b"> + <di:waypoint xsi:type="dc:Point" x="626" y="402" /> + <di:waypoint xsi:type="dc:Point" x="626" y="359" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="359" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="676" y="367" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0i7hfj2_di" bpmnElement="SequenceFlow_0i7hfj2"> + <di:waypoint xsi:type="dc:Point" x="921" y="427" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="427" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1044" y="412" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0ulrq9g_di" bpmnElement="ExclusiveGateway_0ulrq9g" isMarkerVisible="true"> + <dc:Bounds x="617" y="574" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="654" y="618" width="83" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_04zwhw4_di" bpmnElement="SequenceFlow_04zwhw4"> + <di:waypoint xsi:type="dc:Point" x="642" y="624" /> + <di:waypoint xsi:type="dc:Point" x="642" y="694" /> + <di:waypoint xsi:type="dc:Point" x="91" y="694" /> + <di:waypoint xsi:type="dc:Point" x="91" y="810" /> + <di:waypoint xsi:type="dc:Point" x="139" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="361" y="679" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_10ek8l4_di" bpmnElement="SequenceFlow_10ek8l4"> + <di:waypoint xsi:type="dc:Point" x="667" y="599" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="599" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="916" y="584" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_02tj4dw_di" bpmnElement="ExclusiveGateway_02tj4dw" isMarkerVisible="true"> + <dc:Bounds x="292.1076011846002" y="785" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="284" y="835" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_162mm0m_di" bpmnElement="SequenceFlow_162mm0m"> + <di:waypoint xsi:type="dc:Point" x="342" y="810" /> + <di:waypoint xsi:type="dc:Point" x="425" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="378" y="795" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1gn5lab_di" bpmnElement="ExclusiveGateway_1gn5lab" isMarkerVisible="true"> + <dc:Bounds x="601.1076011846002" y="785" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="591" y="835" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_197t3qk_di" bpmnElement="SequenceFlow_197t3qk"> + <di:waypoint xsi:type="dc:Point" x="651.1076011846002" y="810" /> + <di:waypoint xsi:type="dc:Point" x="714" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="677" y="795" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_06mv93h_di" bpmnElement="ExclusiveGateway_06mv93h" isMarkerVisible="true"> + <dc:Bounds x="871" y="785" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="862" y="835" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_19lg15d_di" bpmnElement="SequenceFlow_19lg15d"> + <di:waypoint xsi:type="dc:Point" x="921" y="810" /> + <di:waypoint xsi:type="dc:Point" x="960" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="935" y="795" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0l2z6wc_di" bpmnElement="ExclusiveGateway_0l2z6wc" isMarkerVisible="true"> + <dc:Bounds x="1105.1076011846003" y="785" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1145" y="833" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_12mfil6_di" bpmnElement="SequenceFlow_12mfil6"> + <di:waypoint xsi:type="dc:Point" x="1060" y="810" /> + <di:waypoint xsi:type="dc:Point" x="1105" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1083" y="785" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_13yjc85_di" bpmnElement="SequenceFlow_13yjc85"> + <di:waypoint xsi:type="dc:Point" x="1155" y="810" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="810" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1160" y="795" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0waedj5_di" bpmnElement="SequenceFlow_0waedj5"> + <di:waypoint xsi:type="dc:Point" x="317" y="785" /> + <di:waypoint xsi:type="dc:Point" x="317" y="711" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="711" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="370" y="716" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1hg9c2l_di" bpmnElement="SequenceFlow_1hg9c2l"> + <di:waypoint xsi:type="dc:Point" x="626" y="785" /> + <di:waypoint xsi:type="dc:Point" x="626" y="714" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="714" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="669" y="717" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0gej71y_di" bpmnElement="SequenceFlow_0gej71y"> + <di:waypoint xsi:type="dc:Point" x="896" y="785" /> + <di:waypoint xsi:type="dc:Point" x="896" y="720" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="720" /> + <di:waypoint xsi:type="dc:Point" x="1182" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="905" y="738" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1lb0lk5_di" bpmnElement="Task_1tg549h"> + <dc:Bounds x="1438" y="333" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1gmvi7n_di" bpmnElement="ExclusiveGateway_0xlxgl0" isMarkerVisible="true"> + <dc:Bounds x="1314" y="485" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1295" y="534.2201382033564" width="87" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0y82zzx_di" bpmnElement="ExclusiveGateway_0y82zzx" isMarkerVisible="true"> + <dc:Bounds x="1463" y="671" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1499" y="715" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_05gpym3_di" bpmnElement="SequenceFlow_05gpym3"> + <di:waypoint xsi:type="dc:Point" x="1339" y="535" /> + <di:waypoint xsi:type="dc:Point" x="1339" y="648" /> + <di:waypoint xsi:type="dc:Point" x="1490" y="648" /> + <di:waypoint xsi:type="dc:Point" x="1489" y="672" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1404" y="633" width="21" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1sla5dr_di" bpmnElement="SequenceFlow_1sla5dr"> + <di:waypoint xsi:type="dc:Point" x="1463" y="696" /> + <di:waypoint xsi:type="dc:Point" x="440" y="696" /> + <di:waypoint xsi:type="dc:Point" x="440" y="467" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1228" y="699" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0iektwg_di" bpmnElement="SequenceFlow_0iektwg"> + <di:waypoint xsi:type="dc:Point" x="1467" y="692" /> + <di:waypoint xsi:type="dc:Point" x="1323" y="667" /> + <di:waypoint xsi:type="dc:Point" x="764" y="667" /> + <di:waypoint xsi:type="dc:Point" x="764" y="467" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1214" y="631" width="87" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ttepat_di" bpmnElement="SequenceFlow_1ttepat"> + <di:waypoint xsi:type="dc:Point" x="1468" y="701" /> + <di:waypoint xsi:type="dc:Point" x="1346" y="735" /> + <di:waypoint xsi:type="dc:Point" x="243" y="735" /> + <di:waypoint xsi:type="dc:Point" x="243" y="639" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1233" y="743" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1hx1ur7_di" bpmnElement="SequenceFlow_1hx1ur7"> + <di:waypoint xsi:type="dc:Point" x="1488" y="721" /> + <di:waypoint xsi:type="dc:Point" x="1488" y="789" /> + <di:waypoint xsi:type="dc:Point" x="1322" y="883" /> + <di:waypoint xsi:type="dc:Point" x="475" y="883" /> + <di:waypoint xsi:type="dc:Point" x="475" y="850" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1316" y="811" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ukzynj_di" bpmnElement="SequenceFlow_0ukzynj"> + <di:waypoint xsi:type="dc:Point" x="1488" y="721" /> + <di:waypoint xsi:type="dc:Point" x="1488" y="818" /> + <di:waypoint xsi:type="dc:Point" x="1346" y="918" /> + <di:waypoint xsi:type="dc:Point" x="764" y="918" /> + <di:waypoint xsi:type="dc:Point" x="764" y="850" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1374" y="853.0052048946286" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1lsfn19_di" bpmnElement="SequenceFlow_1lsfn19"> + <di:waypoint xsi:type="dc:Point" x="1488" y="721" /> + <di:waypoint xsi:type="dc:Point" x="1488" y="858" /> + <di:waypoint xsi:type="dc:Point" x="1368" y="952" /> + <di:waypoint xsi:type="dc:Point" x="1010" y="952" /> + <di:waypoint xsi:type="dc:Point" x="1010" y="850" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1402" y="937.143889853408" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19ba94v_di" bpmnElement="SequenceFlow_19ba94v"> + <di:waypoint xsi:type="dc:Point" x="319" y="599" /> + <di:waypoint xsi:type="dc:Point" x="454" y="599" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="387" y="584" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0rqgdju_di" bpmnElement="Task_0eae8go"> + <dc:Bounds x="219" y="559" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0fxuur5_di" bpmnElement="SequenceFlow_0fxuur5"> + <di:waypoint xsi:type="dc:Point" x="1505" y="688" /> + <di:waypoint xsi:type="dc:Point" x="1700" y="587" /> + <di:waypoint xsi:type="dc:Point" x="1700" y="307" /> + <di:waypoint xsi:type="dc:Point" x="475" y="307" /> + <di:waypoint xsi:type="dc:Point" x="475" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1563" y="581.1817056243242" width="88" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1wax44p_di" bpmnElement="SequenceFlow_1wax44p"> + <di:waypoint xsi:type="dc:Point" x="1507" y="690" /> + <di:waypoint xsi:type="dc:Point" x="1804" y="594" /> + <di:waypoint xsi:type="dc:Point" x="1804" y="307" /> + <di:waypoint xsi:type="dc:Point" x="743" y="307" /> + <di:waypoint xsi:type="dc:Point" x="743" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1671" y="596.5" width="81" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1nlqlwn_di" bpmnElement="SequenceFlow_1nlqlwn"> + <di:waypoint xsi:type="dc:Point" x="1510" y="693" /> + <di:waypoint xsi:type="dc:Point" x="1904" y="635" /> + <di:waypoint xsi:type="dc:Point" x="1904" y="307" /> + <di:waypoint xsi:type="dc:Point" x="175" y="307" /> + <di:waypoint xsi:type="dc:Point" x="175" y="387" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1762" y="612.956397371246" width="80" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1c022sy_di" bpmnElement="SequenceFlow_1c022sy"> + <di:waypoint xsi:type="dc:Point" x="1499" y="682" /> + <di:waypoint xsi:type="dc:Point" x="1657" y="478" /> + <di:waypoint xsi:type="dc:Point" x="1657" y="373" /> + <di:waypoint xsi:type="dc:Point" x="1538" y="373" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1672" y="425.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/processengine.properties b/bpmn/MSOInfrastructureBPMN/src/main/resources/processengine.properties deleted file mode 100644 index d071fdabf8..0000000000 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/processengine.properties +++ /dev/null @@ -1,20 +0,0 @@ -### -# ============LICENSE_START======================================================= -# ECOMP MSO -# ================================================================================ -# 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========================================================= -### -processEngineName=infrastructure diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateNetworkInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateNetworkInstance.bpmn index 5488350afc..24ccc4d514 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateNetworkInstance.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateNetworkInstance.bpmn @@ -158,13 +158,13 @@ DoCreateNetworkInstance.prepareSDNCRollbackRequest(execution)]]></bpmn2:script> <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_isSdncActivateRollbackNeeded" ) == true}]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:sequenceFlow id="SequenceFlow_12tlymf" name="No" sourceRef="isSDNCActivate_ExclusiveGateway" targetRef="ExclusiveGateway_1bk0tqd" /> - <bpmn2:exclusiveGateway id="isSdncRpc4_ExclusiveGateway4" name="is '1702' SNDC Call?" default="isSdncRpc4No_SequenceFlow4"> + <bpmn2:exclusiveGateway id="isSdncRpc4_ExclusiveGateway4" name="is not '1610' SNDC Call?" default="isSdncRpc4No_SequenceFlow4"> <bpmn2:incoming>sdncOk_Yeso_ExclusiveGateway</bpmn2:incoming> <bpmn2:outgoing>isSdncRpc4Yes_SequenceFlow4</bpmn2:outgoing> <bpmn2:outgoing>isSdncRpc4No_SequenceFlow4</bpmn2:outgoing> </bpmn2:exclusiveGateway> <bpmn2:sequenceFlow id="isSdncRpc4Yes_SequenceFlow4" name="Yes" sourceRef="isSdncRpc4_ExclusiveGateway4" targetRef="Task_0q6pzpn"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") == '1702'} ]]></bpmn2:conditionExpression> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:sequenceFlow id="isSdncRpc4No_SequenceFlow4" name="No" sourceRef="isSdncRpc4_ExclusiveGateway4" targetRef="prepareSDNCRollbackRequest_ScriptTask" /> <bpmn2:scriptTask id="Task_0q6pzpn" name="Prepare RSRC SDNCRollback Request" scriptFormat="groovy"> @@ -364,16 +364,11 @@ DoCreateNetworkInstance.callRESTQueryAAINetworkName(execution)]]></bpmn2:script> <bpmn2:sequenceFlow id="siFoundNo" name="No" sourceRef="siFoundCheck" targetRef="workflowExceptionSINotFound" /> <bpmn2:scriptTask id="workflowExceptionSINotFound" name="Create Workflow Exception" scriptFormat="groovy"> <bpmn2:incoming>siFoundNo</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_30</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.utils.* + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* ExceptionUtil exceptionUtil = new ExceptionUtil() -exceptionUtil.buildWorkflowException(execution, 404, "Service Instance Not Found")]]></bpmn2:script> +exceptionUtil.buildAndThrowWorkflowException(execution, 404, "Service Instance Not Found") +]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_30" name="" sourceRef="workflowExceptionSINotFound" targetRef="EndEvent_2" /> - <bpmn2:endEvent id="EndEvent_2"> - <bpmn2:incoming>SequenceFlow_30</bpmn2:incoming> - <bpmn2:errorEventDefinition id="_ErrorEventDefinition_97" errorRef="Error_2" /> - </bpmn2:endEvent> <bpmn2:scriptTask id="callRESTQueryVpnBinding_ScriptTask" name="Call REST Query Vpn Binding in AAI" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> @@ -474,14 +469,14 @@ DoCreateNetworkInstance.validateRpcSDNCActivateResponse(execution)]]></bpmn2:scr <bpmn2:incoming>SequenceFlow_0s51ns0</bpmn2:incoming> <bpmn2:errorEventDefinition errorRef="Error_2" /> </bpmn2:endEvent> - <bpmn2:exclusiveGateway id="isSdncRpc1_ExclusiveGateway1" name="is '1702' SNDC Call?" default="isSdncRpc1No_SequenceFlow1"> + <bpmn2:exclusiveGateway id="isSdncRpc1_ExclusiveGateway1" name="is not '1610' SNDC Call?" default="isSdncRpc1No_SequenceFlow1"> <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming> <bpmn2:outgoing>isSdncRpc1No_SequenceFlow1</bpmn2:outgoing> <bpmn2:outgoing>isSdncRpc1Yes_SequenceFlow1</bpmn2:outgoing> </bpmn2:exclusiveGateway> <bpmn2:sequenceFlow id="isSdncRpc1No_SequenceFlow1" name="No" sourceRef="isSdncRpc1_ExclusiveGateway1" targetRef="prepareSDNCTopoRequest_ScriptTask" /> <bpmn2:sequenceFlow id="isSdncRpc1Yes_SequenceFlow1" name="Yes" sourceRef="isSdncRpc1_ExclusiveGateway1" targetRef="Task_10lubzj"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") == '1702'} ]]></bpmn2:conditionExpression> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:callActivity id="Task_0pbtywn" name="Call SDNC RSRC Assign Adapter V1 " calledElement="sdncAdapter"> <bpmn2:extensionElements> @@ -498,13 +493,13 @@ DoCreateNetworkInstance.validateRpcSDNCActivateResponse(execution)]]></bpmn2:scr </bpmn2:callActivity> <bpmn2:sequenceFlow id="SequenceFlow_0j8bxnb" sourceRef="Task_10lubzj" targetRef="Task_0pbtywn" /> <bpmn2:sequenceFlow id="SequenceFlow_0d93bqw" sourceRef="Task_0pbtywn" targetRef="validateSDNCResponse_ScriptTask" /> - <bpmn2:exclusiveGateway id="isSdncRpc2_ExclusiveGateway2" name="is '1702' SNDC Call?" default="isSdncRpc2No_SequenceFlow2"> + <bpmn2:exclusiveGateway id="isSdncRpc2_ExclusiveGateway2" name="is not '1610' SNDC Call?" default="isSdncRpc2No_SequenceFlow2"> <bpmn2:incoming>SequenceFlow_1ipz2ze</bpmn2:incoming> <bpmn2:outgoing>isSdncRpc2Yes_SequenceFlow2</bpmn2:outgoing> <bpmn2:outgoing>isSdncRpc2No_SequenceFlow2</bpmn2:outgoing> </bpmn2:exclusiveGateway> <bpmn2:sequenceFlow id="isSdncRpc2Yes_SequenceFlow2" name="Yes" sourceRef="isSdncRpc2_ExclusiveGateway2" targetRef="Task_1rd6dg6"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") == '1702'} ]]></bpmn2:conditionExpression> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:sequenceFlow id="isSdncRpc2No_SequenceFlow2" name="No" sourceRef="isSdncRpc2_ExclusiveGateway2" targetRef="Task_0zzobg6" /> <bpmn2:scriptTask id="Task_10lubzj" name="Prepare Assign SDNC RPC Request" scriptFormat="groovy"> @@ -925,12 +920,6 @@ DoCreateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script> <dc:Bounds x="851" y="319" width="18" height="13" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_247" bpmnElement="EndEvent_2"> - <dc:Bounds x="791" y="527" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="809" y="568" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_331" bpmnElement="workflowExceptionSINotFound"> <dc:Bounds x="759" y="395" width="100" height="80" /> </bpmndi:BPMNShape> @@ -941,13 +930,6 @@ DoCreateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script> <dc:Bounds x="823" y="340.55618916742606" width="14" height="13" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_30" sourceElement="_BPMNShape_ScriptTask_331" targetElement="_BPMNShape_EndEvent_247"> - <di:waypoint xsi:type="dc:Point" x="809" y="475" /> - <di:waypoint xsi:type="dc:Point" x="809" y="527" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="824" y="501" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_333" bpmnElement="callRESTQueryNetworkTableRef_ScriptTask"> <dc:Bounds x="1454" y="879" width="100" height="80" /> </bpmndi:BPMNShape> @@ -1097,7 +1079,7 @@ DoCreateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script> <bpmndi:BPMNShape id="ExclusiveGateway_1ts3ph0_di" bpmnElement="isSdncRpc1_ExclusiveGateway1" isMarkerVisible="true"> <dc:Bounds x="1337.228" y="291" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1394" y="304" width="76" height="24" /> + <dc:Bounds x="1401" y="304" width="61" height="24" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1r5sja0_di" bpmnElement="isSdncRpc1No_SequenceFlow1"> @@ -1135,7 +1117,7 @@ DoCreateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script> <bpmndi:BPMNShape id="ExclusiveGateway_00dh41t_di" bpmnElement="isSdncRpc4_ExclusiveGateway4" isMarkerVisible="true"> <dc:Bounds x="713" y="751" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="707" y="710" width="76" height="24" /> + <dc:Bounds x="714" y="710" width="61" height="24" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0suu90e_di" bpmnElement="isSdncRpc4Yes_SequenceFlow4"> @@ -1156,7 +1138,7 @@ DoCreateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script> <bpmndi:BPMNShape id="ExclusiveGateway_1gghe34_di" bpmnElement="isSdncRpc2_ExclusiveGateway2" isMarkerVisible="true"> <dc:Bounds x="1360" y="1553" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1347" y="1619" width="76" height="24" /> + <dc:Bounds x="1343" y="1619" width="83" height="36" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1lphs99_di" bpmnElement="isSdncRpc2Yes_SequenceFlow2"> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateNetworkInstanceRollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateNetworkInstanceRollback.bpmn index 00ef41c168..eb60d42c2b 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateNetworkInstanceRollback.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateNetworkInstanceRollback.bpmn @@ -97,7 +97,7 @@ DoCreateNetworkInstanceRollback.validateRollbackResponses(execution)]]></bpmn:sc <bpmn:sequenceFlow id="SequenceFlow_17o4w67" sourceRef="ServiceTask_0bqh5yl" targetRef="ExclusiveGateway_1n5jck8" /> <bpmn:sequenceFlow id="SequenceFlow_101y57s" name="No" sourceRef="ExclusiveGateway_17g4q5c" targetRef="CallActivity_1xilevb" /> <bpmn:sequenceFlow id="SequenceFlow_0mw0dgd" name="Yes" sourceRef="ExclusiveGateway_17g4q5c" targetRef="CallActivity_0kbwa1x"> - <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") == '1702'} ]]></bpmn:conditionExpression> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn:conditionExpression> </bpmn:sequenceFlow> <bpmn:endEvent id="EndEvent_1fvr7ad"> <bpmn:incoming>SequenceFlow_0yto4gz</bpmn:incoming> @@ -514,4 +514,4 @@ wasDeleted </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> -</bpmn:definitions> +</bpmn:definitions>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModule.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModule.bpmn index fecb720666..5383dc871e 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModule.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModule.bpmn @@ -37,9 +37,7 @@ <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing>
</bpmn2:exclusiveGateway>
<bpmn2:sequenceFlow id="SequenceFlow_19" name="yes" sourceRef="IsVolumeGroupNameSpecified" targetRef="ConfirmVolumeName">
- <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def doCreateVfModule = new DoCreateVfModule()
-return doCreateVfModule.isVolumeGroupNamePresent(execution)]]></bpmn2:conditionExpression>
+ <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_volumeGroupName") != null && execution.getVariable("DCVFM_volumeGroupName") != "" }]]></bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="SequenceFlow_21" name="no" sourceRef="IsVolumeGroupNameSpecified" targetRef="ExclusiveGateway_4" />
<bpmn2:callActivity id="ConfirmVolumeName" name="Confirm Volume Group Name" calledElement="ConfirmVolumeGroupName">
@@ -180,9 +178,7 @@ doCreateVfModule.validateSDNCResponse(execution, response, "activate")]]></bpmn2 <bpmn2:outgoing>SequenceFlow_30</bpmn2:outgoing>
</bpmn2:exclusiveGateway>
<bpmn2:sequenceFlow id="SequenceFlow_28" name="yes" sourceRef="ExclusiveGateway_5" targetRef="PrepareCreateAAIVfModuleVolumeGroupRequest">
- <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def doCreateVfModule = new DoCreateVfModule()
-return doCreateVfModule.isVolumeGroupIdPresent(execution)]]></bpmn2:conditionExpression>
+ <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_volumeGroupId") != null && execution.getVariable("DCVFM_volumeGroupId") != "" }]]></bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="SequenceFlow_30" name="no" sourceRef="ExclusiveGateway_5" targetRef="ExclusiveGateway_6" />
<bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="PreProcessUpdateAAIVfModule_1" targetRef="UpdateAAIVfModule_1" />
@@ -314,29 +310,9 @@ def doCreateVfModule = new DoCreateVfModule() return doCreateVfModule.queryCloudRegion(execution)]]></bpmn2:script>
</bpmn2:scriptTask>
<bpmn2:sequenceFlow id="SequenceFlow_40" name="yes" sourceRef="IsVolumeGroupIdSpecified" targetRef="QueryCloudRegion">
- <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def doCreateVfModule = new DoCreateVfModule()
-return doCreateVfModule.isVolumeGroupIdPresent(execution)]]></bpmn2:conditionExpression>
+ <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_volumeGroupId") != null && execution.getVariable("DCVFM_volumeGroupId") != "" }]]></bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="SequenceFlow_43" name="" sourceRef="QueryCloudRegion" targetRef="ConfirmVolumeGroupTenant" />
- <bpmn2:subProcess id="SubProcess_1" name="Error Handling Sub Process" triggeredByEvent="true">
- <bpmn2:scriptTask id="ScriptTask_1" name="Process Error" scriptFormat="groovy">
- <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
- <bpmn2:outgoing>SequenceFlow_38</bpmn2:outgoing>
- <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def doCreateVfModule = new DoCreateVfModule()
-doCreateVfModule.processBPMNException(execution)]]></bpmn2:script>
- </bpmn2:scriptTask>
- <bpmn2:sequenceFlow id="SequenceFlow_38" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_2" />
- <bpmn2:startEvent id="StartEvent_2">
- <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
- <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" />
- </bpmn2:startEvent>
- <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="StartEvent_2" targetRef="ScriptTask_1" />
- <bpmn2:endEvent id="EndEvent_2">
- <bpmn2:incoming>SequenceFlow_38</bpmn2:incoming>
- </bpmn2:endEvent>
- </bpmn2:subProcess>
<bpmn2:scriptTask id="PreProcessRequest" name="Pre-Process Request" scriptFormat="groovy">
<bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
@@ -354,7 +330,7 @@ doCreateVfModule.preProcessRequest(execution)]]></bpmn2:script> <bpmn2:extensionElements>
<camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
<camunda:in source="isVidRequest" target="isVidRequest" />
- <camunda:in source="newVfModuleId" target="newVfModuleId" />
+ <camunda:in source="DCVFM_vfModuleId" target="newVfModuleId" />
<camunda:out source="WorkflowException" target="WorkflowException" />
<camunda:out source="CreateAAIVfModuleResponse" target="DCVFM_createVfModuleResponse" />
<camunda:in source="DCVFM_vnfId" target="vnfId" />
@@ -498,6 +474,64 @@ doCreateVfModule.validateSDNCResponse(execution, response, "get")]]></bpmn2:scri <bpmn2:incoming>SequenceFlow_05og7iw</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_1f53tby</bpmn2:outgoing>
</bpmn2:callActivity>
+ <bpmn2:subProcess id="SubProcess_0ltzufk" name="Sub-process for Application Errors" triggeredByEvent="true">
+ <bpmn2:startEvent id="StartEvent_18lzc5m">
+ <bpmn2:outgoing>SequenceFlow_02lc25j</bpmn2:outgoing>
+ <bpmn2:errorEventDefinition errorRef="Error_1" />
+ </bpmn2:startEvent>
+ <bpmn2:endEvent id="EndEvent_0wsdptv">
+ <bpmn2:incoming>SequenceFlow_0z2rczk</bpmn2:incoming>
+ <bpmn2:incoming>SequenceFlow_1pgo10r</bpmn2:incoming>
+ </bpmn2:endEvent>
+ <bpmn2:callActivity id="CallDoCreateVfModuleRollback" name="Call DoCreateVfModuleRollback" calledElement="DoCreateVfModuleRollback">
+ <bpmn2:extensionElements>
+ <camunda:in source="rollbackData" target="rollbackData" />
+ <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+ <camunda:in source="isVidRequest" target="isVidRequest" />
+ <camunda:out source="rolledBack" target="rolledBack" />
+ <camunda:out source="rollbackError" target="rollbackError" />
+ <camunda:in source="disableRollback" target="disableRollback" />
+ <camunda:in source="sdncVersion" target="sdncVersion" />
+ </bpmn2:extensionElements>
+ <bpmn2:incoming>SequenceFlow_1i1q78e</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_0112l2c</bpmn2:outgoing>
+ </bpmn2:callActivity>
+ <bpmn2:scriptTask id="PreProcessRollback" name="Pre Process Rollback" scriptFormat="groovy">
+ <bpmn2:incoming>SequenceFlow_04bd5in</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_1i1q78e</bpmn2:outgoing>
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.preProcessRollback(execution)]]></bpmn2:script>
+ </bpmn2:scriptTask>
+ <bpmn2:scriptTask id="PostProcessRollback" name="Post Process Rollback" scriptFormat="groovy">
+ <bpmn2:incoming>SequenceFlow_0112l2c</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_0z2rczk</bpmn2:outgoing>
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.postProcessRollback(execution)]]></bpmn2:script>
+ </bpmn2:scriptTask>
+ <bpmn2:sequenceFlow id="SequenceFlow_02lc25j" sourceRef="StartEvent_18lzc5m" targetRef="ExclusiveGateway_039bib8" />
+ <bpmn2:sequenceFlow id="SequenceFlow_0z2rczk" sourceRef="PostProcessRollback" targetRef="EndEvent_0wsdptv" />
+ <bpmn2:sequenceFlow id="SequenceFlow_1i1q78e" sourceRef="PreProcessRollback" targetRef="CallDoCreateVfModuleRollback" />
+ <bpmn2:sequenceFlow id="SequenceFlow_0112l2c" sourceRef="CallDoCreateVfModuleRollback" targetRef="PostProcessRollback" />
+ <bpmn2:exclusiveGateway id="ExclusiveGateway_039bib8" name="Disable Rollback?" default="SequenceFlow_04bd5in">
+ <bpmn2:incoming>SequenceFlow_02lc25j</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_04bd5in</bpmn2:outgoing>
+ <bpmn2:outgoing>SequenceFlow_1nh7m8d</bpmn2:outgoing>
+ </bpmn2:exclusiveGateway>
+ <bpmn2:sequenceFlow id="SequenceFlow_04bd5in" name="no" sourceRef="ExclusiveGateway_039bib8" targetRef="PreProcessRollback" />
+ <bpmn2:sequenceFlow id="SequenceFlow_1nh7m8d" name="yes" sourceRef="ExclusiveGateway_039bib8" targetRef="Task_1fm09pi">
+ <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("disableRollback" ) == true}]]></bpmn2:conditionExpression>
+ </bpmn2:sequenceFlow>
+ <bpmn2:scriptTask id="Task_1fm09pi" name="Process Error" scriptFormat="groovy">
+ <bpmn2:incoming>SequenceFlow_1nh7m8d</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_1pgo10r</bpmn2:outgoing>
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.processBPMNException(execution)]]></bpmn2:script>
+ </bpmn2:scriptTask>
+ <bpmn2:sequenceFlow id="SequenceFlow_1pgo10r" sourceRef="Task_1fm09pi" targetRef="EndEvent_0wsdptv" />
+ </bpmn2:subProcess>
</bpmn2:process>
<bpmn2:message id="Message_1" name="DoCreateVfModuleRequest" />
<bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
@@ -925,38 +959,6 @@ doCreateVfModule.validateSDNCResponse(execution, response, "get")]]></bpmn2:scri <dc:Bounds x="165" y="574" width="6" height="6" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="_BPMNShape_SubProcess_21" bpmnElement="SubProcess_1" isExpanded="true">
- <dc:Bounds x="29" y="1197" width="405" height="203" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="_BPMNShape_StartEvent_55" bpmnElement="StartEvent_2">
- <dc:Bounds x="58" y="1281" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="76" y="1322" width="0" height="0" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="_BPMNShape_EndEvent_181" bpmnElement="EndEvent_2">
- <dc:Bounds x="370" y="1281" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="388" y="1322" width="0" height="0" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_284" bpmnElement="ScriptTask_1">
- <dc:Bounds x="165" y="1258" width="134" height="81" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_StartEvent_55" targetElement="_BPMNShape_ScriptTask_284">
- <di:waypoint xsi:type="dc:Point" x="94" y="1299" />
- <di:waypoint xsi:type="dc:Point" x="165" y="1298" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="118" y="1299" width="0" height="0" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_38" bpmnElement="SequenceFlow_38" sourceElement="_BPMNShape_ScriptTask_284" targetElement="_BPMNShape_EndEvent_181">
- <di:waypoint xsi:type="dc:Point" x="299" y="1298" />
- <di:waypoint xsi:type="dc:Point" x="370" y="1299" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="329" y="1298" width="0" height="0" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="_BPMNShape_ScriptTask_156" bpmnElement="CreateAAIVfModule">
<dc:Bounds x="696" y="348" width="121" height="92" />
</bpmndi:BPMNShape>
@@ -1162,6 +1164,92 @@ doCreateVfModule.validateSDNCResponse(execution, response, "get")]]></bpmn2:scri <bpmndi:BPMNShape id="CallActivity_14nvmgk_di" bpmnElement="Task_0kuj2a1">
<dc:Bounds x="378" y="242" width="100" height="80" />
</bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="SubProcess_0ltzufk_di" bpmnElement="SubProcess_0ltzufk" isExpanded="true">
+ <dc:Bounds x="-50" y="1190" width="1047" height="338" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="StartEvent_18lzc5m_di" bpmnElement="StartEvent_18lzc5m">
+ <dc:Bounds x="93" y="1294" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="111" y="1335" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_0wsdptv_di" bpmnElement="EndEvent_0wsdptv">
+ <dc:Bounds x="861" y="1294" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="879" y="1335" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="CallActivity_1ehr5kq_di" bpmnElement="CallDoCreateVfModuleRollback">
+ <dc:Bounds x="509" y="1272" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ScriptTask_0upatdd_di" bpmnElement="PreProcessRollback">
+ <dc:Bounds x="329" y="1272" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ScriptTask_0o1zc29_di" bpmnElement="PostProcessRollback">
+ <dc:Bounds x="694" y="1272" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_02lc25j_di" bpmnElement="SequenceFlow_02lc25j">
+ <di:waypoint xsi:type="dc:Point" x="129" y="1312" />
+ <di:waypoint xsi:type="dc:Point" x="196" y="1312" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="163" y="1297" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0z2rczk_di" bpmnElement="SequenceFlow_0z2rczk">
+ <di:waypoint xsi:type="dc:Point" x="794" y="1312" />
+ <di:waypoint xsi:type="dc:Point" x="826" y="1312" />
+ <di:waypoint xsi:type="dc:Point" x="826" y="1312" />
+ <di:waypoint xsi:type="dc:Point" x="861" y="1312" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="841" y="1312" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1i1q78e_di" bpmnElement="SequenceFlow_1i1q78e">
+ <di:waypoint xsi:type="dc:Point" x="429" y="1312" />
+ <di:waypoint xsi:type="dc:Point" x="509" y="1312" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="469" y="1297" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0112l2c_di" bpmnElement="SequenceFlow_0112l2c">
+ <di:waypoint xsi:type="dc:Point" x="609" y="1312" />
+ <di:waypoint xsi:type="dc:Point" x="694" y="1312" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="652" y="1297" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ExclusiveGateway_039bib8_di" bpmnElement="ExclusiveGateway_039bib8" isMarkerVisible="true">
+ <dc:Bounds x="196" y="1287" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="177" y="1259" width="87" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_04bd5in_di" bpmnElement="SequenceFlow_04bd5in">
+ <di:waypoint xsi:type="dc:Point" x="246" y="1312" />
+ <di:waypoint xsi:type="dc:Point" x="329" y="1312" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="282" y="1297" width="12" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1nh7m8d_di" bpmnElement="SequenceFlow_1nh7m8d">
+ <di:waypoint xsi:type="dc:Point" x="221" y="1337" />
+ <di:waypoint xsi:type="dc:Point" x="221" y="1436" />
+ <di:waypoint xsi:type="dc:Point" x="509" y="1436" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="227" y="1386.5" width="18" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ScriptTask_05v20n0_di" bpmnElement="Task_1fm09pi">
+ <dc:Bounds x="509" y="1396" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1pgo10r_di" bpmnElement="SequenceFlow_1pgo10r">
+ <di:waypoint xsi:type="dc:Point" x="609" y="1436" />
+ <di:waypoint xsi:type="dc:Point" x="879" y="1436" />
+ <di:waypoint xsi:type="dc:Point" x="879" y="1330" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="744" y="1421" width="0" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn2:definitions>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn index 7a7f369e42..cb6538c73a 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn @@ -6,7 +6,7 @@ </bpmn2:startEvent> <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="InitializeVariables" /> <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="Rollback PrepareUpdateAAIVfModule?" default="SequenceFlow_9"> - <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_11er1t8</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> </bpmn2:exclusiveGateway> @@ -17,7 +17,7 @@ def dcvfmr = new DoCreateVfModuleRollback() dcvfmr.preProcessRequest(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:callActivity id="InvokePrepareUpdateAAIVfModule" name="Invoke
PrepareUpdateAAIVfModule" calledElement="PrepareUpdateAAIVfModule"> + <bpmn2:callActivity id="InvokePrepareUpdateAAIVfModule" name="Invoke PrepareUpdateAAIVfModule" calledElement="PrepareUpdateAAIVfModule"> <bpmn2:extensionElements> <camunda:in source="PrepareUpdateAAIVfModuleRequest" target="PrepareUpdateAAIVfModuleRequest" /> <camunda:out source="WorkflowException" target="WorkflowException" /> @@ -33,13 +33,13 @@ dcvfmr.preProcessRequest(execution)]]></bpmn2:script> <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="PrepareUpdateAAIVfModulePrep" targetRef="InvokePrepareUpdateAAIVfModule" /> <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="InvokePrepareUpdateAAIVfModule" targetRef="ExclusiveGateway_2" /> <bpmn2:sequenceFlow id="SequenceFlow_9" name="no" sourceRef="ExclusiveGateway_1" targetRef="ExclusiveGateway_2" /> - <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="Rollback Network Policies Creation?" default="SequenceFlow_15"> + <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="Rollback 1707 SDNC Activate?" default="SequenceFlow_15"> <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> </bpmn2:exclusiveGateway> - <bpmn2:scriptTask id="VNFAdapterPrep" name="VNFAdapter
Prep" scriptFormat="groovy"> + <bpmn2:scriptTask id="VNFAdapterPrep" name="VNFAdapter Prep" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_1p0v6yk</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing> <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* @@ -47,7 +47,7 @@ def dcvfmr = new DoCreateVfModuleRollback() dcvfmr.prepVNFAdapterRequest(execution)]]></bpmn2:script> </bpmn2:scriptTask> <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="VNFAdapterPrep" targetRef="InvokeVNFAdapterRestV1" /> - <bpmn2:callActivity id="InvokeVNFAdapterRestV1" name="Invoke
VNFAdapterRestV1" calledElement="vnfAdapterRestV1"> + <bpmn2:callActivity id="InvokeVNFAdapterRestV1" name="Invoke VNFAdapterRestV1" calledElement="vnfAdapterRestV1"> <bpmn2:extensionElements> <camunda:out source="WorkflowException" target="WorkflowException" /> <camunda:in source="vnfAdapterRestV1Request" target="vnfAdapterRestV1Request" /> @@ -59,12 +59,12 @@ dcvfmr.prepVNFAdapterRequest(execution)]]></bpmn2:script> <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_10" name="yes" sourceRef="ExclusiveGateway_2" targetRef="Task_08csf14"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackCreateNetworkPoliciesAAI") == "true"}]]></bpmn2:conditionExpression> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="yes" sourceRef="ExclusiveGateway_2" targetRef="PrepareSDNCDeactivateRequest"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackSDNCRequestActivate") == "true" && execution.getVariable("sdncVersion") == "1707"}]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="InvokeVNFAdapterRestV1" targetRef="ExclusiveGateway_3" /> - <bpmn2:sequenceFlow id="SequenceFlow_15" name="no" sourceRef="ExclusiveGateway_2" targetRef="ExclusiveGateway_0a0hroy" /> - <bpmn2:scriptTask id="UpdateAAIVfModulePrep" name="UpdateAAIVfModule
Prep" scriptFormat="groovy"> + <bpmn2:sequenceFlow id="SequenceFlow_15" name="no" sourceRef="ExclusiveGateway_2" targetRef="ExclusiveGateway_1938vz9" /> + <bpmn2:scriptTask id="UpdateAAIVfModulePrep" name="UpdateAAIVfModule Prep" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* @@ -72,7 +72,7 @@ def dcvfmr = new DoCreateVfModuleRollback() dcvfmr.prepUpdateAAIVfModule(execution)]]></bpmn2:script> </bpmn2:scriptTask> <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="UpdateAAIVfModulePrep" targetRef="InvokeUpdateAAIVfModule" /> - <bpmn2:callActivity id="InvokeUpdateAAIVfModule" name="Invoke
UpdateAAIVfModule" calledElement="UpdateAAIVfModule"> + <bpmn2:callActivity id="InvokeUpdateAAIVfModule" name="Invoke UpdateAAIVfModule" calledElement="UpdateAAIVfModule"> <bpmn2:extensionElements> <camunda:out source="WorkflowException" target="WorkflowException" /> <camunda:in source="UpdateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest" /> @@ -98,19 +98,19 @@ dcvfmr.prepUpdateAAIVfModule(execution)]]></bpmn2:script> <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing> </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_19" name="yes" sourceRef="ExclusiveGateway_4" targetRef="SDNCAdapterPrep2"> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="yes" sourceRef="ExclusiveGateway_4" targetRef="ExclusiveGateway_1h87hhh"> <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackSDNCRequestAssign") == "true" || execution.getVariable("DCVFMR_rollbackSDNCRequestActivate") == "true"}]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:sequenceFlow id="SequenceFlow_20" name="no" sourceRef="ExclusiveGateway_4" targetRef="ExclusiveGateway_5" /> - <bpmn2:scriptTask id="SDNCAdapterPrep2" name="SDNCAdapter
Prep" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:scriptTask id="SDNCAdapterPrep2" name="SDNCAdapter Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1rpg6ac</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing> <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* def dcvfmr = new DoCreateVfModuleRollback() dcvfmr.prepSDNCAdapterRequest(execution)]]></bpmn2:script> </bpmn2:scriptTask> <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="SDNCAdapterPrep2" targetRef="InvokeSDNCAdapterV1_2" /> - <bpmn2:callActivity id="InvokeSDNCAdapterV1_2" name="Invoke
SDNCAdapterV1" calledElement="sdncAdapter"> + <bpmn2:callActivity id="InvokeSDNCAdapterV1_2" name="Invoke SDNCAdapterV1" calledElement="sdncAdapter"> <bpmn2:extensionElements> <camunda:out source="WorkflowException" target="WorkflowException" /> <camunda:in source="sdncAdapterWorkflowRequest" target="sdncAdapterWorkflowRequest" /> @@ -126,14 +126,15 @@ dcvfmr.prepSDNCAdapterRequest(execution)]]></bpmn2:script> <bpmn2:exclusiveGateway id="ExclusiveGateway_5" name="Delete AAI VF Modlue?" default="SequenceFlow_21"> <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_12otwa4</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing> </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_21" name="no" sourceRef="ExclusiveGateway_5" targetRef="EndEvent_9" /> + <bpmn2:sequenceFlow id="SequenceFlow_21" name="no" sourceRef="ExclusiveGateway_5" targetRef="SetSuccessfulRollbackStatus" /> <bpmn2:sequenceFlow id="SequenceFlow_24" name="yes" sourceRef="ExclusiveGateway_5" targetRef="DeleteAAIVfModulePrep"> <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackCreateAAIVfModule") == "true"}]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> - <bpmn2:callActivity id="InvokeDeleteAAIVfModule" name="Invoke
DeleteAAIVfModule" calledElement="DeleteAAIVfModule"> + <bpmn2:callActivity id="InvokeDeleteAAIVfModule" name="Invoke DeleteAAIVfModule" calledElement="DeleteAAIVfModule"> <bpmn2:extensionElements> <camunda:in source="DeleteAAIVfModuleRequest" target="DeleteAAIVfModuleRequest" /> <camunda:in source="isVidRequest" target="isVidRequest" /> @@ -143,12 +144,12 @@ dcvfmr.prepSDNCAdapterRequest(execution)]]></bpmn2:script> <bpmn2:incoming>SequenceFlow_34</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="InvokeDeleteAAIVfModule" targetRef="EndEvent_9" /> + <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="InvokeDeleteAAIVfModule" targetRef="SetSuccessfulRollbackStatus" /> <bpmn2:endEvent id="EndEvent_9"> - <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0ggp8wz</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1h8ve60</bpmn2:incoming> </bpmn2:endEvent> - <bpmn2:scriptTask id="DeleteAAIVfModulePrep" name="DeleteAAIVfModule
Prep" scriptFormat="groovy"> + <bpmn2:scriptTask id="DeleteAAIVfModulePrep" name="DeleteAAIVfModule Prep" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_24</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing> <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* @@ -173,16 +174,24 @@ dcvfmr.sdncValidateResponse(execution, DCVFMR_DoCreateVfModuleRollbackResponse)] <bpmn2:endEvent id="EndEvent_1"> <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> </bpmn2:endEvent> - <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="CatchExceptions" targetRef="LogSaveWorkflowException" /> + <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="LogSaveWorkflowException" targetRef="EndEvent_1" /> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="CatchExceptions" targetRef="SetFailedRollbackStatus" /> <bpmn2:scriptTask id="LogSaveWorkflowException" name="Log and Save Workflow Exception" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_02fx6z6</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing> <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* def dcvfmr = new DoCreateVfModuleRollback() dcvfmr.logWorkflowException(execution, 'DoCreateVfModuleRollback caught an event') dcvfmr.saveWorkflowException(execution, 'DCVFMR_CaughtWorkflowException1')]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="LogSaveWorkflowException" targetRef="EndEvent_1" /> + <bpmn2:sequenceFlow id="SequenceFlow_02fx6z6" sourceRef="SetFailedRollbackStatus" targetRef="LogSaveWorkflowException" /> + <bpmn2:scriptTask id="SetFailedRollbackStatus" name="Set Failed Rollback Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_02fx6z6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.setFailedRollbackStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> </bpmn2:subProcess> <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> @@ -199,15 +208,15 @@ dcvfmr.saveWorkflowException(execution, 'DCVFMR_CaughtWorkflowException1')]]></b def dcvfmr = new DoCreateVfModuleRollback() dcvfmr.preProcessRequest(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="InitializeVariables" targetRef="ExclusiveGateway_1" /> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="InitializeVariables" targetRef="ExclusiveGateway_1yozzae" /> <bpmn2:exclusiveGateway id="ExclusiveGateway_0a0hroy" name="Rollback Update AAI Generic VNF?" default="SequenceFlow_185bo77"> <bpmn2:incoming>SequenceFlow_0djpj3r</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0n58kg1</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_185bo77</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_111l1he</bpmn2:outgoing> </bpmn2:exclusiveGateway> <bpmn2:scriptTask id="Task_08csf14" name="Delete Network Policies from AAI" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0unumxv</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_0djpj3r</bpmn2:outgoing> <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* def dcvfmr = new DoCreateVfModuleRollback() @@ -248,6 +257,105 @@ dcvfmr.preProcessUpdateAAIGenericVnf(execution)]]></bpmn2:script> <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackVnfAdapterCreate") == "true"}]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:sequenceFlow id="SequenceFlow_03i4czf" name="no" sourceRef="ExclusiveGateway_0uvarlv" targetRef="ExclusiveGateway_3" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1yozzae" name="Skip Rollback?" default="SequenceFlow_11er1t8"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11er1t8</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0ggp8wz</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_11er1t8" name="no" sourceRef="ExclusiveGateway_1yozzae" targetRef="ExclusiveGateway_1" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ggp8wz" name="yes" sourceRef="ExclusiveGateway_1yozzae" targetRef="EndEvent_9"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1938vz9" name="Rollback Network Policies Creation?" default="SequenceFlow_0n58kg1"> + <bpmn2:incoming>SequenceFlow_06rm0hg</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0n58kg1</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0unumxv</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:scriptTask id="PrepareSDNCDeactivateRequest" name="Prepare SDNC Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ugalf8</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.preProcessSDNCDeactivateRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallSDNCDeactivate" name="Call SDNC Adapter Deactivate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DCVFMR_deactivateSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DCVFMR_deactivateSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0ugalf8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0n78x37</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCDeactivateRequest" name="PostProcess SDNC Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0n78x37</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_06rm0hg</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +String response = execution.getVariable("DCVFMR_deactivateSDNCAdapterResponse") +dcvfmr.sdncValidateResponse(execution, response)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0ugalf8" sourceRef="PrepareSDNCDeactivateRequest" targetRef="CallSDNCDeactivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_0n78x37" sourceRef="CallSDNCDeactivate" targetRef="PostProcessSDNCDeactivateRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_06rm0hg" sourceRef="PostProcessSDNCDeactivateRequest" targetRef="ExclusiveGateway_1938vz9" /> + <bpmn2:sequenceFlow id="SequenceFlow_0n58kg1" name="no" sourceRef="ExclusiveGateway_1938vz9" targetRef="ExclusiveGateway_0a0hroy" /> + <bpmn2:sequenceFlow id="SequenceFlow_0unumxv" name="yes" sourceRef="ExclusiveGateway_1938vz9" targetRef="Task_08csf14"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackCreateNetworkPoliciesAAI") == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1iufuuu" sourceRef="PrepareSDNCUnassignRequest" targetRef="CallSDNCAdapterUnassign" /> + <bpmn2:sequenceFlow id="SequenceFlow_1l4n37b" sourceRef="CallSDNCAdapterUnassign" targetRef="PostProcessSDNCUnassignRequest" /> + <bpmn2:scriptTask id="PrepareSDNCUnassignRequest" name="Prepare SDNC Unassign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16ghmax</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1iufuuu</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.preProcessSDNCUnassignRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallSDNCAdapterUnassign" name="Call SDNC Adapter Unassign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DCVFMR_unassignSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DCVFMR_unassignSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1iufuuu</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1l4n37b</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCUnassignRequest" name="PostProcess SDNC Unassign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1l4n37b</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12otwa4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +String response = execution.getVariable("DCVFMR_unassignSDNCAdapterResponse") +dcvfmr.sdncValidateResponse(execution, response)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1h87hhh" name="Rollback 1707 SDNC Activate?" default="SequenceFlow_1rpg6ac"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1rpg6ac</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_16ghmax</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1rpg6ac" name="no" sourceRef="ExclusiveGateway_1h87hhh" targetRef="SDNCAdapterPrep2" /> + <bpmn2:sequenceFlow id="SequenceFlow_16ghmax" name="yes" sourceRef="ExclusiveGateway_1h87hhh" targetRef="PrepareSDNCUnassignRequest"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackSDNCRequestAssign") == "true" && execution.getVariable("sdncVersion") == "1707"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_12otwa4" sourceRef="PostProcessSDNCUnassignRequest" targetRef="ExclusiveGateway_5" /> + <bpmn2:sequenceFlow id="SequenceFlow_1h8ve60" sourceRef="SetSuccessfulRollbackStatus" targetRef="EndEvent_9" /> + <bpmn2:scriptTask id="SetSuccessfulRollbackStatus" name="Set Successful Rollback Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1h8ve60</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.setSuccessfulRollbackStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> </bpmn2:process> <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> <bpmn2:message id="Message_1" name="DoCreateVfModuleRollbackRequest" /> @@ -260,13 +368,13 @@ dcvfmr.preProcessUpdateAAIGenericVnf(execution)]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_22" bpmnElement="InitializeVariables"> - <dc:Bounds x="203" y="78" width="100" height="80" /> + <dc:Bounds x="115" y="78" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_37" targetElement="_BPMNShape_ScriptTask_22"> <di:waypoint xsi:type="dc:Point" x="49" y="118" /> - <di:waypoint xsi:type="dc:Point" x="203" y="118" /> + <di:waypoint xsi:type="dc:Point" x="115" y="118" /> <bpmndi:BPMNLabel> - <dc:Bounds x="74" y="118" width="6" height="6" /> + <dc:Bounds x="82" y="103" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_160" bpmnElement="InvokePrepareUpdateAAIVfModule"> @@ -276,62 +384,62 @@ dcvfmr.preProcessUpdateAAIGenericVnf(execution)]]></bpmn2:script> <dc:Bounds x="552" y="23" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_170" bpmnElement="VNFAdapterPrep"> - <dc:Bounds x="95" y="507" width="100" height="80" /> + <dc:Bounds x="104" y="763" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_13" bpmnElement="InvokeVNFAdapterRestV1"> - <dc:Bounds x="253" y="507" width="100" height="80" /> + <dc:Bounds x="262" y="763" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ScriptTask_170" targetElement="_BPMNShape_CallActivity_13"> - <di:waypoint xsi:type="dc:Point" x="195" y="547" /> - <di:waypoint xsi:type="dc:Point" x="253" y="547" /> + <di:waypoint xsi:type="dc:Point" x="204" y="803" /> + <di:waypoint xsi:type="dc:Point" x="262" y="803" /> <bpmndi:BPMNLabel> - <dc:Bounds x="216" y="547" width="0" height="0" /> + <dc:Bounds x="225" y="803" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_171" bpmnElement="UpdateAAIVfModulePrep"> - <dc:Bounds x="543" y="502" width="100" height="80" /> + <dc:Bounds x="552" y="758" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_14" bpmnElement="InvokeUpdateAAIVfModule"> - <dc:Bounds x="723" y="502" width="100" height="80" /> + <dc:Bounds x="732" y="758" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_172" bpmnElement="SDNCAdapterPrep2"> - <dc:Bounds x="65" y="742" width="100" height="80" /> + <dc:Bounds x="187" y="995" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_15" bpmnElement="InvokeSDNCAdapterV1_2"> - <dc:Bounds x="205" y="742" width="100" height="80" /> + <dc:Bounds x="327" y="995" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_173" bpmnElement="DeleteAAIVfModulePrep"> - <dc:Bounds x="582" y="745" width="100" height="80" /> + <dc:Bounds x="704" y="998" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_16" bpmnElement="InvokeDeleteAAIVfModule"> - <dc:Bounds x="738" y="745" width="100" height="80" /> + <dc:Bounds x="860" y="998" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_32" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_ScriptTask_172" targetElement="_BPMNShape_CallActivity_15"> - <di:waypoint xsi:type="dc:Point" x="165" y="782" /> - <di:waypoint xsi:type="dc:Point" x="205" y="782" /> + <di:waypoint xsi:type="dc:Point" x="287" y="1035" /> + <di:waypoint xsi:type="dc:Point" x="327" y="1035" /> <bpmndi:BPMNLabel> - <dc:Bounds x="185" y="782" width="0" height="0" /> + <dc:Bounds x="307" y="1035" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_34" bpmnElement="SequenceFlow_34" sourceElement="_BPMNShape_ScriptTask_173" targetElement="_BPMNShape_CallActivity_16"> - <di:waypoint xsi:type="dc:Point" x="682" y="785" /> - <di:waypoint xsi:type="dc:Point" x="738" y="785" /> + <di:waypoint xsi:type="dc:Point" x="804" y="1038" /> + <di:waypoint xsi:type="dc:Point" x="860" y="1038" /> <bpmndi:BPMNLabel> - <dc:Bounds x="698" y="785" width="0" height="0" /> + <dc:Bounds x="820" y="1038" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_169" bpmnElement="EndEvent_9"> - <dc:Bounds x="920" y="853" width="36" height="36" /> + <dc:Bounds x="1159" y="1105" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="938" y="894" width="0" height="0" /> + <dc:Bounds x="1177" y="1146" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_CallActivity_16" targetElement="_BPMNShape_EndEvent_169"> - <di:waypoint xsi:type="dc:Point" x="838" y="785" /> - <di:waypoint xsi:type="dc:Point" x="938" y="785" /> - <di:waypoint xsi:type="dc:Point" x="938" y="853" /> + <di:waypoint xsi:type="dc:Point" x="960" y="1038" /> + <di:waypoint xsi:type="dc:Point" x="1078" y="1038" /> + <di:waypoint xsi:type="dc:Point" x="1078" y="1083" /> <bpmndi:BPMNLabel> - <dc:Bounds x="866" y="785" width="0" height="0" /> + <dc:Bounds x="1019" y="1023" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_223" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true"> @@ -341,18 +449,16 @@ dcvfmr.preProcessUpdateAAIGenericVnf(execution)]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_22" targetElement="_BPMNShape_ExclusiveGateway_223"> - <di:waypoint xsi:type="dc:Point" x="303" y="118" /> - <di:waypoint xsi:type="dc:Point" x="383" y="118" /> - <di:waypoint xsi:type="dc:Point" x="383" y="117" /> - <di:waypoint xsi:type="dc:Point" x="404" y="117" /> + <di:waypoint xsi:type="dc:Point" x="215" y="118" /> + <di:waypoint xsi:type="dc:Point" x="278" y="118" /> <bpmndi:BPMNLabel> - <dc:Bounds x="323" y="118" width="6" height="6" /> + <dc:Bounds x="247" y="103" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_224" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true"> <dc:Bounds x="912" y="92" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="892" y="152" width="90" height="25" /> + <dc:Bounds x="897" y="152" width="79" height="24" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ExclusiveGateway_223" targetElement="_BPMNShape_ScriptTask_168"> @@ -388,47 +494,47 @@ dcvfmr.preProcessUpdateAAIGenericVnf(execution)]]></bpmn2:script> <di:waypoint xsi:type="dc:Point" x="937" y="142" /> <di:waypoint xsi:type="dc:Point" x="937" y="229" /> <di:waypoint xsi:type="dc:Point" x="29" y="229" /> - <di:waypoint xsi:type="dc:Point" x="29" y="291" /> - <di:waypoint xsi:type="dc:Point" x="203" y="291" /> + <di:waypoint xsi:type="dc:Point" x="29" y="321" /> + <di:waypoint xsi:type="dc:Point" x="203" y="321" /> <bpmndi:BPMNLabel> - <dc:Bounds x="496" y="233" width="18" height="13" /> + <dc:Bounds x="501" y="235" width="18" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_225" bpmnElement="ExclusiveGateway_3" isMarkerVisible="true"> - <dc:Bounds x="405" y="581" width="50" height="50" /> + <dc:Bounds x="414" y="837" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="389" y="636" width="83" height="25" /> + <dc:Bounds x="398" y="892" width="84" height="26" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_CallActivity_13" targetElement="_BPMNShape_ExclusiveGateway_225"> - <di:waypoint xsi:type="dc:Point" x="353" y="547" /> - <di:waypoint xsi:type="dc:Point" x="374" y="547" /> - <di:waypoint xsi:type="dc:Point" x="430" y="547" /> - <di:waypoint xsi:type="dc:Point" x="430" y="581" /> + <di:waypoint xsi:type="dc:Point" x="362" y="803" /> + <di:waypoint xsi:type="dc:Point" x="383" y="803" /> + <di:waypoint xsi:type="dc:Point" x="439" y="803" /> + <di:waypoint xsi:type="dc:Point" x="439" y="837" /> <bpmndi:BPMNLabel> - <dc:Bounds x="415" y="547" width="0" height="0" /> + <dc:Bounds x="424" y="803" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ExclusiveGateway_225" targetElement="_BPMNShape_ScriptTask_171"> - <di:waypoint xsi:type="dc:Point" x="455" y="606" /> - <di:waypoint xsi:type="dc:Point" x="476" y="606" /> - <di:waypoint xsi:type="dc:Point" x="476" y="542" /> - <di:waypoint xsi:type="dc:Point" x="543" y="542" /> + <di:waypoint xsi:type="dc:Point" x="464" y="862" /> + <di:waypoint xsi:type="dc:Point" x="485" y="862" /> + <di:waypoint xsi:type="dc:Point" x="485" y="798" /> + <di:waypoint xsi:type="dc:Point" x="552" y="798" /> <bpmndi:BPMNLabel> - <dc:Bounds x="498" y="547" width="17" height="13" /> + <dc:Bounds x="507" y="803" width="18" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_171" targetElement="_BPMNShape_CallActivity_14"> - <di:waypoint xsi:type="dc:Point" x="643" y="542" /> - <di:waypoint xsi:type="dc:Point" x="723" y="542" /> + <di:waypoint xsi:type="dc:Point" x="652" y="798" /> + <di:waypoint xsi:type="dc:Point" x="732" y="798" /> <bpmndi:BPMNLabel> - <dc:Bounds x="654" y="542" width="0" height="0" /> + <dc:Bounds x="663" y="798" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_226" bpmnElement="ExclusiveGateway_4" isMarkerVisible="true"> - <dc:Bounds x="903" y="581" width="50" height="50" /> + <dc:Bounds x="912" y="837" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="890" y="636" width="78" height="25" /> + <dc:Bounds x="898" y="892" width="80" height="26" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ExclusiveGateway_224" targetElement="_BPMNShape_ExclusiveGateway_225"> @@ -436,230 +542,380 @@ dcvfmr.preProcessUpdateAAIGenericVnf(execution)]]></bpmn2:script> <di:waypoint xsi:type="dc:Point" x="1025" y="117" /> <di:waypoint xsi:type="dc:Point" x="1025" y="212" /> <di:waypoint xsi:type="dc:Point" x="19" y="212" /> - <di:waypoint xsi:type="dc:Point" x="19" y="357" /> - <di:waypoint xsi:type="dc:Point" x="405" y="357" /> + <di:waypoint xsi:type="dc:Point" x="19" y="382" /> + <di:waypoint xsi:type="dc:Point" x="922" y="382" /> <bpmndi:BPMNLabel> - <dc:Bounds x="501" y="187" width="12" height="13" /> + <dc:Bounds x="501" y="187" width="12" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ExclusiveGateway_225" targetElement="_BPMNShape_ExclusiveGateway_226"> - <di:waypoint xsi:type="dc:Point" x="455" y="606" /> - <di:waypoint xsi:type="dc:Point" x="903" y="606" /> + <di:waypoint xsi:type="dc:Point" x="464" y="862" /> + <di:waypoint xsi:type="dc:Point" x="912" y="862" /> <bpmndi:BPMNLabel> - <dc:Bounds x="665" y="606" width="13" height="13" /> + <dc:Bounds x="675" y="862" width="12" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_CallActivity_14" targetElement="_BPMNShape_ExclusiveGateway_226"> - <di:waypoint xsi:type="dc:Point" x="823" y="542" /> - <di:waypoint xsi:type="dc:Point" x="928" y="542" /> - <di:waypoint xsi:type="dc:Point" x="928" y="581" /> + <di:waypoint xsi:type="dc:Point" x="832" y="798" /> + <di:waypoint xsi:type="dc:Point" x="937" y="798" /> + <di:waypoint xsi:type="dc:Point" x="937" y="837" /> <bpmndi:BPMNLabel> - <dc:Bounds x="901" y="542" width="0" height="0" /> + <dc:Bounds x="910" y="798" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ExclusiveGateway_226" targetElement="_BPMNShape_ScriptTask_172"> - <di:waypoint xsi:type="dc:Point" x="928" y="631" /> - <di:waypoint xsi:type="dc:Point" x="928" y="702" /> - <di:waypoint xsi:type="dc:Point" x="474" y="702" /> - <di:waypoint xsi:type="dc:Point" x="25" y="702" /> - <di:waypoint xsi:type="dc:Point" x="25" y="782" /> - <di:waypoint xsi:type="dc:Point" x="65" y="782" /> + <di:waypoint xsi:type="dc:Point" x="937" y="887" /> + <di:waypoint xsi:type="dc:Point" x="937" y="958" /> + <di:waypoint xsi:type="dc:Point" x="34" y="958" /> + <di:waypoint xsi:type="dc:Point" x="34" y="1103" /> + <di:waypoint xsi:type="dc:Point" x="54" y="1103" /> <bpmndi:BPMNLabel> - <dc:Bounds x="564" y="702" width="17" height="13" /> + <dc:Bounds x="222" y="958" width="18" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_227" bpmnElement="ExclusiveGateway_5" isMarkerVisible="true"> - <dc:Bounds x="467" y="845" width="50" height="50" /> + <dc:Bounds x="589" y="1098" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="456" y="900" width="71" height="25" /> + <dc:Bounds x="578" y="1153" width="71" height="24" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ExclusiveGateway_226" targetElement="_BPMNShape_ExclusiveGateway_227"> - <di:waypoint xsi:type="dc:Point" x="953" y="606" /> - <di:waypoint xsi:type="dc:Point" x="1020" y="606" /> - <di:waypoint xsi:type="dc:Point" x="1020" y="686" /> - <di:waypoint xsi:type="dc:Point" x="16" y="686" /> - <di:waypoint xsi:type="dc:Point" x="16" y="870" /> - <di:waypoint xsi:type="dc:Point" x="467" y="870" /> + <di:waypoint xsi:type="dc:Point" x="962" y="862" /> + <di:waypoint xsi:type="dc:Point" x="1029" y="862" /> + <di:waypoint xsi:type="dc:Point" x="1029" y="942" /> + <di:waypoint xsi:type="dc:Point" x="25" y="942" /> + <di:waypoint xsi:type="dc:Point" x="25" y="1246" /> + <di:waypoint xsi:type="dc:Point" x="614" y="1246" /> + <di:waypoint xsi:type="dc:Point" x="614" y="1148" /> <bpmndi:BPMNLabel> - <dc:Bounds x="786" y="656" width="13" height="13" /> + <dc:Bounds x="796" y="912" width="12" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ExclusiveGateway_227" targetElement="_BPMNShape_EndEvent_169"> - <di:waypoint xsi:type="dc:Point" x="517" y="870" /> - <di:waypoint xsi:type="dc:Point" x="772" y="870" /> - <di:waypoint xsi:type="dc:Point" x="772" y="871" /> - <di:waypoint xsi:type="dc:Point" x="920" y="871" /> + <di:waypoint xsi:type="dc:Point" x="639" y="1123" /> + <di:waypoint xsi:type="dc:Point" x="1028" y="1123" /> <bpmndi:BPMNLabel> - <dc:Bounds x="750" y="870" width="13" height="13" /> + <dc:Bounds x="811" y="1123" width="12" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ExclusiveGateway_227" targetElement="_BPMNShape_ScriptTask_173"> - <di:waypoint xsi:type="dc:Point" x="517" y="870" /> - <di:waypoint xsi:type="dc:Point" x="542" y="870" /> - <di:waypoint xsi:type="dc:Point" x="542" y="814" /> - <di:waypoint xsi:type="dc:Point" x="542" y="785" /> - <di:waypoint xsi:type="dc:Point" x="582" y="785" /> + <di:waypoint xsi:type="dc:Point" x="639" y="1123" /> + <di:waypoint xsi:type="dc:Point" x="664" y="1123" /> + <di:waypoint xsi:type="dc:Point" x="664" y="1067" /> + <di:waypoint xsi:type="dc:Point" x="664" y="1038" /> + <di:waypoint xsi:type="dc:Point" x="704" y="1038" /> <bpmndi:BPMNLabel> - <dc:Bounds x="557" y="791" width="17" height="13" /> + <dc:Bounds x="679" y="1044" width="18" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_255" bpmnElement="ScriptTask_1"> - <dc:Bounds x="339" y="742" width="100" height="80" /> + <dc:Bounds x="461" y="995" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_CallActivity_15" targetElement="_BPMNShape_ScriptTask_255"> - <di:waypoint xsi:type="dc:Point" x="305" y="782" /> - <di:waypoint xsi:type="dc:Point" x="339" y="782" /> + <di:waypoint xsi:type="dc:Point" x="427" y="1035" /> + <di:waypoint xsi:type="dc:Point" x="461" y="1035" /> <bpmndi:BPMNLabel> - <dc:Bounds x="324" y="782" width="0" height="0" /> + <dc:Bounds x="446" y="1035" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_255" targetElement="_BPMNShape_ExclusiveGateway_227"> - <di:waypoint xsi:type="dc:Point" x="439" y="782" /> - <di:waypoint xsi:type="dc:Point" x="492" y="782" /> - <di:waypoint xsi:type="dc:Point" x="492" y="845" /> + <di:waypoint xsi:type="dc:Point" x="561" y="1035" /> + <di:waypoint xsi:type="dc:Point" x="614" y="1035" /> + <di:waypoint xsi:type="dc:Point" x="614" y="1098" /> <bpmndi:BPMNLabel> - <dc:Bounds x="492" y="787" width="0" height="0" /> + <dc:Bounds x="614" y="1040" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_SubProcess_22" bpmnElement="SubProcess_1" isExpanded="true"> - <dc:Bounds x="18" y="1012" width="469" height="150" /> + <dc:Bounds x="0" y="1362" width="699" height="159" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_59" bpmnElement="CatchExceptions"> - <dc:Bounds x="36" y="1063" width="36" height="36" /> + <dc:Bounds x="20" y="1413" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="42" y="1108" width="85" height="12" /> + <dc:Bounds x="26" y="1458" width="86" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_281" bpmnElement="LogSaveWorkflowException"> - <dc:Bounds x="174" y="1041" width="100" height="80" /> + <dc:Bounds x="364" y="1391" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_188" bpmnElement="EndEvent_1"> - <dc:Bounds x="349" y="1062" width="36" height="36" /> + <dc:Bounds x="538" y="1413" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="367" y="1098" width="0" height="0" /> + <dc:Bounds x="556" y="1449" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_55" bpmnElement="BoundaryEvent_1"> - <dc:Bounds x="469" y="1058" width="36" height="36" /> + <dc:Bounds x="681" y="1412" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="487" y="1094" width="0" height="0" /> + <dc:Bounds x="699" y="1448" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_189" bpmnElement="EndEvent_2"> - <dc:Bounds x="593" y="1058" width="36" height="36" /> + <dc:Bounds x="835" y="1412" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="611" y="1099" width="0" height="0" /> + <dc:Bounds x="853" y="1453" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_StartEvent_59" targetElement="_BPMNShape_ScriptTask_281"> - <di:waypoint xsi:type="dc:Point" x="72" y="1081" /> - <di:waypoint xsi:type="dc:Point" x="174" y="1081" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="120" y="1081" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_281" targetElement="_BPMNShape_EndEvent_188"> - <di:waypoint xsi:type="dc:Point" x="274" y="1081" /> - <di:waypoint xsi:type="dc:Point" x="311" y="1081" /> - <di:waypoint xsi:type="dc:Point" x="311" y="1080" /> - <di:waypoint xsi:type="dc:Point" x="349" y="1080" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="326" y="1071" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_BoundaryEvent_55" targetElement="_BPMNShape_EndEvent_189"> - <di:waypoint xsi:type="dc:Point" x="505" y="1076" /> - <di:waypoint xsi:type="dc:Point" x="593" y="1076" /> + <di:waypoint xsi:type="dc:Point" x="717" y="1430" /> + <di:waypoint xsi:type="dc:Point" x="835" y="1430" /> <bpmndi:BPMNLabel> - <dc:Bounds x="550" y="1051" width="0" height="0" /> + <dc:Bounds x="776" y="1415" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ExclusiveGateway_0a0hroy_di" bpmnElement="ExclusiveGateway_0a0hroy" isMarkerVisible="true"> - <dc:Bounds x="404.308277027027" y="332.23902027027026" width="50" height="50" /> + <dc:Bounds x="413" y="588" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="388" y="382.23902027027026" width="84" height="37" /> + <dc:Bounds x="397" y="638" width="84" height="38" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ScriptTask_0mnb4d7_di" bpmnElement="Task_08csf14"> - <dc:Bounds x="203" y="251" width="100" height="80" /> + <dc:Bounds x="212" y="507" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ScriptTask_1shi2a6_di" bpmnElement="Task_18r7u02"> - <dc:Bounds x="543" y="251" width="100" height="80" /> + <dc:Bounds x="552" y="507" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="CallActivity_0zvct4i_di" bpmnElement="Task_01ajtiy"> - <dc:Bounds x="738" y="251" width="100" height="80" /> + <dc:Bounds x="747" y="507" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0djpj3r_di" bpmnElement="SequenceFlow_0djpj3r"> - <di:waypoint xsi:type="dc:Point" x="303" y="291" /> - <di:waypoint xsi:type="dc:Point" x="429" y="291" /> - <di:waypoint xsi:type="dc:Point" x="429" y="333" /> + <di:waypoint xsi:type="dc:Point" x="312" y="547" /> + <di:waypoint xsi:type="dc:Point" x="438" y="547" /> + <di:waypoint xsi:type="dc:Point" x="438" y="589" /> <bpmndi:BPMNLabel> - <dc:Bounds x="366" y="276" width="0" height="0" /> + <dc:Bounds x="375" y="532" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ExclusiveGateway_0uvarlv_di" bpmnElement="ExclusiveGateway_0uvarlv" isMarkerVisible="true"> - <dc:Bounds x="912" y="332.4552364864865" width="50" height="50" /> + <dc:Bounds x="921" y="588" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="897" y="382.4552364864865" width="80" height="25" /> + <dc:Bounds x="907" y="638" width="78" height="26" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_185bo77_di" bpmnElement="SequenceFlow_185bo77"> - <di:waypoint xsi:type="dc:Point" x="454" y="357" /> - <di:waypoint xsi:type="dc:Point" x="683" y="357" /> - <di:waypoint xsi:type="dc:Point" x="683" y="357" /> - <di:waypoint xsi:type="dc:Point" x="912" y="357" /> + <di:waypoint xsi:type="dc:Point" x="463" y="613" /> + <di:waypoint xsi:type="dc:Point" x="692" y="613" /> + <di:waypoint xsi:type="dc:Point" x="692" y="613" /> + <di:waypoint xsi:type="dc:Point" x="921" y="613" /> <bpmndi:BPMNLabel> - <dc:Bounds x="692" y="357" width="12" height="13" /> + <dc:Bounds x="701" y="613" width="12" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_111l1he_di" bpmnElement="SequenceFlow_111l1he"> - <di:waypoint xsi:type="dc:Point" x="454" y="357" /> - <di:waypoint xsi:type="dc:Point" x="484" y="357" /> - <di:waypoint xsi:type="dc:Point" x="484" y="291" /> - <di:waypoint xsi:type="dc:Point" x="543" y="291" /> + <di:waypoint xsi:type="dc:Point" x="463" y="613" /> + <di:waypoint xsi:type="dc:Point" x="493" y="613" /> + <di:waypoint xsi:type="dc:Point" x="493" y="547" /> + <di:waypoint xsi:type="dc:Point" x="552" y="547" /> <bpmndi:BPMNLabel> - <dc:Bounds x="499" y="297" width="18" height="13" /> + <dc:Bounds x="508" y="553" width="18" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_0ca4brn_di" bpmnElement="SequenceFlow_0ca4brn"> - <di:waypoint xsi:type="dc:Point" x="643" y="291" /> - <di:waypoint xsi:type="dc:Point" x="684" y="291" /> - <di:waypoint xsi:type="dc:Point" x="684" y="291" /> - <di:waypoint xsi:type="dc:Point" x="738" y="291" /> + <di:waypoint xsi:type="dc:Point" x="652" y="547" /> + <di:waypoint xsi:type="dc:Point" x="693" y="547" /> + <di:waypoint xsi:type="dc:Point" x="693" y="547" /> + <di:waypoint xsi:type="dc:Point" x="747" y="547" /> <bpmndi:BPMNLabel> - <dc:Bounds x="699" y="291" width="0" height="0" /> + <dc:Bounds x="708" y="547" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_19r2uus_di" bpmnElement="SequenceFlow_19r2uus"> - <di:waypoint xsi:type="dc:Point" x="838" y="291" /> - <di:waypoint xsi:type="dc:Point" x="937" y="291" /> - <di:waypoint xsi:type="dc:Point" x="937" y="332" /> + <di:waypoint xsi:type="dc:Point" x="847" y="547" /> + <di:waypoint xsi:type="dc:Point" x="946" y="547" /> + <di:waypoint xsi:type="dc:Point" x="946" y="588" /> <bpmndi:BPMNLabel> - <dc:Bounds x="888" y="276" width="0" height="0" /> + <dc:Bounds x="897" y="532" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_1p0v6yk_di" bpmnElement="SequenceFlow_1p0v6yk"> - <di:waypoint xsi:type="dc:Point" x="937" y="382" /> - <di:waypoint xsi:type="dc:Point" x="937" y="468" /> - <di:waypoint xsi:type="dc:Point" x="38" y="468" /> - <di:waypoint xsi:type="dc:Point" x="38" y="547" /> - <di:waypoint xsi:type="dc:Point" x="95" y="547" /> + <di:waypoint xsi:type="dc:Point" x="946" y="638" /> + <di:waypoint xsi:type="dc:Point" x="946" y="724" /> + <di:waypoint xsi:type="dc:Point" x="47" y="724" /> + <di:waypoint xsi:type="dc:Point" x="47" y="803" /> + <di:waypoint xsi:type="dc:Point" x="104" y="803" /> <bpmndi:BPMNLabel> - <dc:Bounds x="498" y="476" width="18" height="13" /> + <dc:Bounds x="507" y="732" width="18" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_03i4czf_di" bpmnElement="SequenceFlow_03i4czf"> - <di:waypoint xsi:type="dc:Point" x="962" y="357" /> - <di:waypoint xsi:type="dc:Point" x="1027" y="357" /> - <di:waypoint xsi:type="dc:Point" x="1027" y="453" /> - <di:waypoint xsi:type="dc:Point" x="21" y="453" /> - <di:waypoint xsi:type="dc:Point" x="21" y="606" /> - <di:waypoint xsi:type="dc:Point" x="405" y="606" /> + <di:waypoint xsi:type="dc:Point" x="971" y="613" /> + <di:waypoint xsi:type="dc:Point" x="1036" y="613" /> + <di:waypoint xsi:type="dc:Point" x="1036" y="709" /> + <di:waypoint xsi:type="dc:Point" x="30" y="709" /> + <di:waypoint xsi:type="dc:Point" x="30" y="862" /> + <di:waypoint xsi:type="dc:Point" x="414" y="862" /> <bpmndi:BPMNLabel> - <dc:Bounds x="499" y="427" width="12" height="13" /> + <dc:Bounds x="508" y="683" width="12" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1yozzae_di" bpmnElement="ExclusiveGateway_1yozzae" isMarkerVisible="true"> + <dc:Bounds x="278" y="93" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="267" y="143" width="72" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_11er1t8_di" bpmnElement="SequenceFlow_11er1t8"> + <di:waypoint xsi:type="dc:Point" x="328" y="118" /> + <di:waypoint xsi:type="dc:Point" x="404" y="117" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="360" y="93.5" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ggp8wz_di" bpmnElement="SequenceFlow_0ggp8wz"> + <di:waypoint xsi:type="dc:Point" x="303" y="93" /> + <di:waypoint xsi:type="dc:Point" x="303" y="-11" /> + <di:waypoint xsi:type="dc:Point" x="1152" y="-11" /> + <di:waypoint xsi:type="dc:Point" x="1177" y="1105" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="719" y="-26" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_281" targetElement="_BPMNShape_EndEvent_188"> + <di:waypoint xsi:type="dc:Point" x="464" y="1431" /> + <di:waypoint xsi:type="dc:Point" x="538" y="1431" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="501" y="1416" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_StartEvent_59" targetElement="_BPMNShape_ScriptTask_281"> + <di:waypoint xsi:type="dc:Point" x="56" y="1431" /> + <di:waypoint xsi:type="dc:Point" x="171" y="1431" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="114" y="1416" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1938vz9_di" bpmnElement="ExclusiveGateway_1938vz9" isMarkerVisible="true"> + <dc:Bounds x="921.561377245509" y="357" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="902" y="407" width="90" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_17dmaj7_di" bpmnElement="PrepareSDNCDeactivateRequest"> + <dc:Bounds x="204" y="281" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0ouj5y6_di" bpmnElement="CallSDNCDeactivate"> + <dc:Bounds x="401" y="280" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1fmh02z_di" bpmnElement="PostProcessSDNCDeactivateRequest"> + <dc:Bounds x="613" y="280" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ugalf8_di" bpmnElement="SequenceFlow_0ugalf8"> + <di:waypoint xsi:type="dc:Point" x="304" y="321" /> + <di:waypoint xsi:type="dc:Point" x="401" y="320" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="353" y="295.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0n78x37_di" bpmnElement="SequenceFlow_0n78x37"> + <di:waypoint xsi:type="dc:Point" x="501" y="320" /> + <di:waypoint xsi:type="dc:Point" x="613" y="320" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="557" y="295" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06rm0hg_di" bpmnElement="SequenceFlow_06rm0hg"> + <di:waypoint xsi:type="dc:Point" x="713" y="320" /> + <di:waypoint xsi:type="dc:Point" x="947" y="320" /> + <di:waypoint xsi:type="dc:Point" x="947" y="357" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="830" y="305" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0n58kg1_di" bpmnElement="SequenceFlow_0n58kg1"> + <di:waypoint xsi:type="dc:Point" x="972" y="382" /> + <di:waypoint xsi:type="dc:Point" x="1033" y="382" /> + <di:waypoint xsi:type="dc:Point" x="1033" y="466" /> + <di:waypoint xsi:type="dc:Point" x="14" y="466" /> + <di:waypoint xsi:type="dc:Point" x="14" y="613" /> + <di:waypoint xsi:type="dc:Point" x="413" y="613" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="508" y="444" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0unumxv_di" bpmnElement="SequenceFlow_0unumxv"> + <di:waypoint xsi:type="dc:Point" x="947" y="407" /> + <di:waypoint xsi:type="dc:Point" x="947" y="482" /> + <di:waypoint xsi:type="dc:Point" x="32" y="482" /> + <di:waypoint xsi:type="dc:Point" x="32" y="547" /> + <di:waypoint xsi:type="dc:Point" x="211" y="547" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="506" y="493" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1iufuuu_di" bpmnElement="SequenceFlow_1iufuuu"> + <di:waypoint xsi:type="dc:Point" x="287" y="1177" /> + <di:waypoint xsi:type="dc:Point" x="328" y="1177" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="308" y="1162" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1l4n37b_di" bpmnElement="SequenceFlow_1l4n37b"> + <di:waypoint xsi:type="dc:Point" x="428" y="1177" /> + <di:waypoint xsi:type="dc:Point" x="469" y="1176" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="449" y="1161.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0qvylv2_di" bpmnElement="PrepareSDNCUnassignRequest"> + <dc:Bounds x="187" y="1138" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1stidyk_di" bpmnElement="CallSDNCAdapterUnassign"> + <dc:Bounds x="328" y="1137" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1ub9z2k_di" bpmnElement="PostProcessSDNCUnassignRequest"> + <dc:Bounds x="469" y="1136" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1h87hhh_di" bpmnElement="ExclusiveGateway_1h87hhh" isMarkerVisible="true"> + <dc:Bounds x="55.989141164856846" y="1077.9259624876604" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="41" y="1127.9259624876604" width="79" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rpg6ac_di" bpmnElement="SequenceFlow_1rpg6ac"> + <di:waypoint xsi:type="dc:Point" x="81" y="1078" /> + <di:waypoint xsi:type="dc:Point" x="81" y="1035" /> + <di:waypoint xsi:type="dc:Point" x="187" y="1035" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="100" y="1010.5" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_16ghmax_di" bpmnElement="SequenceFlow_16ghmax"> + <di:waypoint xsi:type="dc:Point" x="81" y="1128" /> + <di:waypoint xsi:type="dc:Point" x="81" y="1178" /> + <di:waypoint xsi:type="dc:Point" x="187" y="1178" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="92" y="1182" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12otwa4_di" bpmnElement="SequenceFlow_12otwa4"> + <di:waypoint xsi:type="dc:Point" x="569" y="1176" /> + <di:waypoint xsi:type="dc:Point" x="579" y="1176" /> + <di:waypoint xsi:type="dc:Point" x="579" y="1123" /> + <di:waypoint xsi:type="dc:Point" x="589" y="1123" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="594" y="1139.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1h8ve60_di" bpmnElement="SequenceFlow_1h8ve60"> + <di:waypoint xsi:type="dc:Point" x="1128" y="1123" /> + <di:waypoint xsi:type="dc:Point" x="1159" y="1123" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1144" y="1108" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0lrbhgj_di" bpmnElement="SetSuccessfulRollbackStatus"> + <dc:Bounds x="1028" y="1083" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_02fx6z6_di" bpmnElement="SequenceFlow_02fx6z6"> + <di:waypoint xsi:type="dc:Point" x="271" y="1431" /> + <di:waypoint xsi:type="dc:Point" x="364" y="1431" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="318" y="1416" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0cd144f_di" bpmnElement="SetFailedRollbackStatus"> + <dc:Bounds x="171" y="1391" width="100" height="80" /> + </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> -</bpmn2:definitions> +</bpmn2:definitions>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleVolumeRollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleVolumeRollback.bpmn new file mode 100644 index 0000000000..fd2889f642 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleVolumeRollback.bpmn @@ -0,0 +1,247 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0"> + <bpmn:process id="DoCreateVfModuleVolumeRollback" name="DoCreateVfModuleVolumeRollback" isExecutable="true"> + <bpmn:subProcess id="SubProcess_1p4663w" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:scriptTask id="ScriptTask_0by1uwk" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0xktw7v</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0soe5t3</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeRollback = new DoCreateVfModuleVolumeRollback() +doCreateVfModuleVolumeRollback.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:startEvent id="StartEvent_1j0eixl"> + <bpmn:outgoing>SequenceFlow_0xktw7v</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_0jxh015"> + <bpmn:incoming>SequenceFlow_0soe5t3</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0xktw7v" name="" sourceRef="StartEvent_1j0eixl" targetRef="ScriptTask_0by1uwk" /> + <bpmn:sequenceFlow id="SequenceFlow_0soe5t3" name="" sourceRef="ScriptTask_0by1uwk" targetRef="EndEvent_0jxh015" /> + </bpmn:subProcess> + <bpmn:startEvent id="StartEvent_0128tti" name="Fault Start"> + <bpmn:outgoing>SequenceFlow_0qreiaa</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:exclusiveGateway id="ExclusiveGateway_128ycfs" name="Is RollBack On?" default="SequenceFlow_1wberw3"> + <bpmn:incoming>SequenceFlow_1xah9es</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_11y7faf</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1wberw3</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:exclusiveGateway id="ExclusiveGateway_03qps8q" name="Is Vnf Ok?" default="SequenceFlow_10dawse"> + <bpmn:incoming>SequenceFlow_11y7faf</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0h7k68j</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_10dawse</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:callActivity id="CallActivity_03pmk7v" name="Call VNF Adapter Rollback" calledElement="vnfAdapterRestV1"> + <bpmn:extensionElements> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="DCVFMODVOLRBK_rollbackVnfARequest" target="vnfAdapterRestV1Request" /> + <camunda:out source="workflowException" target="workflowException" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0h7k68j</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0bv04qn</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_0h7k68j" sourceRef="ExclusiveGateway_03qps8q" targetRef="CallActivity_03pmk7v"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMODVOLRBK_isCreateVnfRollbackNeeded") == "true"}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:scriptTask id="ScriptTask_1numqm0" name="Delete Volume Group" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0bv04qn</bpmn:incoming> + <bpmn:incoming>SequenceFlow_17k6oyz</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_13nb3n0</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeRollback = new DoCreateVfModuleVolumeRollback() +doCreateVfModuleVolumeRollback.executeMethod('callRESTDeleteAAIVolumeGroup', execution, isDebugLogEnabled)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0bv04qn" sourceRef="CallActivity_03pmk7v" targetRef="ScriptTask_1numqm0" /> + <bpmn:sequenceFlow id="SequenceFlow_10dawse" sourceRef="ExclusiveGateway_03qps8q" targetRef="ExclusiveGateway_1dzejtx" /> + <bpmn:sequenceFlow id="SequenceFlow_13nb3n0" sourceRef="ScriptTask_1numqm0" targetRef="EndEvent_11duf9p" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_1dzejtx" name="Is AAI Ok?" default="SequenceFlow_1do0853"> + <bpmn:incoming>SequenceFlow_10dawse</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_17k6oyz</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1do0853</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_17k6oyz" sourceRef="ExclusiveGateway_1dzejtx" targetRef="ScriptTask_1numqm0"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMODVOLRBK_isAAIRollbackNeeded" ) == "true"}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1do0853" sourceRef="ExclusiveGateway_1dzejtx" targetRef="EndEvent_1ddbl39" /> + <bpmn:endEvent id="EndEvent_1ddbl39"> + <bpmn:incoming>SequenceFlow_1do0853</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1wberw3</bpmn:incoming> + </bpmn:endEvent> + <bpmn:endEvent id="EndEvent_11duf9p"> + <bpmn:incoming>SequenceFlow_13nb3n0</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_11y7faf" sourceRef="ExclusiveGateway_128ycfs" targetRef="ExclusiveGateway_03qps8q"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMODVOLRBK_backoutOnFailure") != "false"}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:scriptTask id="ScriptTask_0uhy9lc" name="Pre process" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0qreiaa</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1xah9es</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeRollback = new DoCreateVfModuleVolumeRollback() +doCreateVfModuleVolumeRollback.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1wberw3" sourceRef="ExclusiveGateway_128ycfs" targetRef="EndEvent_1ddbl39" /> + <bpmn:sequenceFlow id="SequenceFlow_0qreiaa" sourceRef="StartEvent_0128tti" targetRef="ScriptTask_0uhy9lc" /> + <bpmn:sequenceFlow id="SequenceFlow_1xah9es" sourceRef="ScriptTask_0uhy9lc" targetRef="ExclusiveGateway_128ycfs" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVfModuleVolumeRollback"> + <bpmndi:BPMNShape id="SubProcess_1p4663w_di" bpmnElement="SubProcess_1p4663w" isExpanded="true"> + <dc:Bounds x="293" y="165" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0by1uwk_di" bpmnElement="ScriptTask_0by1uwk"> + <dc:Bounds x="441" y="220" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1j0eixl_di" bpmnElement="StartEvent_1j0eixl"> + <dc:Bounds x="326" y="242" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="344" y="283" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0jxh015_di" bpmnElement="EndEvent_0jxh015"> + <dc:Bounds x="602" y="242" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="620" y="283" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xktw7v_di" bpmnElement="SequenceFlow_0xktw7v"> + <di:waypoint xsi:type="dc:Point" x="362" y="260" /> + <di:waypoint xsi:type="dc:Point" x="441" y="260" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="404" y="260" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0soe5t3_di" bpmnElement="SequenceFlow_0soe5t3"> + <di:waypoint xsi:type="dc:Point" x="541" y="260" /> + <di:waypoint xsi:type="dc:Point" x="602" y="260" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="576" y="260" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="StartEvent_0128tti_di" bpmnElement="StartEvent_0128tti"> + <dc:Bounds x="173" y="-93" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="167" y="-52" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_128ycfs_di" bpmnElement="ExclusiveGateway_128ycfs" isMarkerVisible="true"> + <dc:Bounds x="465" y="-100" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="450" y="-50" width="79" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_03qps8q_di" bpmnElement="ExclusiveGateway_03qps8q" isMarkerVisible="true"> + <dc:Bounds x="607" y="-100" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="606" y="-50" width="52" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_03pmk7v_di" bpmnElement="CallActivity_03pmk7v"> + <dc:Bounds x="786" y="-115" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0h7k68j_di" bpmnElement="SequenceFlow_0h7k68j"> + <di:waypoint xsi:type="dc:Point" x="657" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="786" y="-75" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="722" y="-90" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1numqm0_di" bpmnElement="ScriptTask_1numqm0"> + <dc:Bounds x="998" y="-115" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0bv04qn_di" bpmnElement="SequenceFlow_0bv04qn"> + <di:waypoint xsi:type="dc:Point" x="886" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="937" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="937" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="998" y="-75" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="952" y="-75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_10dawse_di" bpmnElement="SequenceFlow_10dawse"> + <di:waypoint xsi:type="dc:Point" x="632" y="-50" /> + <di:waypoint xsi:type="dc:Point" x="632" y="40" /> + <di:waypoint xsi:type="dc:Point" x="811" y="40" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="648" y="-5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_13nb3n0_di" bpmnElement="SequenceFlow_13nb3n0"> + <di:waypoint xsi:type="dc:Point" x="1098" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="1151" y="-75" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1125" y="-90" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1dzejtx_di" bpmnElement="ExclusiveGateway_1dzejtx" isMarkerVisible="true"> + <dc:Bounds x="811" y="15" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="809" y="65" width="53" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_17k6oyz_di" bpmnElement="SequenceFlow_17k6oyz"> + <di:waypoint xsi:type="dc:Point" x="861" y="40" /> + <di:waypoint xsi:type="dc:Point" x="1048" y="40" /> + <di:waypoint xsi:type="dc:Point" x="1048" y="-35" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="955" y="25" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1do0853_di" bpmnElement="SequenceFlow_1do0853"> + <di:waypoint xsi:type="dc:Point" x="836" y="65" /> + <di:waypoint xsi:type="dc:Point" x="836" y="99" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="851" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0le8wga_di" bpmnElement="EndEvent_1ddbl39"> + <dc:Bounds x="818" y="99" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="836" y="135" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1iibjyo_di" bpmnElement="EndEvent_11duf9p"> + <dc:Bounds x="1151" y="-93" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1169" y="-57" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_11y7faf_di" bpmnElement="SequenceFlow_11y7faf"> + <di:waypoint xsi:type="dc:Point" x="515" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="607" y="-75" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="561" y="-90" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0uhy9lc_di" bpmnElement="ScriptTask_0uhy9lc"> + <dc:Bounds x="288" y="-115" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1wberw3_di" bpmnElement="SequenceFlow_1wberw3"> + <di:waypoint xsi:type="dc:Point" x="490" y="-50" /> + <di:waypoint xsi:type="dc:Point" x="490" y="117" /> + <di:waypoint xsi:type="dc:Point" x="818" y="117" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="505" y="23.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0qreiaa_di" bpmnElement="SequenceFlow_0qreiaa"> + <di:waypoint xsi:type="dc:Point" x="209" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="288" y="-75" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="249" y="-100" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1xah9es_di" bpmnElement="SequenceFlow_1xah9es"> + <di:waypoint xsi:type="dc:Point" x="388" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="465" y="-75" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="427" y="-100" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleVolumeV1.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleVolumeV1.bpmn deleted file mode 100644 index de88284db6..0000000000 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleVolumeV1.bpmn +++ /dev/null @@ -1,675 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="_FhrCQG2BEeaNdqnn65BT4A" exporter="camunda modeler" exporterVersion="2.7.0" targetNamespace="http://camunda.org/schema/1.0/bpmn"> - <bpmn2:process id="DoCreateVfModuleVolumeV1" name="DoCreateVfModuleVolumeV1" isExecutable="true"> - <bpmn2:scriptTask id="ScriptTask_preProcessRequest" name="Preprocess Request" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def doCreateVfModuleVolumeV1 = new DoCreateVfModuleVolumeV1() -doCreateVfModuleVolumeV1.executeMethod('preProcessRequest', execution, isDebugLogEnabled)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ScriptTask_preProcessRequest" targetRef="ScriptTask_callRestAaiCloudRegion"/> - <bpmn2:scriptTask id="ScriptTask_callRestAaiCloudRegion" name="Call REST AAI Cloud Region" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def doCreateVfModuleVolumeV1 = new DoCreateVfModuleVolumeV1() -doCreateVfModuleVolumeV1.executeMethod('callRESTQueryAAICloudRegion', execution, isDebugLogEnabled)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="ScriptTask_callRestAaiCloudRegion" targetRef="ScriptTask_callRestAaiQueryGenericVnf"/> - <bpmn2:scriptTask id="ScriptTask_createVolGrpExistsException" name="Build Workflow Exception" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_volGrpName404No</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def doCreateVfModuleVolumeV1 = new DoCreateVfModuleVolumeV1() -doCreateVfModuleVolumeV1.executeMethod('buildWorkflowException', execution, 2500, "Volume group $DCVFMODVOLV1_volumeGroupName already exists in the system.", isDebugLogEnabled)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_createVolGrpExistsException" targetRef="EndEvent_6"/> - <bpmn2:exclusiveGateway id="ExclusiveGateway_aaiReturnCode404" name="AAI Return Code is 404?" default="SequenceFlow_volGrpName404No"> - <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_volGrpName404Yes</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_volGrpName404No</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_volGrpName404Yes" name="Yes" sourceRef="ExclusiveGateway_aaiReturnCode404" targetRef="ScriptTask_callRestAaiCreateVolumeGrp"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{DCVFMODVOLV1_AaiReturnCode == '404'}</bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_volGrpName404No" name="No" sourceRef="ExclusiveGateway_aaiReturnCode404" targetRef="ScriptTask_createVolGrpExistsException"/> - <bpmn2:scriptTask id="ScriptTask_callRestAaiQueryGenericVnf" name="Call REST AAI Query Generic VNF" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def doCreateVfModuleVolumeV1 = new DoCreateVfModuleVolumeV1() -doCreateVfModuleVolumeV1.executeMethod('callRESTQueryAAIGenericVnf', execution, isDebugLogEnabled)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_callRestAaiQueryGenericVnf" targetRef="ScriptTask_callRestAaiQueryVolGrpName"/> - <bpmn2:boundaryEvent id="BoundaryEvent_catchAaiError" name="" attachedToRef="ScriptTask_callRestAaiQueryVolGrpName"> - <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_3" errorRef="Error_1"/> - </bpmn2:boundaryEvent> - <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="BoundaryEvent_catchAaiError" targetRef="ExclusiveGateway_aaiReturnCode404"/> - <bpmn2:scriptTask id="ScriptTask_callRestAaiQueryVolGrpName" name="Call REST AAI Query Volume Grp Name" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def doCreateVfModuleVolumeV1 = new DoCreateVfModuleVolumeV1() -doCreateVfModuleVolumeV1.executeMethod('callRESTQueryAAIVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_callRestAaiQueryVolGrpName" targetRef="ExclusiveGateway_aaiReturnCode404"/> - <bpmn2:scriptTask id="ScriptTask_callRestAaiCreateVolumeGrp" name="Call REST AAI Create Volume Group" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_volGrpName404Yes</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def doCreateVfModuleVolumeV1 = new DoCreateVfModuleVolumeV1() -doCreateVfModuleVolumeV1.executeMethod('callRESTCreateAAIVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="ScriptTask_callRestAaiCreateVolumeGrp" targetRef="ScriptTask_prepareVnfAdapterCreate"/> - <bpmn2:callActivity id="CallActivity_callVnfAdapterCreate" name="Call VNF Adapter Create" calledElement="vnfAdapterRestV1"> - <bpmn2:extensionElements> - <camunda:in source="DCVFMODVOLV1_createVnfARequest" target="vnfAdapterRestV1Request"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:out source="vnfAdapterRestV1Response" target="DCVFMODVOLV1_createVnfAResponse"/> - <camunda:out source="WorkflowException" target="WorkflowException"/> - <camunda:out source="VNFREST_vnfAdapterStatusCode" target="DCVFMODVOLV1_createVnfAReturnCode"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> - <camunda:out source="VNFREST_SuccessIndicator" target="VNFREST_SuccessIndicator"/> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> - </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="CallActivity_callVnfAdapterCreate" targetRef="ExclusiveGateway_isVnfAdaptyerCallSuccess"/> - <bpmn2:boundaryEvent id="BoundaryEvent_5" name="" attachedToRef="ScriptTask_callRestAaiVolumeGrp"> - <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_5"/> - </bpmn2:boundaryEvent> - <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="BoundaryEvent_5" targetRef="ExclusiveGateway_isRollbakcEnabled1"/> - <bpmn2:exclusiveGateway id="ExclusiveGateway_isVnfAdaptyerCallSuccess" name="Is VNF Adapter call success?" default="SequenceFlow_vnfAdapterFail"> - <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_vnfAdapterFail</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_vnfAdapterSuccess</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_vnfAdapterFail" name="No" sourceRef="ExclusiveGateway_isVnfAdaptyerCallSuccess" targetRef="ExclusiveGateway_isRollbackEnabled2"/> - <bpmn2:sequenceFlow id="SequenceFlow_vnfAdapterSuccess" name="Yes" sourceRef="ExclusiveGateway_isVnfAdaptyerCallSuccess" targetRef="ScriptTask_callRestAaiRequeryVolGrpNm"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{VNFREST_SuccessIndicator == true}</bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:scriptTask id="ScriptTask_callRestAaiRequeryVolGrpNm" name="Call REST AAI Requery Volume Group Name" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_vnfAdapterSuccess</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def doCreateVfModuleVolumeV1 = new DoCreateVfModuleVolumeV1() -doCreateVfModuleVolumeV1.executeMethod('callRESTQueryAAIVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_28" name="" sourceRef="ScriptTask_callRestAaiRequeryVolGrpNm" targetRef="ScriptTask_callRestAaiVolumeGrp"/> - <bpmn2:boundaryEvent id="BoundaryEvent_compensateCreateVolGrp" name="" attachedToRef="ScriptTask_callRestAaiCreateVolumeGrp"> - <bpmn2:compensateEventDefinition id="CompensateEventDefinition_2" waitForCompletion="true"/> - </bpmn2:boundaryEvent> - <bpmn2:scriptTask id="ScriptTask_prepareDbInfraRequest" name="Set Success Indicator" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def doCreateVfModuleVolumeV1 = new DoCreateVfModuleVolumeV1() -doCreateVfModuleVolumeV1.executeMethod('setSuccessIndicator', execution, true)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ScriptTask_prepareDbInfraRequest" targetRef="EndEvent_1"/> - <bpmn2:scriptTask id="ScriptTask_deleteVolumeGroup" name="Delete Volume Group" isForCompensation="true" scriptFormat="groovy"> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def doCreateVfModuleVolumeV1 = new DoCreateVfModuleVolumeV1() -doCreateVfModuleVolumeV1.executeMethod('callRESTDeleteAAIVolumeGroup', execution, isDebugLogEnabled)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:scriptTask id="ScriptTask_callRestAaiVolumeGrp" name="Call REST AAI Update Volume Group" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_28</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def doCreateVfModuleVolumeV1 = new DoCreateVfModuleVolumeV1() -doCreateVfModuleVolumeV1.executeMethod('callRESTUpdateCreatedVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_callRestAaiVolumeGrp" targetRef="ScriptTask_prepareDbInfraRequest"/> - <bpmn2:endEvent id="EndEvent_1" name="End"> - <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> - </bpmn2:endEvent> - <bpmn2:scriptTask id="ScriptTask_prepareVnfAdapterCreate" name="Prepare VNF Adapter Create Request" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def doCreateVfModuleVolumeV1 = new DoCreateVfModuleVolumeV1() -doCreateVfModuleVolumeV1.executeMethod('prepareVnfAdapterCreateRequest', execution, isDebugLogEnabled)]]></bpmn2:script> - </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="ScriptTask_prepareVnfAdapterCreate" targetRef="CallActivity_callVnfAdapterCreate"/> - <bpmn2:boundaryEvent id="BoundaryEvent_compensateVnfAdapterCreate" name="" attachedToRef="CallActivity_callVnfAdapterCreate"> - <bpmn2:compensateEventDefinition id="CompensateEventDefinition_1" waitForCompletion="true"/> - </bpmn2:boundaryEvent> - <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_rollbackAaiCreateVolumeGroup" name="Rollback AAI Create Volume Group"> - <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> - <bpmn2:compensateEventDefinition id="CompensateEventDefinition_rollbackAaiCreateVolumeGroup" activityRef="ScriptTask_callRestAaiCreateVolumeGrp" waitForCompletion="true"/> - </bpmn2:intermediateThrowEvent> - <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="IntermediateThrowEvent_rollbackAaiCreateVolumeGroup" targetRef="EndEvent_4"/> - <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_rollbackVnfAdapterCreate" name="Rollback VNF Adapter Create"> - <bpmn2:incoming>SequenceFlow_rollbackIsEnabled1</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> - <bpmn2:compensateEventDefinition id="CompensateEventDefinition_3" activityRef="CallActivity_callVnfAdapterCreate" waitForCompletion="true"/> - </bpmn2:intermediateThrowEvent> - <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="IntermediateThrowEvent_rollbackVnfAdapterCreate" targetRef="IntermediateThrowEvent_rollbackAaiCreateVolumeGroup"/> - <bpmn2:exclusiveGateway id="ExclusiveGateway_isRollbakcEnabled1" name="Is rollback enabled?" default="SequenceFlow_rollbackIsNotEnabled1"> - <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_rollbackIsEnabled1</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_rollbackIsNotEnabled1</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_rollbackIsEnabled1" name="Yes" sourceRef="ExclusiveGateway_isRollbakcEnabled1" targetRef="IntermediateThrowEvent_rollbackVnfAdapterCreate"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{DCVFMODVOLV1_rollbackEnabled == true}</bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_rollbackIsNotEnabled1" name="No" sourceRef="ExclusiveGateway_isRollbakcEnabled1" targetRef="EndEvent_4"/> - <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_rollbackCreateVolGrpFromCallVnf" name="Rollback AAI Create Volume Group"> - <bpmn2:incoming>SequenceFlow_rollbackIsEnabled2</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> - <bpmn2:compensateEventDefinition id="CompensateEventDefinition_rollbackCreateVolGrpName1" activityRef="ScriptTask_callRestAaiCreateVolumeGrp" waitForCompletion="true"/> - </bpmn2:intermediateThrowEvent> - <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="IntermediateThrowEvent_rollbackCreateVolGrpFromCallVnf" targetRef="EndEvent_5"/> - <bpmn2:exclusiveGateway id="ExclusiveGateway_isRollbackEnabled2" name="Is rollback enabled?" default="SequenceFlow_rollbackIsNotEnabled2"> - <bpmn2:incoming>SequenceFlow_vnfAdapterFail</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_rollbackIsEnabled2</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_rollbackIsNotEnabled2</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_rollbackIsEnabled2" name="Yes" sourceRef="ExclusiveGateway_isRollbackEnabled2" targetRef="IntermediateThrowEvent_rollbackCreateVolGrpFromCallVnf"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{DCVFMODVOLV1_rollbackEnabled == true}</bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_rollbackIsNotEnabled2" name="No" sourceRef="ExclusiveGateway_isRollbackEnabled2" targetRef="EndEvent_5"/> - <bpmn2:startEvent id="StartEvent_doCreateVfModuleVolume" name="Start"> - <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> - </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_doCreateVfModuleVolume" targetRef="ScriptTask_preProcessRequest"/> - <bpmn2:callActivity id="CallActivity_callVnfAdapterCallback" name="Call VNF Adapter Rollback" isForCompensation="true" calledElement="vnfAdapterRestV1"> - <bpmn2:extensionElements> - <camunda:in source="DCVFMODVOLV1_rollbackVnfARequest" target="vnfAdapterRestV1Request"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:out source="vnfAdapterRestV1Response" target="CCINVOL_rollbackVnfAResponse"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> - </bpmn2:extensionElements> - </bpmn2:callActivity> - <bpmn2:subProcess id="SubProcess_catchTriggeredException" name="Catch Triggered MsoException" triggeredByEvent="true"> - <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_rollbackAaiCreateVolume21" name="Rollback Create AAi Volume Group"> - <bpmn2:incoming>SequenceFlow_rollbackEnabledYes91</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing> - <bpmn2:compensateEventDefinition id="CompensateEventDefinition_rollbackdreateVolume21" activityRef="ScriptTask_callRestAaiCreateVolumeGrp" waitForCompletion="true"/> - </bpmn2:intermediateThrowEvent> - <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="IntermediateThrowEvent_rollbackAaiCreateVolume21" targetRef="EndEvent_3"/> - <bpmn2:exclusiveGateway id="ExclusiveGateway_isRolbackEnabled90" name="Is Rollback Enabled?" default="SequenceFlow_rollbackNotEnabled92"> - <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_rollbackEnabledYes91</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_rollbackNotEnabled92</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_rollbackEnabledYes91" name="Yes" sourceRef="ExclusiveGateway_isRolbackEnabled90" targetRef="IntermediateThrowEvent_rollbackAaiCreateVolume21"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{DCVFMODVOLV1_rollbackEnabled == true}</bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_rollbackNotEnabled92" name="No" sourceRef="ExclusiveGateway_isRolbackEnabled90" targetRef="EndEvent_3"/> - <bpmn2:startEvent id="StartEvent_catchAllErrors" name="Catch MsoException"> - <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_4" errorRef="Error_2"/> - </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="StartEvent_catchAllErrors" targetRef="ExclusiveGateway_isRolbackEnabled90"/> - <bpmn2:endEvent id="EndEvent_3"> - <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_rollbackNotEnabled92</bpmn2:incoming> - </bpmn2:endEvent> - </bpmn2:subProcess> - <bpmn2:boundaryEvent id="BoundaryEvent_catchError2" name="" attachedToRef="ScriptTask_callRestAaiRequeryVolGrpNm"> - <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_9"/> - </bpmn2:boundaryEvent> - <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="BoundaryEvent_catchError2" targetRef="ExclusiveGateway_isRollbakcEnabled1"/> - <bpmn2:endEvent id="EndEvent_4" name="End"> - <bpmn2:incoming>SequenceFlow_rollbackIsNotEnabled1</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> - </bpmn2:endEvent> - <bpmn2:endEvent id="EndEvent_5" name="End"> - <bpmn2:incoming>SequenceFlow_rollbackIsNotEnabled2</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> - </bpmn2:endEvent> - <bpmn2:endEvent id="EndEvent_6" name="End"> - <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> - </bpmn2:endEvent> - <bpmn2:textAnnotation id="TextAnnotation_2"> - <bpmn2:text>WorkflowException should already have been created in VNF create subflow</bpmn2:text> - </bpmn2:textAnnotation> - <bpmn2:association id="Association_2" sourceRef="TextAnnotation_2" targetRef="EndEvent_5"/> - <bpmn2:association id="Association_3" sourceRef="BoundaryEvent_compensateCreateVolGrp" targetRef="ScriptTask_deleteVolumeGroup"/> - <bpmn2:association id="Association_1" sourceRef="BoundaryEvent_compensateVnfAdapterCreate" targetRef="CallActivity_callVnfAdapterCallback"/> - <bpmn2:textAnnotation id="TextAnnotation_1"> - <bpmn2:text>Catch MsoException triggered by Plugin. The vnfAdapterRest subflow is currently not directly throwing the BPMNError(MSOException.</bpmn2:text> - </bpmn2:textAnnotation> - <bpmn2:association id="Association_4" sourceRef="TextAnnotation_1" targetRef="SubProcess_catchTriggeredException"/> - </bpmn2:process> - <bpmn2:error id="Error_1" errorCode="MSOWorkflowException" name="MSOWorkflowException"/> - <bpmn2:error id="Error_2" errorCode="MSOWorkflowException" name="MSOWorkflowException"/> - <bpmndi:BPMNDiagram id="BPMNDiagram_1"> - <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVfModuleVolumeV1"> - <bpmndi:BPMNShape id="_BPMNShape_StartEvent_65" bpmnElement="StartEvent_doCreateVfModuleVolume"> - <dc:Bounds height="36.0" width="36.0" x="252.0" y="129.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="34.0" x="253.0" y="170.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="ScriptTask_preProcessRequest"> - <dc:Bounds height="80.0" width="100.0" x="420.0" y="107.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_287" bpmnElement="ScriptTask_callRestAaiCloudRegion"> - <dc:Bounds height="80.0" width="100.0" x="588.0" y="106.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_288" bpmnElement="ScriptTask_callRestAaiQueryVolGrpName"> - <dc:Bounds height="80.0" width="100.0" x="937.0" y="107.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_247" bpmnElement="ExclusiveGateway_aaiReturnCode404" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="1118.0" y="121.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="128.0" x="1079.0" y="176.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_289" bpmnElement="ScriptTask_callRestAaiCreateVolumeGrp"> - <dc:Bounds height="80.0" width="100.0" x="252.0" y="396.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_290" bpmnElement="ScriptTask_prepareVnfAdapterCreate"> - <dc:Bounds height="80.0" width="100.0" x="420.0" y="396.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_CallActivity_32" bpmnElement="CallActivity_callVnfAdapterCreate"> - <dc:Bounds height="80.0" width="100.0" x="576.0" y="396.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_292" bpmnElement="ScriptTask_callRestAaiRequeryVolGrpNm"> - <dc:Bounds height="80.0" width="100.0" x="923.0" y="396.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_293" bpmnElement="ScriptTask_callRestAaiVolumeGrp"> - <dc:Bounds height="80.0" width="100.0" x="1068.0" y="396.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_294" bpmnElement="ScriptTask_prepareDbInfraRequest"> - <dc:Bounds height="80.0" width="100.0" x="1068.0" y="648.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_226" bpmnElement="EndEvent_1"> - <dc:Bounds height="36.0" width="36.0" x="1100.0" y="782.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="1104.0" y="823.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_65" targetElement="_BPMNShape_ScriptTask_285"> - <di:waypoint xsi:type="dc:Point" x="288.0" y="147.0"/> - <di:waypoint xsi:type="dc:Point" x="420.0" y="147.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="315.0" y="147.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_volGrpName404Yes" sourceElement="_BPMNShape_ExclusiveGateway_247" targetElement="_BPMNShape_ScriptTask_289"> - <di:waypoint xsi:type="dc:Point" x="1143.0" y="171.0"/> - <di:waypoint xsi:type="dc:Point" x="1144.0" y="232.0"/> - <di:waypoint xsi:type="dc:Point" x="811.0" y="232.0"/> - <di:waypoint xsi:type="dc:Point" x="301.0" y="232.0"/> - <di:waypoint xsi:type="dc:Point" x="302.0" y="396.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="573.0" y="232.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_289" targetElement="_BPMNShape_ScriptTask_290"> - <di:waypoint xsi:type="dc:Point" x="352.0" y="436.0"/> - <di:waypoint xsi:type="dc:Point" x="420.0" y="436.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="383.0" y="544.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_290" targetElement="_BPMNShape_CallActivity_32"> - <di:waypoint xsi:type="dc:Point" x="520.0" y="436.0"/> - <di:waypoint xsi:type="dc:Point" x="576.0" y="436.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="545.0" y="544.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_285" targetElement="_BPMNShape_ScriptTask_287"> - <di:waypoint xsi:type="dc:Point" x="520.0" y="147.0"/> - <di:waypoint xsi:type="dc:Point" x="560.0" y="147.0"/> - <di:waypoint xsi:type="dc:Point" x="560.0" y="146.0"/> - <di:waypoint xsi:type="dc:Point" x="588.0" y="146.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="557.0" y="147.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_ScriptTask_287" targetElement="_BPMNShape_ScriptTask_311"> - <di:waypoint xsi:type="dc:Point" x="688.0" y="146.0"/> - <di:waypoint xsi:type="dc:Point" x="720.0" y="146.0"/> - <di:waypoint xsi:type="dc:Point" x="720.0" y="147.0"/> - <di:waypoint xsi:type="dc:Point" x="750.0" y="147.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="713.0" y="146.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_248" bpmnElement="ExclusiveGateway_isVnfAdaptyerCallSuccess" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="768.0" y="410.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="179.0" x="704.0" y="465.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_CallActivity_32" targetElement="_BPMNShape_ExclusiveGateway_248"> - <di:waypoint xsi:type="dc:Point" x="676.0" y="436.0"/> - <di:waypoint xsi:type="dc:Point" x="715.0" y="436.0"/> - <di:waypoint xsi:type="dc:Point" x="715.0" y="435.0"/> - <di:waypoint xsi:type="dc:Point" x="768.0" y="435.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="712.0" y="435.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_296" bpmnElement="ScriptTask_createVolGrpExistsException"> - <dc:Bounds height="80.0" width="100.0" x="1248.0" y="106.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_296" targetElement="_BPMNShape_EndEvent_241"> - <di:waypoint xsi:type="dc:Point" x="1348.0" y="146.0"/> - <di:waypoint xsi:type="dc:Point" x="1414.0" y="146.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1373.0" y="146.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_BoundaryEvent_62" targetElement="_BPMNShape_ExclusiveGateway_247"> - <di:waypoint xsi:type="dc:Point" x="1037.0" y="89.0"/> - <di:waypoint xsi:type="dc:Point" x="1037.0" y="59.0"/> - <di:waypoint xsi:type="dc:Point" x="1143.0" y="59.0"/> - <di:waypoint xsi:type="dc:Point" x="1143.0" y="121.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1050.0" y="59.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_volGrpName404No" sourceElement="_BPMNShape_ExclusiveGateway_247" targetElement="_BPMNShape_ScriptTask_296"> - <di:waypoint xsi:type="dc:Point" x="1168.0" y="146.0"/> - <di:waypoint xsi:type="dc:Point" x="1248.0" y="146.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="1196.0" y="146.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="SequenceFlow_vnfAdapterFail" sourceElement="_BPMNShape_ExclusiveGateway_248" targetElement="_BPMNShape_ExclusiveGateway_253"> - <di:waypoint xsi:type="dc:Point" x="793.0" y="460.0"/> - <di:waypoint xsi:type="dc:Point" x="793.0" y="538.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="22.0" x="786.0" y="495.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_27" bpmnElement="SequenceFlow_vnfAdapterSuccess" sourceElement="_BPMNShape_ExclusiveGateway_248" targetElement="_BPMNShape_ScriptTask_292"> - <di:waypoint xsi:type="dc:Point" x="818.0" y="435.0"/> - <di:waypoint xsi:type="dc:Point" x="870.0" y="435.0"/> - <di:waypoint xsi:type="dc:Point" x="870.0" y="436.0"/> - <di:waypoint xsi:type="dc:Point" x="923.0" y="436.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="856.0" y="436.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_28" sourceElement="_BPMNShape_ScriptTask_292" targetElement="_BPMNShape_ScriptTask_293"> - <di:waypoint xsi:type="dc:Point" x="1023.0" y="436.0"/> - <di:waypoint xsi:type="dc:Point" x="1068.0" y="436.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1043.0" y="436.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_TextAnnotation_3" bpmnElement="TextAnnotation_2"> - <dc:Bounds height="73.0" width="152.0" x="573.0" y="759.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_Association_2" bpmnElement="Association_2" sourceElement="_BPMNShape_TextAnnotation_3" targetElement="_BPMNShape_EndEvent_240"> - <di:waypoint xsi:type="dc:Point" x="725.0" y="806.0"/> - <di:waypoint xsi:type="dc:Point" x="775.0" y="813.0"/> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="ScriptTask_deleteVolumeGroup"> - <dc:Bounds height="80.0" width="100.0" x="372.0" y="518.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_57" bpmnElement="BoundaryEvent_compensateCreateVolGrp"> - <dc:Bounds height="36.0" width="36.0" x="334.0" y="458.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="349.0" y="499.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_Association_3" bpmnElement="Association_3" sourceElement="_BPMNShape_BoundaryEvent_57" targetElement="_BPMNShape_ScriptTask_299"> - <di:waypoint xsi:type="dc:Point" x="367.0" y="494.0"/> - <di:waypoint xsi:type="dc:Point" x="388.0" y="518.0"/> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_3" bpmnElement="IntermediateThrowEvent_rollbackAaiCreateVolumeGroup"> - <dc:Bounds height="36.0" width="36.0" x="1370.0" y="555.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="210.0" x="1283.0" y="596.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_60" bpmnElement="BoundaryEvent_5"> - <dc:Bounds height="36.0" width="36.0" x="1150.0" y="378.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1165.0" y="419.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_BoundaryEvent_60" targetElement="_BPMNShape_ExclusiveGateway_252"> - <di:waypoint xsi:type="dc:Point" x="1168.0" y="378.0"/> - <di:waypoint xsi:type="dc:Point" x="1168.0" y="347.0"/> - <di:waypoint xsi:type="dc:Point" x="1364.0" y="347.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1193.0" y="387.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_IntermediateThrowEvent_3" targetElement="_BPMNShape_EndEvent_239"> - <di:waypoint xsi:type="dc:Point" x="1388.0" y="591.0"/> - <di:waypoint xsi:type="dc:Point" x="1388.0" y="717.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1383.0" y="715.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_CallActivity_35" bpmnElement="CallActivity_callVnfAdapterCallback"> - <dc:Bounds height="80.0" width="100.0" x="537.0" y="518.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_61" bpmnElement="BoundaryEvent_compensateVnfAdapterCreate"> - <dc:Bounds height="36.0" width="36.0" x="583.0" y="458.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="598.0" y="499.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_Association_1" bpmnElement="Association_1" sourceElement="_BPMNShape_BoundaryEvent_61" targetElement="_BPMNShape_CallActivity_35"> - <di:waypoint xsi:type="dc:Point" x="598.0" y="494.0"/> - <di:waypoint xsi:type="dc:Point" x="594.0" y="518.0"/> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_4" bpmnElement="IntermediateThrowEvent_rollbackVnfAdapterCreate"> - <dc:Bounds height="36.0" width="36.0" x="1370.0" y="458.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="177.0" x="1300.0" y="499.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_IntermediateThrowEvent_4" targetElement="_BPMNShape_IntermediateThrowEvent_3"> - <di:waypoint xsi:type="dc:Point" x="1388.0" y="494.0"/> - <di:waypoint xsi:type="dc:Point" x="1388.0" y="555.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1385.0" y="534.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_293" targetElement="_BPMNShape_ScriptTask_294"> - <di:waypoint xsi:type="dc:Point" x="1118.0" y="476.0"/> - <di:waypoint xsi:type="dc:Point" x="1118.0" y="648.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1115.0" y="670.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ScriptTask_294" targetElement="_BPMNShape_EndEvent_226"> - <di:waypoint xsi:type="dc:Point" x="1118.0" y="728.0"/> - <di:waypoint xsi:type="dc:Point" x="1118.0" y="782.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1115.0" y="863.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_311" bpmnElement="ScriptTask_callRestAaiQueryGenericVnf"> - <dc:Bounds height="80.0" width="100.0" x="750.0" y="106.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_311" targetElement="_BPMNShape_ScriptTask_288"> - <di:waypoint xsi:type="dc:Point" x="850.0" y="146.0"/> - <di:waypoint xsi:type="dc:Point" x="886.0" y="146.0"/> - <di:waypoint xsi:type="dc:Point" x="886.0" y="147.0"/> - <di:waypoint xsi:type="dc:Point" x="937.0" y="147.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="883.0" y="147.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_62" bpmnElement="BoundaryEvent_catchAaiError"> - <dc:Bounds height="36.0" width="36.0" x="1019.0" y="89.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1034.0" y="130.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_288" targetElement="_BPMNShape_ExclusiveGateway_247"> - <di:waypoint xsi:type="dc:Point" x="1037.0" y="147.0"/> - <di:waypoint xsi:type="dc:Point" x="1077.0" y="147.0"/> - <di:waypoint xsi:type="dc:Point" x="1077.0" y="146.0"/> - <di:waypoint xsi:type="dc:Point" x="1118.0" y="146.0"/> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_5" bpmnElement="IntermediateThrowEvent_rollbackCreateVolGrpFromCallVnf"> - <dc:Bounds height="36.0" width="36.0" x="775.0" y="648.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="210.0" x="818.0" y="656.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_IntermediateThrowEvent_5" targetElement="_BPMNShape_EndEvent_240"> - <di:waypoint xsi:type="dc:Point" x="793.0" y="684.0"/> - <di:waypoint xsi:type="dc:Point" x="793.0" y="798.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="790.0" y="732.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_252" bpmnElement="ExclusiveGateway_isRollbakcEnabled1" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="1364.0" y="322.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="121.0" x="1329.0" y="377.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_rollbackIsEnabled1" sourceElement="_BPMNShape_ExclusiveGateway_252" targetElement="_BPMNShape_IntermediateThrowEvent_4"> - <di:waypoint xsi:type="dc:Point" x="1389.0" y="372.0"/> - <di:waypoint xsi:type="dc:Point" x="1389.0" y="412.0"/> - <di:waypoint xsi:type="dc:Point" x="1388.0" y="412.0"/> - <di:waypoint xsi:type="dc:Point" x="1388.0" y="458.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1385.0" y="433.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_rollbackIsNotEnabled1" sourceElement="_BPMNShape_ExclusiveGateway_252" targetElement="_BPMNShape_EndEvent_239"> - <di:waypoint xsi:type="dc:Point" x="1414.0" y="347.0"/> - <di:waypoint xsi:type="dc:Point" x="1524.0" y="347.0"/> - <di:waypoint xsi:type="dc:Point" x="1524.0" y="550.0"/> - <di:waypoint xsi:type="dc:Point" x="1524.0" y="735.0"/> - <di:waypoint xsi:type="dc:Point" x="1406.0" y="735.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="22.0" x="1513.0" y="392.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_253" bpmnElement="ExclusiveGateway_isRollbackEnabled2" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="768.0" y="538.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="793.0" y="593.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_rollbackIsEnabled2" sourceElement="_BPMNShape_ExclusiveGateway_253" targetElement="_BPMNShape_IntermediateThrowEvent_5"> - <di:waypoint xsi:type="dc:Point" x="793.0" y="588.0"/> - <di:waypoint xsi:type="dc:Point" x="793.0" y="648.0"/> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_rollbackIsNotEnabled2" sourceElement="_BPMNShape_ExclusiveGateway_253" targetElement="_BPMNShape_EndEvent_240"> - <di:waypoint xsi:type="dc:Point" x="818.0" y="563.0"/> - <di:waypoint xsi:type="dc:Point" x="906.0" y="563.0"/> - <di:waypoint xsi:type="dc:Point" x="906.0" y="815.0"/> - <di:waypoint xsi:type="dc:Point" x="811.0" y="816.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="22.0" x="768.0" y="695.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_SubProcess_2" bpmnElement="SubProcess_catchTriggeredException" isExpanded="true"> - <dc:Bounds height="337.0" width="608.0" x="287.0" y="936.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_StartEvent_66" bpmnElement="StartEvent_catchAllErrors"> - <dc:Bounds height="36.0" width="36.0" x="348.0" y="1112.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="127.0" x="303.0" y="1153.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_6" bpmnElement="IntermediateThrowEvent_rollbackAaiCreateVolume21"> - <dc:Bounds height="36.0" width="36.0" x="540.0" y="1008.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="210.0" x="453.0" y="1049.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_StartEvent_66" targetElement="_BPMNShape_ExclusiveGateway_256"> - <di:waypoint xsi:type="dc:Point" x="384.0" y="1130.0"/> - <di:waypoint xsi:type="dc:Point" x="454.0" y="1130.0"/> - <di:waypoint xsi:type="dc:Point" x="454.0" y="1129.0"/> - <di:waypoint xsi:type="dc:Point" x="532.0" y="1129.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="409.0" y="1130.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_IntermediateThrowEvent_6" targetElement="_BPMNShape_EndEvent_238"> - <di:waypoint xsi:type="dc:Point" x="576.0" y="1026.0"/> - <di:waypoint xsi:type="dc:Point" x="804.0" y="1026.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="729.0" y="1026.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_TextAnnotation_4" bpmnElement="TextAnnotation_1"> - <dc:Bounds height="97.0" width="229.0" x="123.0" y="792.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_Association_4" bpmnElement="Association_4" sourceElement="_BPMNShape_TextAnnotation_4" targetElement="_BPMNShape_SubProcess_2"> - <di:waypoint xsi:type="dc:Point" x="301.0" y="888.0"/> - <di:waypoint xsi:type="dc:Point" x="366.0" y="936.0"/> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_64" bpmnElement="BoundaryEvent_catchError2"> - <dc:Bounds height="36.0" width="36.0" x="1005.0" y="378.0"/> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_BoundaryEvent_64" targetElement="_BPMNShape_ExclusiveGateway_252"> - <di:waypoint xsi:type="dc:Point" x="1023.0" y="378.0"/> - <di:waypoint xsi:type="dc:Point" x="1023.0" y="290.0"/> - <di:waypoint xsi:type="dc:Point" x="1389.0" y="294.0"/> - <di:waypoint xsi:type="dc:Point" x="1389.0" y="322.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1118.0" y="291.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_256" bpmnElement="ExclusiveGateway_isRolbackEnabled90" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="532.0" y="1104.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="128.0" x="493.0" y="1159.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_rollbackEnabledYes91" sourceElement="_BPMNShape_ExclusiveGateway_256" targetElement="_BPMNShape_IntermediateThrowEvent_6"> - <di:waypoint xsi:type="dc:Point" x="557.0" y="1104.0"/> - <di:waypoint xsi:type="dc:Point" x="557.0" y="1074.0"/> - <di:waypoint xsi:type="dc:Point" x="558.0" y="1074.0"/> - <di:waypoint xsi:type="dc:Point" x="558.0" y="1044.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="564.0" y="1084.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_30" bpmnElement="SequenceFlow_rollbackNotEnabled92" sourceElement="_BPMNShape_ExclusiveGateway_256" targetElement="_BPMNShape_EndEvent_238"> - <di:waypoint xsi:type="dc:Point" x="582.0" y="1129.0"/> - <di:waypoint xsi:type="dc:Point" x="657.0" y="1129.0"/> - <di:waypoint xsi:type="dc:Point" x="822.0" y="1129.0"/> - <di:waypoint xsi:type="dc:Point" x="822.0" y="1044.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="22.0" x="636.0" y="1134.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_238" bpmnElement="EndEvent_3"> - <dc:Bounds height="36.0" width="36.0" x="804.0" y="1008.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="822.0" y="1049.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_239" bpmnElement="EndEvent_4"> - <dc:Bounds height="36.0" width="36.0" x="1370.0" y="717.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="1374.0" y="758.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_240" bpmnElement="EndEvent_5"> - <dc:Bounds height="36.0" width="36.0" x="775.0" y="798.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="793.0" y="839.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_241" bpmnElement="EndEvent_6"> - <dc:Bounds height="36.0" width="36.0" x="1414.0" y="128.0"/> - <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="1418.0" y="169.0"/> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - </bpmndi:BPMNPlane> - </bpmndi:BPMNDiagram> -</bpmn2:definitions>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleVolumeV2.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleVolumeV2.bpmn new file mode 100644 index 0000000000..693fd36575 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleVolumeV2.bpmn @@ -0,0 +1,362 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_FhrCQG2BEeaNdqnn65BT4A" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateVfModuleVolumeV2" name="DoCreateVfModuleVolumeV2" isExecutable="true"> + <bpmn2:scriptTask id="ScriptTask_preProcessRequest" name="Preprocess Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1wi1cf9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('preProcessRequest', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_callRestAaiCloudRegion" name="Call REST AAI Cloud Region" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1dpt7ul</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('callRESTQueryAAICloudRegion', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="ScriptTask_callRestAaiCloudRegion" targetRef="ScriptTask_callRestAaiQueryGenericVnf" /> + <bpmn2:scriptTask id="ScriptTask_createVolGrpExistsException" name="Build Workflow Exception" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_volGrpName404No</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('buildWorkflowException', execution, 2500, "Volume group $DCVFMODVOLV2_volumeGroupName already exists in the system.", isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_createVolGrpExistsException" targetRef="EndEvent_6" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_aaiReturnCode404" name="AAI Return Code is 404?" default="SequenceFlow_volGrpName404No"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_volGrpName404Yes</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_volGrpName404No</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_volGrpName404Yes" name="Yes" sourceRef="ExclusiveGateway_aaiReturnCode404" targetRef="ScriptTask_callRestAaiCreateVolumeGrp"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{DCVFMODVOLV2_AaiReturnCode == '404'}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_volGrpName404No" name="No" sourceRef="ExclusiveGateway_aaiReturnCode404" targetRef="ScriptTask_createVolGrpExistsException" /> + <bpmn2:scriptTask id="ScriptTask_callRestAaiQueryGenericVnf" name="Call REST AAI Query Generic VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('callRESTQueryAAIGenericVnf', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_callRestAaiQueryGenericVnf" targetRef="ScriptTask_callRestAaiQueryVolGrpName" /> + <bpmn2:boundaryEvent id="BoundaryEvent_catchAaiError" name="" attachedToRef="ScriptTask_callRestAaiQueryVolGrpName"> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_3" errorRef="Error_1" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="BoundaryEvent_catchAaiError" targetRef="ExclusiveGateway_aaiReturnCode404" /> + <bpmn2:scriptTask id="ScriptTask_callRestAaiQueryVolGrpName" name="Call REST AAI Query Volume Grp Name" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('callRESTQueryAAIVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_callRestAaiQueryVolGrpName" targetRef="ExclusiveGateway_aaiReturnCode404" /> + <bpmn2:scriptTask id="ScriptTask_callRestAaiCreateVolumeGrp" name="Call REST AAI Create Volume Group" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_volGrpName404Yes</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('callRESTCreateAAIVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="ScriptTask_callRestAaiCreateVolumeGrp" targetRef="ScriptTask_prepareVnfAdapterCreate" /> + <bpmn2:callActivity id="CallActivity_callVnfAdapterCreate" name="Call VNF Adapter Create" calledElement="vnfAdapterRestV1"> + <bpmn2:extensionElements> + <camunda:in source="DCVFMODVOLV2_createVnfARequest" target="vnfAdapterRestV1Request" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="vnfAdapterRestV1Response" target="DCVFMODVOLV2_createVnfAResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="VNFREST_vnfAdapterStatusCode" target="DCVFMODVOLV2_createVnfAReturnCode" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="VNFREST_SuccessIndicator" target="VNFREST_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qwurc5</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_callRestAaiRequeryVolGrpNm" name="Call REST AAI Requery Volume Group Name" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1gbt2n5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('callRESTQueryAAIVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_28" name="" sourceRef="ScriptTask_callRestAaiRequeryVolGrpNm" targetRef="ScriptTask_callRestAaiVolumeGrp" /> + <bpmn2:scriptTask id="ScriptTask_prepareDbInfraRequest" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('setSuccessIndicator', execution, true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ScriptTask_prepareDbInfraRequest" targetRef="EndEvent_1" /> + <bpmn2:scriptTask id="ScriptTask_callRestAaiVolumeGrp" name="Call REST AAI Update Volume Group" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_28</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('callRESTUpdateCreatedVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_callRestAaiVolumeGrp" targetRef="ScriptTask_prepareDbInfraRequest" /> + <bpmn2:endEvent id="EndEvent_1" name="End"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_prepareVnfAdapterCreate" name="Prepare VNF Adapter Create Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('prepareVnfAdapterCreateRequest', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="ScriptTask_prepareVnfAdapterCreate" targetRef="CallActivity_callVnfAdapterCreate" /> + <bpmn2:startEvent id="StartEvent_doCreateVfModuleVolume" name="Start"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_doCreateVfModuleVolume" targetRef="ScriptTask_preProcessRequest" /> + <bpmn2:endEvent id="EndEvent_6" name="End"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="Task_07psich" name="Validate VNF Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1qwurc5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1gbt2n5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('validateVnfResponse', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1qwurc5" sourceRef="CallActivity_callVnfAdapterCreate" targetRef="Task_07psich" /> + <bpmn2:sequenceFlow id="SequenceFlow_1gbt2n5" sourceRef="Task_07psich" targetRef="ScriptTask_callRestAaiRequeryVolGrpNm" /> + <bpmn2:callActivity id="Task_1u766ge" name="Call Generic Get Service instance" calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="GENGS_type" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1wi1cf9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1vmbvy8</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="Task_0qbm5cz" name="Validate Get Service Instance Call" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1vmbvy8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1dpt7ul</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('validateGetServiceInstanceCall', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1wi1cf9" sourceRef="ScriptTask_preProcessRequest" targetRef="Task_1u766ge" /> + <bpmn2:sequenceFlow id="SequenceFlow_1vmbvy8" sourceRef="Task_1u766ge" targetRef="Task_0qbm5cz" /> + <bpmn2:sequenceFlow id="SequenceFlow_1dpt7ul" sourceRef="Task_0qbm5cz" targetRef="ScriptTask_callRestAaiCloudRegion" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVfModuleVolumeV2"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_65" bpmnElement="StartEvent_doCreateVfModuleVolume"> + <dc:Bounds x="270" y="128" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="276" y="169" width="23" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="ScriptTask_preProcessRequest"> + <dc:Bounds x="369" y="106" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_287" bpmnElement="ScriptTask_callRestAaiCloudRegion"> + <dc:Bounds x="768" y="106" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_288" bpmnElement="ScriptTask_callRestAaiQueryVolGrpName"> + <dc:Bounds x="1045" y="106" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_247" bpmnElement="ExclusiveGateway_aaiReturnCode404" isMarkerVisible="true"> + <dc:Bounds x="1242" y="121" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1224" y="176" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_289" bpmnElement="ScriptTask_callRestAaiCreateVolumeGrp"> + <dc:Bounds x="256" y="307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_290" bpmnElement="ScriptTask_prepareVnfAdapterCreate"> + <dc:Bounds x="420" y="307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_32" bpmnElement="CallActivity_callVnfAdapterCreate"> + <dc:Bounds x="576" y="307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_292" bpmnElement="ScriptTask_callRestAaiRequeryVolGrpNm"> + <dc:Bounds x="857" y="307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_293" bpmnElement="ScriptTask_callRestAaiVolumeGrp"> + <dc:Bounds x="995" y="307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_294" bpmnElement="ScriptTask_prepareDbInfraRequest"> + <dc:Bounds x="1142" y="307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_226" bpmnElement="EndEvent_1"> + <dc:Bounds x="1283" y="328" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1292" y="369" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_65" targetElement="_BPMNShape_ScriptTask_285"> + <di:waypoint xsi:type="dc:Point" x="306" y="146" /> + <di:waypoint xsi:type="dc:Point" x="369" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="338" y="131" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_volGrpName404Yes" sourceElement="_BPMNShape_ExclusiveGateway_247" targetElement="_BPMNShape_ScriptTask_289"> + <di:waypoint xsi:type="dc:Point" x="1267" y="171" /> + <di:waypoint xsi:type="dc:Point" x="1267" y="232" /> + <di:waypoint xsi:type="dc:Point" x="811" y="232" /> + <di:waypoint xsi:type="dc:Point" x="306" y="232" /> + <di:waypoint xsi:type="dc:Point" x="306" y="307" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="582" y="232" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_289" targetElement="_BPMNShape_ScriptTask_290"> + <di:waypoint xsi:type="dc:Point" x="356" y="347" /> + <di:waypoint xsi:type="dc:Point" x="420" y="347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="388" y="332" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_290" targetElement="_BPMNShape_CallActivity_32"> + <di:waypoint xsi:type="dc:Point" x="520" y="347" /> + <di:waypoint xsi:type="dc:Point" x="576" y="347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="548" y="455" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_ScriptTask_287" targetElement="_BPMNShape_ScriptTask_311"> + <di:waypoint xsi:type="dc:Point" x="868" y="146" /> + <di:waypoint xsi:type="dc:Point" x="911" y="147" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="890" y="132" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_296" bpmnElement="ScriptTask_createVolGrpExistsException"> + <dc:Bounds x="1355" y="106" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_296" targetElement="_BPMNShape_EndEvent_241"> + <di:waypoint xsi:type="dc:Point" x="1455" y="146" /> + <di:waypoint xsi:type="dc:Point" x="1493" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1474" y="131" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_BoundaryEvent_62" targetElement="_BPMNShape_ExclusiveGateway_247"> + <di:waypoint xsi:type="dc:Point" x="1145" y="88" /> + <di:waypoint xsi:type="dc:Point" x="1145" y="59" /> + <di:waypoint xsi:type="dc:Point" x="1267" y="59" /> + <di:waypoint xsi:type="dc:Point" x="1267" y="121" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1206" y="44" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_volGrpName404No" sourceElement="_BPMNShape_ExclusiveGateway_247" targetElement="_BPMNShape_ScriptTask_296"> + <di:waypoint xsi:type="dc:Point" x="1292" y="146" /> + <di:waypoint xsi:type="dc:Point" x="1355" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1320" y="146" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_28" sourceElement="_BPMNShape_ScriptTask_292" targetElement="_BPMNShape_ScriptTask_293"> + <di:waypoint xsi:type="dc:Point" x="957" y="347" /> + <di:waypoint xsi:type="dc:Point" x="995" y="347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="976" y="332" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_293" targetElement="_BPMNShape_ScriptTask_294"> + <di:waypoint xsi:type="dc:Point" x="1095" y="347" /> + <di:waypoint xsi:type="dc:Point" x="1142" y="347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1119" y="332" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ScriptTask_294" targetElement="_BPMNShape_EndEvent_226"> + <di:waypoint xsi:type="dc:Point" x="1242" y="347" /> + <di:waypoint xsi:type="dc:Point" x="1283" y="346" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1263" y="332" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_311" bpmnElement="ScriptTask_callRestAaiQueryGenericVnf"> + <dc:Bounds x="911" y="106" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_311" targetElement="_BPMNShape_ScriptTask_288"> + <di:waypoint xsi:type="dc:Point" x="1011" y="146" /> + <di:waypoint xsi:type="dc:Point" x="1045" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1028" y="131" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_62" bpmnElement="BoundaryEvent_catchAaiError"> + <dc:Bounds x="1127" y="88" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1145" y="129" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_288" targetElement="_BPMNShape_ExclusiveGateway_247"> + <di:waypoint xsi:type="dc:Point" x="1145" y="146" /> + <di:waypoint xsi:type="dc:Point" x="1242" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1194" y="131" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_241" bpmnElement="EndEvent_6"> + <dc:Bounds x="1493" y="128" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1502" y="169" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_00lua86_di" bpmnElement="Task_07psich"> + <dc:Bounds x="716" y="307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qwurc5_di" bpmnElement="SequenceFlow_1qwurc5"> + <di:waypoint xsi:type="dc:Point" x="676" y="347" /> + <di:waypoint xsi:type="dc:Point" x="716" y="347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="696" y="322" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1gbt2n5_di" bpmnElement="SequenceFlow_1gbt2n5"> + <di:waypoint xsi:type="dc:Point" x="816" y="347" /> + <di:waypoint xsi:type="dc:Point" x="857" y="347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="837" y="322" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1u596hd_di" bpmnElement="Task_1u766ge"> + <dc:Bounds x="506" y="106" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1n9cmka_di" bpmnElement="Task_0qbm5cz"> + <dc:Bounds x="640" y="106" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1wi1cf9_di" bpmnElement="SequenceFlow_1wi1cf9"> + <di:waypoint xsi:type="dc:Point" x="469" y="146" /> + <di:waypoint xsi:type="dc:Point" x="506" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="488" y="121" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1vmbvy8_di" bpmnElement="SequenceFlow_1vmbvy8"> + <di:waypoint xsi:type="dc:Point" x="606" y="146" /> + <di:waypoint xsi:type="dc:Point" x="640" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="623" y="121" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1dpt7ul_di" bpmnElement="SequenceFlow_1dpt7ul"> + <di:waypoint xsi:type="dc:Point" x="740" y="146" /> + <di:waypoint xsi:type="dc:Point" x="768" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="754" y="121" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnf.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnf.bpmn index 8411c56bef..5aa4d22b0c 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnf.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnf.bpmn @@ -8,7 +8,7 @@ <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* DoCreateVnf createVnf = new DoCreateVnf() createVnf.preProcessRequest(execution)]]></bpmn2:script> </bpmn2:scriptTask> @@ -88,7 +88,7 @@ exceptionUtil.buildWorkflowException(execution, 5000, "Generic Vnf Already Exist <bpmn2:incoming>vnfExistNo</bpmn2:incoming> <bpmn2:incoming>VnfNameNotSpecified1</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* DoCreateVnf createVnf = new DoCreateVnf() createVnf.prepareCreateGenericVnf(execution)]]></bpmn2:script> </bpmn2:scriptTask> @@ -136,7 +136,7 @@ exceptionUtil.processJavaException(execution)]]></bpmn2:script> <bpmn2:scriptTask id="preProcessSDNCAssignRequest" name="PreProcess SDNC Assign Request" scriptFormat="groovy"> <bpmn2:incoming>SdncInteractionEnabled</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* DoCreateVnf createVnf = new DoCreateVnf() createVnf.preProcessSDNCAssignRequest(execution)]]></bpmn2:script> </bpmn2:scriptTask> @@ -155,9 +155,8 @@ createVnf.preProcessSDNCAssignRequest(execution)]]></bpmn2:script> </bpmn2:callActivity> <bpmn2:scriptTask id="postProcessSDNCAssignRequest" name="PostProcess SDNC Assign Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
<bpmn2:outgoing>SequenceFlow_0lnh79j</bpmn2:outgoing> - + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* String response = execution.getVariable("DoCVNF_assignSDNCAdapterResponse") def createVnfInfra = new DoCreateVnf() @@ -167,7 +166,7 @@ createVnfInfra.validateSDNCResponse(execution, response, "assign")]]></bpmn2:scr <bpmn2:incoming>SequenceFlow_1q1poly</bpmn2:incoming> <bpmn2:incoming>VnfNameSpecified2</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* DoCreateVnf createVnf = new DoCreateVnf() createVnf.preProcessSDNCActivateRequest(execution)]]></bpmn2:script> </bpmn2:scriptTask> @@ -187,7 +186,7 @@ createVnf.preProcessSDNCActivateRequest(execution)]]></bpmn2:script> <bpmn2:scriptTask id="postProcessSDNCActivateRequest" name="PostProcess SDNC Activate Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* String response = execution.getVariable("DoCVNF_assignSDNCAdapterResponse") @@ -208,7 +207,7 @@ createVnfInfra.validateSDNCResponse(execution, response, "activate")]]></bpmn2:s <bpmn2:scriptTask id="postProcessCreateGenericVnf" name="PostProcess Create Generic Vnf" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_0seif8n</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_1gc18ih</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* DoCreateVnf createVnf = new DoCreateVnf() createVnf.postProcessCreateGenericVnf(execution)]]></bpmn2:script> </bpmn2:scriptTask> @@ -655,4 +654,4 @@ doCreateVnf.prepUpdateAAIGenericVnf(execution)]]></bpmn2:script> </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> -</bpmn2:definitions> +</bpmn2:definitions>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn index be54119bda..a90c816bc3 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn @@ -25,11 +25,11 @@ doCreateVnfAndModules.preProcessRequest(execution)]]></bpmn:script> <camunda:in source="volumeGroupName" target="volumeGroupName" /> <camunda:in source="baseVfModuleId" target="vfModuleId" /> <camunda:in source="baseVfModuleModelInfo" target="vfModuleModelInfo" /> - <camunda:in source=""true"" target="isBaseVfModule" /> + <camunda:in source="isBaseVfModule" target="isBaseVfModule" /> <camunda:in source="asdcServiceModelVersion" target="asdcServiceModelVersion" /> <camunda:out source="vfModuleId" target="createdVfModuleId" /> <camunda:out source="vfModuleOutputParams" target="createdVfModuleOutputParams" /> - <camunda:out source="RollbackData" target="DCVAM_baseRollbackData" /> + <camunda:out source="rollbackData" target="DCVAM_baseRollbackData" /> <camunda:out source="WorkflowException" target="WorkflowException" /> <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> @@ -44,7 +44,7 @@ doCreateVnfAndModules.preProcessRequest(execution)]]></bpmn:script> <bpmn:outgoing>SequenceFlow_1ixcnb6</bpmn:outgoing> </bpmn:callActivity> <bpmn:sequenceFlow id="SequenceFlow_0o4vuzt" sourceRef="StartEvent_1" targetRef="PreProcessRequest" /> - <bpmn:sequenceFlow id="SequenceFlow_1xd3ri5" sourceRef="PreProcessRequest" targetRef="CreateVNF" /> + <bpmn:sequenceFlow id="SequenceFlow_1xd3ri5" sourceRef="PreProcessRequest" targetRef="QueryCatalogDB" /> <bpmn:callActivity id="CreateAddOnVfModule" name="Create Add-On VF Module" calledElement="DoCreateVfModule"> <bpmn:extensionElements> <camunda:in source="msoRequestId" target="msoRequestId" /> @@ -59,11 +59,11 @@ doCreateVnfAndModules.preProcessRequest(execution)]]></bpmn:script> <camunda:in source="volumeGroupId" target="volumeGroupId" /> <camunda:in source="volumeGroupName" target="volumeGroupName" /> <camunda:in source="addOnVfModuleModelInfo" target="vfModuleModelInfo" /> - <camunda:in source=""false"" target="isBaseVfModule" /> + <camunda:in source="isBaseVfModule" target="isBaseVfModule" /> <camunda:in source="asdcServiceModelVersion" target="asdcServiceModelVersion" /> <camunda:out source="vfModuleId" target="createdVfModuleId" /> <camunda:out source="vfModuleOutputParameters" target="createdVfModuleOutputParameters" /> - <camunda:out source="RollbackData" target="DCVAM_addOnRollbackData" /> + <camunda:out source="rollbackData" target="DCVAM_addOnRollbackData" /> <camunda:out source="WorkflowException" target="WorkflowException" /> <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> @@ -95,8 +95,8 @@ doCreateVnfAndModules.validateAddOnModule(execution)]]></bpmn:script> <camunda:property /> </camunda:properties> </bpmn:extensionElements> - <bpmn:incoming>SequenceFlow_07gl6gw</bpmn:incoming> <bpmn:incoming>SequenceFlow_1a6wyuu</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0j52dxv</bpmn:incoming> <bpmn:outgoing>SequenceFlow_132bohl</bpmn:outgoing> <bpmn:outgoing>SequenceFlow_0jz6bqn</bpmn:outgoing> </bpmn:exclusiveGateway> @@ -115,7 +115,7 @@ doCreateVnfAndModules.validateAddOnModule(execution)]]></bpmn:script> <camunda:in source="productFamilyId" target="productFamilyId" /> <camunda:out source="vnfId" target="vnfId" /> <camunda:out source="vnfOutputParams" target="vnfOutputParams" /> - <camunda:out source="RollbackData" target="RollbackData" /> + <camunda:out source="rollbackData" target="rollbackData" /> <camunda:out source="WorkflowException" target="WorkflowException" /> <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> @@ -123,9 +123,11 @@ doCreateVnfAndModules.validateAddOnModule(execution)]]></bpmn:script> <camunda:out source="vnfName" target="vnfName" /> <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:in source="vnfResourceDecomposition" target="vnfResourceDecomposition" /> </bpmn:extensionElements> - <bpmn:incoming>SequenceFlow_1xd3ri5</bpmn:incoming> - <bpmn:outgoing>SequenceFlow_08i3uo6</bpmn:outgoing> + <bpmn:incoming>SequenceFlow_19ohb1a</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_07u8e3l</bpmn:outgoing> </bpmn:callActivity> <bpmn:scriptTask id="PreProcessAddOnModule" name="PreProcess Add-On Module" scriptFormat="groovy"> <bpmn:incoming>SequenceFlow_0jz6bqn</bpmn:incoming> @@ -135,13 +137,12 @@ def doCreateVnfAndModules = new DoCreateVnfAndModules() doCreateVnfAndModules.preProcessAddOnModule(execution)]]></bpmn:script> </bpmn:scriptTask> <bpmn:scriptTask id="QueryCatalogDB" name="Query Catalog DB for VF Modules" scriptFormat="groovy"> - <bpmn:incoming>SequenceFlow_08i3uo6</bpmn:incoming> - <bpmn:outgoing>SequenceFlow_1ifw9tw</bpmn:outgoing> + <bpmn:incoming>SequenceFlow_1xd3ri5</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_19ohb1a</bpmn:outgoing> <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* def doCreateVnfAndModules = new DoCreateVnfAndModules() doCreateVnfAndModules.queryCatalogDB(execution)]]></bpmn:script> </bpmn:scriptTask> - <bpmn:sequenceFlow id="SequenceFlow_08i3uo6" sourceRef="CreateVNF" targetRef="QueryCatalogDB" /> <bpmn:exclusiveGateway id="ExclusiveGateway_1hx9s0y" name="Less than initialCount?" default="SequenceFlow_1vrogpr"> <bpmn:incoming>SequenceFlow_1mguf2m</bpmn:incoming> <bpmn:incoming>SequenceFlow_12x4dvf</bpmn:incoming> @@ -155,9 +156,7 @@ doCreateVnfAndModules.queryCatalogDB(execution)]]></bpmn:script> <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("instancesOfThisModuleDeployed") < execution.getVariable("initialCount")}]]></bpmn:conditionExpression> </bpmn:sequenceFlow> <bpmn:sequenceFlow id="SequenceFlow_1mguf2m" sourceRef="Task_1lfmdks" targetRef="ExclusiveGateway_1hx9s0y" /> - <bpmn:sequenceFlow id="SequenceFlow_1vrogpr" name="no" sourceRef="ExclusiveGateway_1hx9s0y" targetRef="FinishProcessingInitialCountDeployment" /> - <bpmn:sequenceFlow id="SequenceFlow_07gl6gw" sourceRef="FinishProcessingInitialCountDeployment" targetRef="ExclusiveGateway_1vyqr5o" /> - <bpmn:sequenceFlow id="SequenceFlow_1ifw9tw" sourceRef="QueryCatalogDB" targetRef="GenerateBaseModuleName" /> + <bpmn:sequenceFlow id="SequenceFlow_1vrogpr" name="no" sourceRef="ExclusiveGateway_1hx9s0y" targetRef="PostProcessAddOnModule" /> <bpmn:sequenceFlow id="SequenceFlow_1hf7k7q" sourceRef="GenerateBaseModuleName" targetRef="CreateBaseVfModule" /> <bpmn:callActivity id="GenerateBaseModuleName" name="Generate Base Module Name" calledElement="GenerateVfModuleName"> <bpmn:extensionElements> @@ -169,7 +168,7 @@ doCreateVnfAndModules.queryCatalogDB(execution)]]></bpmn:script> <camunda:out source="WorkflowException" target="WorkflowException" /> <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> </bpmn:extensionElements> - <bpmn:incoming>SequenceFlow_1ifw9tw</bpmn:incoming> + <bpmn:incoming>SequenceFlow_07u8e3l</bpmn:incoming> <bpmn:outgoing>SequenceFlow_1hf7k7q</bpmn:outgoing> </bpmn:callActivity> <bpmn:callActivity id="GenerateAddOnModuleName" name="Generate Add-On Module Name" calledElement="GenerateVfModuleName"> @@ -187,13 +186,6 @@ doCreateVnfAndModules.queryCatalogDB(execution)]]></bpmn:script> </bpmn:callActivity> <bpmn:sequenceFlow id="SequenceFlow_1lh21yl" sourceRef="GenerateAddOnModuleName" targetRef="CreateAddOnVfModule" /> <bpmn:sequenceFlow id="SequenceFlow_12x4dvf" sourceRef="PreProcessAddOnModule" targetRef="ExclusiveGateway_1hx9s0y" /> - <bpmn:scriptTask id="FinishProcessingInitialCountDeployment" name="Finish Processing Initial Count Deployment" scriptFormat="groovy"> - <bpmn:incoming>SequenceFlow_1vrogpr</bpmn:incoming> - <bpmn:outgoing>SequenceFlow_07gl6gw</bpmn:outgoing> - <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* -def doCreateVnfAndModules = new DoCreateVnfAndModules() -doCreateVnfAndModules.finisthProcessingInitialCountDeployment(execution)]]></bpmn:script> - </bpmn:scriptTask> <bpmn:sequenceFlow id="SequenceFlow_1ixcnb6" sourceRef="CreateBaseVfModule" targetRef="Task_054rz9i" /> <bpmn:sequenceFlow id="SequenceFlow_1a6wyuu" sourceRef="Task_054rz9i" targetRef="ExclusiveGateway_1vyqr5o" /> <bpmn:scriptTask id="Task_054rz9i" name="Validate Create Base VF Module Response" scriptFormat="groovy"> @@ -203,24 +195,55 @@ doCreateVnfAndModules.finisthProcessingInitialCountDeployment(execution)]]></bpm def doCreateVnfAndModules = new DoCreateVnfAndModules() doCreateVnfAndModules.validateBaseModule(execution)]]></bpmn:script> </bpmn:scriptTask> - <bpmn:subProcess id="SubProcess_1ktx0cx" name="Java Exception Handling Sub Process" triggeredByEvent="true"> - <bpmn:scriptTask id="processJavaError" name="Process Error" scriptFormat="groovy"> - <bpmn:incoming>SequenceFlow_11bmhi4</bpmn:incoming> - <bpmn:outgoing>SequenceFlow_1kjlzrn</bpmn:outgoing> - <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* -ExceptionUtil exceptionUtil = new ExceptionUtil() -exceptionUtil.processJavaException(execution)]]></bpmn:script> - </bpmn:scriptTask> - <bpmn:endEvent id="EndEvent_2"> - <bpmn:incoming>SequenceFlow_1kjlzrn</bpmn:incoming> + <bpmn:subProcess id="SubProcess_0u7tbb2" name="Sub-process for Application Errors" triggeredByEvent="true"> + <bpmn:endEvent id="EndEvent_16s0a3q"> + <bpmn:incoming>SequenceFlow_1h74w1v</bpmn:incoming> </bpmn:endEvent> - <bpmn:startEvent id="StartEvent_2"> - <bpmn:outgoing>SequenceFlow_11bmhi4</bpmn:outgoing> - <bpmn:errorEventDefinition errorRef="Error_1" /> + <bpmn:callActivity id="CallActivity_0gtajjm" name="Call DoCreateVnfAndModulesRollback" calledElement="DoCreateVnfAndModulesRollback"> + <bpmn:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="rollbackError" target="rollbackError" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_03v8mmc</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0yu0im2</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="PreProcessRollback" name="Pre Process Rollback" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1l0rxnh</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_03v8mmc</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcvam = new DoCreateVnfAndModules() +dcvam.preProcessRollback(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="PostProcessRollback" name="Post Process Rollback" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0yu0im2</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1h74w1v</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcvam = new DoCreateVnfAndModules() +dcvam.postProcessRollback(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1l0rxnh" sourceRef="StartEvent_1nbwxby" targetRef="PreProcessRollback" /> + <bpmn:sequenceFlow id="SequenceFlow_1h74w1v" sourceRef="PostProcessRollback" targetRef="EndEvent_16s0a3q" /> + <bpmn:sequenceFlow id="SequenceFlow_03v8mmc" sourceRef="PreProcessRollback" targetRef="CallActivity_0gtajjm" /> + <bpmn:sequenceFlow id="SequenceFlow_0yu0im2" sourceRef="CallActivity_0gtajjm" targetRef="PostProcessRollback" /> + <bpmn:startEvent id="StartEvent_1nbwxby"> + <bpmn:outgoing>SequenceFlow_1l0rxnh</bpmn:outgoing> + <bpmn:errorEventDefinition errorRef="Error_2" /> </bpmn:startEvent> - <bpmn:sequenceFlow id="SequenceFlow_11bmhi4" name="" sourceRef="StartEvent_2" targetRef="processJavaError" /> - <bpmn:sequenceFlow id="SequenceFlow_1kjlzrn" name="" sourceRef="processJavaError" targetRef="EndEvent_2" /> </bpmn:subProcess> + <bpmn:sequenceFlow id="SequenceFlow_19ohb1a" sourceRef="QueryCatalogDB" targetRef="CreateVNF" /> + <bpmn:sequenceFlow id="SequenceFlow_07u8e3l" sourceRef="CreateVNF" targetRef="GenerateBaseModuleName" /> + <bpmn:sequenceFlow id="SequenceFlow_0j52dxv" sourceRef="PostProcessAddOnModule" targetRef="ExclusiveGateway_1vyqr5o" /> + <bpmn:scriptTask id="PostProcessAddOnModule" name="PostProcess Add-On Module" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1vrogpr</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0j52dxv</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def doCreateVnfAndModules = new DoCreateVnfAndModules() +doCreateVnfAndModules.postProcessAddOnModule(execution)]]></bpmn:script> + </bpmn:scriptTask> </bpmn:process> <bpmn:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" /> <bpmn:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> @@ -247,9 +270,9 @@ exceptionUtil.processJavaException(execution)]]></bpmn:script> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_1xd3ri5_di" bpmnElement="SequenceFlow_1xd3ri5"> <di:waypoint xsi:type="dc:Point" x="356" y="165" /> - <di:waypoint xsi:type="dc:Point" x="430" y="165" /> + <di:waypoint xsi:type="dc:Point" x="418" y="165" /> <bpmndi:BPMNLabel> - <dc:Bounds x="393" y="150" width="0" height="0" /> + <dc:Bounds x="387" y="150" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="CallActivity_0auiwq0_di" bpmnElement="CreateAddOnVfModule"> @@ -287,21 +310,14 @@ exceptionUtil.processJavaException(execution)]]></bpmn:script> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="CallActivity_0zr4ioh_di" bpmnElement="CreateVNF"> - <dc:Bounds x="430" y="125" width="100" height="80" /> + <dc:Bounds x="574" y="125" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ScriptTask_0tknqn1_di" bpmnElement="PreProcessAddOnModule"> <dc:Bounds x="1300" y="125" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ScriptTask_1u6qcio_di" bpmnElement="QueryCatalogDB"> - <dc:Bounds x="590" y="125" width="100" height="80" /> + <dc:Bounds x="418" y="125" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_08i3uo6_di" bpmnElement="SequenceFlow_08i3uo6"> - <di:waypoint xsi:type="dc:Point" x="530" y="165" /> - <di:waypoint xsi:type="dc:Point" x="590" y="165" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="560" y="150" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ExclusiveGateway_1hx9s0y_di" bpmnElement="ExclusiveGateway_1hx9s0y" isMarkerVisible="true"> <dc:Bounds x="1493" y="140" width="50" height="50" /> <bpmndi:BPMNLabel> @@ -337,24 +353,10 @@ exceptionUtil.processJavaException(execution)]]></bpmn:script> <di:waypoint xsi:type="dc:Point" x="1518" y="190" /> <di:waypoint xsi:type="dc:Point" x="1518" y="221" /> <di:waypoint xsi:type="dc:Point" x="1518" y="221" /> - <di:waypoint xsi:type="dc:Point" x="1518" y="258" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1527" y="221" width="12" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_07gl6gw_di" bpmnElement="SequenceFlow_07gl6gw"> - <di:waypoint xsi:type="dc:Point" x="1468" y="298" /> - <di:waypoint xsi:type="dc:Point" x="1192" y="298" /> - <di:waypoint xsi:type="dc:Point" x="1191" y="190" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1330" y="283" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1ifw9tw_di" bpmnElement="SequenceFlow_1ifw9tw"> - <di:waypoint xsi:type="dc:Point" x="690" y="165" /> - <di:waypoint xsi:type="dc:Point" x="740" y="165" /> + <di:waypoint xsi:type="dc:Point" x="1518" y="301" /> + <di:waypoint xsi:type="dc:Point" x="1400" y="301" /> <bpmndi:BPMNLabel> - <dc:Bounds x="715" y="150" width="0" height="0" /> + <dc:Bounds x="1528" y="247.2077922077922" width="12" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_1hf7k7q_di" bpmnElement="SequenceFlow_1hf7k7q"> @@ -384,9 +386,6 @@ exceptionUtil.processJavaException(execution)]]></bpmn:script> <dc:Bounds x="1447" y="140" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_144n0mg_di" bpmnElement="FinishProcessingInitialCountDeployment"> - <dc:Bounds x="1468" y="258" width="100" height="80" /> - </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1ixcnb6_di" bpmnElement="SequenceFlow_1ixcnb6"> <di:waypoint xsi:type="dc:Point" x="988" y="165" /> <di:waypoint xsi:type="dc:Point" x="1030" y="165" /> @@ -404,38 +403,85 @@ exceptionUtil.processJavaException(execution)]]></bpmn:script> <bpmndi:BPMNShape id="ScriptTask_1obevnp_di" bpmnElement="Task_054rz9i"> <dc:Bounds x="1030" y="125" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="SubProcess_1ktx0cx_di" bpmnElement="SubProcess_1ktx0cx" isExpanded="true"> - <dc:Bounds x="208" y="438" width="313" height="169" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ScriptTask_1j93kr8_di" bpmnElement="processJavaError"> - <dc:Bounds x="316" y="484" width="100" height="80" /> + <bpmndi:BPMNShape id="SubProcess_0u7tbb2_di" bpmnElement="SubProcess_0u7tbb2" isExpanded="true"> + <dc:Bounds x="113" y="382" width="783" height="195" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="EndEvent_1s63ccl_di" bpmnElement="EndEvent_2"> - <dc:Bounds x="461" y="506" width="36" height="36" /> + <bpmndi:BPMNShape id="EndEvent_16s0a3q_di" bpmnElement="EndEvent_16s0a3q"> + <dc:Bounds x="843" y="460" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="479" y="547" width="0" height="0" /> + <dc:Bounds x="861" y="501" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="StartEvent_028j51v_di" bpmnElement="StartEvent_2"> - <dc:Bounds x="233" y="506" width="36" height="36" /> + <bpmndi:BPMNShape id="CallActivity_0gtajjm_di" bpmnElement="CallActivity_0gtajjm"> + <dc:Bounds x="508" y="438" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_12g5tld_di" bpmnElement="PreProcessRollback"> + <dc:Bounds x="345" y="438" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1nk6apr_di" bpmnElement="PostProcessRollback"> + <dc:Bounds x="676" y="438" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1l0rxnh_di" bpmnElement="SequenceFlow_1l0rxnh"> + <di:waypoint xsi:type="dc:Point" x="246" y="478" /> + <di:waypoint xsi:type="dc:Point" x="345" y="478" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="296" y="463" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1h74w1v_di" bpmnElement="SequenceFlow_1h74w1v"> + <di:waypoint xsi:type="dc:Point" x="776" y="478" /> + <di:waypoint xsi:type="dc:Point" x="808" y="478" /> + <di:waypoint xsi:type="dc:Point" x="808" y="478" /> + <di:waypoint xsi:type="dc:Point" x="843" y="478" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="823" y="478" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_03v8mmc_di" bpmnElement="SequenceFlow_03v8mmc"> + <di:waypoint xsi:type="dc:Point" x="445" y="478" /> + <di:waypoint xsi:type="dc:Point" x="508" y="478" /> <bpmndi:BPMNLabel> - <dc:Bounds x="251" y="547" width="0" height="0" /> + <dc:Bounds x="477" y="463" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yu0im2_di" bpmnElement="SequenceFlow_0yu0im2"> + <di:waypoint xsi:type="dc:Point" x="608" y="478" /> + <di:waypoint xsi:type="dc:Point" x="676" y="478" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="642" y="463" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="StartEvent_00jdkur_di" bpmnElement="StartEvent_1nbwxby"> + <dc:Bounds x="210" y="460" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="228" y="501" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_11bmhi4_di" bpmnElement="SequenceFlow_11bmhi4"> - <di:waypoint xsi:type="dc:Point" x="269" y="524" /> - <di:waypoint xsi:type="dc:Point" x="316" y="524" /> + <bpmndi:BPMNEdge id="SequenceFlow_19ohb1a_di" bpmnElement="SequenceFlow_19ohb1a"> + <di:waypoint xsi:type="dc:Point" x="518" y="165" /> + <di:waypoint xsi:type="dc:Point" x="574" y="165" /> <bpmndi:BPMNLabel> - <dc:Bounds x="290" y="524" width="0" height="0" /> + <dc:Bounds x="546" y="140" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1kjlzrn_di" bpmnElement="SequenceFlow_1kjlzrn"> - <di:waypoint xsi:type="dc:Point" x="416" y="524" /> - <di:waypoint xsi:type="dc:Point" x="461" y="524" /> + <bpmndi:BPMNEdge id="SequenceFlow_07u8e3l_di" bpmnElement="SequenceFlow_07u8e3l"> + <di:waypoint xsi:type="dc:Point" x="674" y="165" /> + <di:waypoint xsi:type="dc:Point" x="740" y="165" /> <bpmndi:BPMNLabel> - <dc:Bounds x="436" y="524" width="0" height="0" /> + <dc:Bounds x="707" y="140" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0j52dxv_di" bpmnElement="SequenceFlow_0j52dxv"> + <di:waypoint xsi:type="dc:Point" x="1300" y="301" /> + <di:waypoint xsi:type="dc:Point" x="1192" y="301" /> + <di:waypoint xsi:type="dc:Point" x="1191" y="190" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1246" y="286" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0srhar8_di" bpmnElement="PostProcessAddOnModule"> + <dc:Bounds x="1300" y="262" width="100" height="80" /> + </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> -</bpmn:definitions> +</bpmn:definitions>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModulesRollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModulesRollback.bpmn index 2fba166dc4..aa362021e0 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModulesRollback.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModulesRollback.bpmn @@ -9,9 +9,9 @@ <bpmn2:endEvent id="EndEvent_1"> <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> </bpmn2:endEvent> - <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="CatchExceptions" targetRef="LogSaveWorkflowException" /> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="CatchExceptions" targetRef="SetFailedRollbackStatus" /> <bpmn2:scriptTask id="LogSaveWorkflowException" name="Log and Save Workflow Exception" scriptFormat="groovy"> - <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1wch84s</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing> <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* def dcvfmr = new DoCreateVfModuleRollback() @@ -19,6 +19,14 @@ dcvfmr.logWorkflowException(execution, 'DoCreateVfModuleRollback caught an event dcvfmr.saveWorkflowException(execution, 'DCVFMR_CaughtWorkflowException1')]]></bpmn2:script> </bpmn2:scriptTask> <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="LogSaveWorkflowException" targetRef="EndEvent_1" /> + <bpmn2:sequenceFlow id="SequenceFlow_1wch84s" sourceRef="SetFailedRollbackStatus" targetRef="LogSaveWorkflowException" /> + <bpmn2:scriptTask id="SetFailedRollbackStatus" name="Set Failed Rollback Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1wch84s</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcvamr= new DoCreateVnfAndModulesRollback() +dcvamr.setFailedRollbackStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> </bpmn2:subProcess> <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> @@ -32,19 +40,21 @@ dcvfmr.saveWorkflowException(execution, 'DCVFMR_CaughtWorkflowException1')]]></b <bpmn2:outgoing>SequenceFlow_1537b7m</bpmn2:outgoing> </bpmn2:startEvent> <bpmn2:exclusiveGateway id="ExclusiveGateway_12v8g91" name="Are there VF Modules to roll back?" default="SequenceFlow_1r6wyy6"> - <bpmn2:incoming>SequenceFlow_0bmsi5h</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_1srw52v</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0zjzorm</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_19xaddm</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_1r6wyy6</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_0v85t87</bpmn2:outgoing> </bpmn2:exclusiveGateway> <bpmn2:exclusiveGateway id="ExclusiveGateway_09ajxqr" name="Delete VNF?" default="SequenceFlow_1yas9ol"> - <bpmn2:incoming>SequenceFlow_1r6wyy6</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1g6psjt</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_152tazp</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_1kr0r4a</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_1yas9ol</bpmn2:outgoing> </bpmn2:exclusiveGateway> <bpmn2:endEvent id="EndEvent_1seag7u"> - <bpmn2:incoming>SequenceFlow_04yd2yr</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_1yas9ol</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0mk9lrj</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_03cc9y6</bpmn2:incoming> </bpmn2:endEvent> <bpmn2:sequenceFlow id="SequenceFlow_1537b7m" sourceRef="StartEvent_1gai4qr" targetRef="PreProcessRequest" /> <bpmn2:scriptTask id="PreProcessRequest" name="PreProcess Request" scriptFormat="groovy"> @@ -54,8 +64,8 @@ dcvfmr.saveWorkflowException(execution, 'DCVFMR_CaughtWorkflowException1')]]></b def dcvamr = new DoCreateVnfAndModulesRollback() dcvamr.preProcessRequest(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_0bmsi5h" sourceRef="PreProcessRequest" targetRef="ExclusiveGateway_12v8g91" /> - <bpmn2:sequenceFlow id="SequenceFlow_1ycq005" sourceRef="Task_1sbxjc8" targetRef="Task_0ifyxgt" /> + <bpmn2:sequenceFlow id="SequenceFlow_0bmsi5h" sourceRef="PreProcessRequest" targetRef="ExclusiveGateway_01o1lkn" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ycq005" sourceRef="Task_1sbxjc8" targetRef="RollbackCreateVFModule" /> <bpmn2:scriptTask id="Task_1sbxjc8" name="Prepare Rollback Create VF Module Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_0v85t87</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_1ycq005</bpmn2:outgoing> @@ -63,26 +73,30 @@ dcvamr.preProcessRequest(execution)]]></bpmn2:script> def dcvamr = new DoCreateVnfAndModulesRollback() dcvamr.preProcessCreateVfModuleRollback(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:callActivity id="Task_0ifyxgt" name="Rollback Create VF Module " calledElement="DoCreateVfModuleRollback"> + <bpmn2:callActivity id="RollbackCreateVFModule" name="Rollback Create VF Module " calledElement="DoCreateVfModuleRollback"> <bpmn2:extensionElements> - <camunda:in source="DCVAMR_RollbackData" target="RollbackData" /> + <camunda:in source="DCVAMR_RollbackData" target="rollbackData" /> <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> <camunda:out source="WorkflowException" target="WorkflowException" /> <camunda:in source=""true"" target="isVidRequest" /> <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:out source="rolledBack" target="DCVM_rolledBack" /> + <camunda:out source="rollbackError" target="rollbackError" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_1ycq005</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_181hb2a</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_1r6wyy6" name="no" sourceRef="ExclusiveGateway_12v8g91" targetRef="ExclusiveGateway_09ajxqr" /> + <bpmn2:sequenceFlow id="SequenceFlow_1r6wyy6" name="no" sourceRef="ExclusiveGateway_12v8g91" targetRef="ExclusiveGateway_07kr3gt" /> <bpmn2:sequenceFlow id="SequenceFlow_0v85t87" name="yes" sourceRef="ExclusiveGateway_12v8g91" targetRef="Task_1sbxjc8"> <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAMR_numOfModulesToDelete") > 0}]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:sequenceFlow id="SequenceFlow_1kr0r4a" name="yes" sourceRef="ExclusiveGateway_09ajxqr" targetRef="Task_0p8fmrm"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAMR_vnfId") != null}]]></bpmn2:conditionExpression> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAMR_rollbackVnfCreate") == "true"}]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_04yd2yr" sourceRef="Task_0p8fmrm" targetRef="EndEvent_1seag7u" /> - <bpmn2:sequenceFlow id="SequenceFlow_1yas9ol" name="no" sourceRef="ExclusiveGateway_09ajxqr" targetRef="EndEvent_1seag7u" /> + <bpmn2:sequenceFlow id="SequenceFlow_04yd2yr" sourceRef="Task_0p8fmrm" targetRef="SetSuccessfulRollbackStatus" /> + <bpmn2:sequenceFlow id="SequenceFlow_1yas9ol" name="no" sourceRef="ExclusiveGateway_09ajxqr" targetRef="SetSuccessfulRollbackStatus" /> <bpmn2:callActivity id="Task_0p8fmrm" name="Delete VNF" calledElement="DoDeleteVnf"> <bpmn2:extensionElements> <camunda:in source="DCVAMR_vnfId" target="vnfId" /> @@ -92,7 +106,7 @@ dcvamr.preProcessCreateVfModuleRollback(execution)]]></bpmn2:script> <bpmn2:incoming>SequenceFlow_1kr0r4a</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_04yd2yr</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_181hb2a" sourceRef="Task_0ifyxgt" targetRef="Task_0kf9oby" /> + <bpmn2:sequenceFlow id="SequenceFlow_181hb2a" sourceRef="RollbackCreateVFModule" targetRef="Task_0kf9oby" /> <bpmn2:scriptTask id="Task_0kf9oby" name="PostProcess Rollback Create VF Module" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_181hb2a</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_1srw52v</bpmn2:outgoing> @@ -101,13 +115,111 @@ def dcvamr = new DoCreateVnfAndModulesRollback() dcvamr.postProcessCreateVfModuleRollback(execution)]]></bpmn2:script> </bpmn2:scriptTask> <bpmn2:sequenceFlow id="SequenceFlow_1srw52v" sourceRef="Task_0kf9oby" targetRef="ExclusiveGateway_12v8g91" /> + <bpmn2:scriptTask id="PreProcessSDNCDeactivateRequest" name="PreProcess SDNC Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SDNCDeactivateYes</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0nysmc9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcvamr= new DoCreateVnfAndModulesRollback() +dcvamr.preProcessSDNCDeactivateRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_1ug98j4" name="PostProcess SDNC Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1hc04x2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19xaddm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcvamr = new DoDeleteVnfAndModules() +String response = execution.getVariable("DCVAMR_deactivateSDNCAdapterResponse") +dcvamr.validateSDNCResponse(execution, response, "deactivate")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCAdapterTopologyDeactivate" name="Call SDNC Adapter Topology Deactivate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DCVAMR_deactivateSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DCVAMR_deactivateSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0nysmc9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1hc04x2</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0nysmc9" sourceRef="PreProcessSDNCDeactivateRequest" targetRef="SDNCAdapterTopologyDeactivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_1hc04x2" sourceRef="SDNCAdapterTopologyDeactivate" targetRef="ScriptTask_1ug98j4" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1sr014x" name="Send SDNC Deactivate?" default="SequenceFlow_0zjzorm"> + <bpmn2:incoming>SequenceFlow_1rezswi</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0zjzorm</bpmn2:outgoing> + <bpmn2:outgoing>SDNCDeactivateYes</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0zjzorm" name="no" sourceRef="ExclusiveGateway_1sr014x" targetRef="ExclusiveGateway_12v8g91" /> + <bpmn2:sequenceFlow id="SDNCDeactivateYes" name="yes" sourceRef="ExclusiveGateway_1sr014x" targetRef="PreProcessSDNCDeactivateRequest"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAMR_rollbackSDNCActivate") == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_19xaddm" sourceRef="ScriptTask_1ug98j4" targetRef="ExclusiveGateway_12v8g91" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_07kr3gt" name="Send SDNC Unassign?" default="SequenceFlow_1g6psjt"> + <bpmn2:incoming>SequenceFlow_1r6wyy6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1g6psjt</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_01am36p</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1g6psjt" name="no" sourceRef="ExclusiveGateway_07kr3gt" targetRef="ExclusiveGateway_09ajxqr" /> + <bpmn2:scriptTask id="ScriptTask_1ma7nvr" name="PreProcess SDNC Unassign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_01am36p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0a5ecvu</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcvamr= new DoCreateVnfAndModulesRollback() +dcvamr.preProcessSDNCUnassignRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_018fqnd" name="Call SDNC Adapter Topology Unassign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DCVAMR_unassignSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DCVAMR_unassignSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0a5ecvu</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ilok6u</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_0b3jyb7" name="PostProcess SDNC Unassign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ilok6u</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_152tazp</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcvamr = new DoDeleteVnfAndModules() +String response = execution.getVariable("DCVAMR_unassignSDNCAdapterResponse") +dcvamr.validateSDNCResponse(execution, response, "unassign")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0a5ecvu" sourceRef="ScriptTask_1ma7nvr" targetRef="CallActivity_018fqnd" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ilok6u" sourceRef="CallActivity_018fqnd" targetRef="ScriptTask_0b3jyb7" /> + <bpmn2:sequenceFlow id="SequenceFlow_152tazp" sourceRef="ScriptTask_0b3jyb7" targetRef="ExclusiveGateway_09ajxqr" /> + <bpmn2:sequenceFlow id="SequenceFlow_01am36p" name="yes" sourceRef="ExclusiveGateway_07kr3gt" targetRef="ScriptTask_1ma7nvr"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAMR_rollbackSDNCAssign") == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_01o1lkn" name="Skip rollback?" default="SequenceFlow_1rezswi"> + <bpmn2:incoming>SequenceFlow_0bmsi5h</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1rezswi</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0mk9lrj</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1rezswi" name="no" sourceRef="ExclusiveGateway_01o1lkn" targetRef="ExclusiveGateway_1sr014x" /> + <bpmn2:sequenceFlow id="SequenceFlow_0mk9lrj" name="yes" sourceRef="ExclusiveGateway_01o1lkn" targetRef="EndEvent_1seag7u"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_03cc9y6" sourceRef="SetSuccessfulRollbackStatus" targetRef="EndEvent_1seag7u" /> + <bpmn2:scriptTask id="SetSuccessfulRollbackStatus" name="Set Successful Rollback Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1yas9ol</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_04yd2yr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_03cc9y6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcvamr= new DoCreateVnfAndModulesRollback() +dcvamr.setSuccessfulRollbackStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> </bpmn2:process> <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> <bpmn2:message id="Message_1" name="DoCreateVfModuleRollbackRequest" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVnfAndModulesRollback"> <bpmndi:BPMNShape id="_BPMNShape_SubProcess_22" bpmnElement="SubProcess_1" isExpanded="true"> - <dc:Bounds x="18" y="1012" width="469" height="150" /> + <dc:Bounds x="16" y="1012" width="621" height="152" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_59" bpmnElement="CatchExceptions"> <dc:Bounds x="36" y="1063" width="36" height="36" /> @@ -116,167 +228,313 @@ dcvamr.postProcessCreateVfModuleRollback(execution)]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_281" bpmnElement="LogSaveWorkflowException"> - <dc:Bounds x="174" y="1041" width="100" height="80" /> + <dc:Bounds x="361" y="1041" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_188" bpmnElement="EndEvent_1"> - <dc:Bounds x="349" y="1062" width="36" height="36" /> + <dc:Bounds x="537" y="1063" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="367" y="1098" width="0" height="0" /> + <dc:Bounds x="555" y="1099" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_55" bpmnElement="BoundaryEvent_1"> - <dc:Bounds x="469" y="1058" width="36" height="36" /> + <dc:Bounds x="619" y="1059" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="487" y="1094" width="0" height="0" /> + <dc:Bounds x="637" y="1095" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_189" bpmnElement="EndEvent_2"> - <dc:Bounds x="593" y="1058" width="36" height="36" /> + <dc:Bounds x="710" y="1058" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="611" y="1099" width="0" height="0" /> + <dc:Bounds x="728" y="1099" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_StartEvent_59" targetElement="_BPMNShape_ScriptTask_281"> <di:waypoint xsi:type="dc:Point" x="72" y="1081" /> - <di:waypoint xsi:type="dc:Point" x="174" y="1081" /> + <di:waypoint xsi:type="dc:Point" x="161" y="1081" /> <bpmndi:BPMNLabel> - <dc:Bounds x="120" y="1081" width="0" height="0" /> + <dc:Bounds x="117" y="1066" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_281" targetElement="_BPMNShape_EndEvent_188"> - <di:waypoint xsi:type="dc:Point" x="274" y="1081" /> - <di:waypoint xsi:type="dc:Point" x="311" y="1081" /> - <di:waypoint xsi:type="dc:Point" x="311" y="1080" /> - <di:waypoint xsi:type="dc:Point" x="349" y="1080" /> + <di:waypoint xsi:type="dc:Point" x="461" y="1081" /> + <di:waypoint xsi:type="dc:Point" x="537" y="1081" /> <bpmndi:BPMNLabel> - <dc:Bounds x="326" y="1071" width="0" height="0" /> + <dc:Bounds x="499" y="1066" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_BoundaryEvent_55" targetElement="_BPMNShape_EndEvent_189"> - <di:waypoint xsi:type="dc:Point" x="505" y="1076" /> - <di:waypoint xsi:type="dc:Point" x="593" y="1076" /> + <di:waypoint xsi:type="dc:Point" x="655" y="1077" /> + <di:waypoint xsi:type="dc:Point" x="710" y="1076" /> <bpmndi:BPMNLabel> - <dc:Bounds x="550" y="1051" width="0" height="0" /> + <dc:Bounds x="683" y="1061.5" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="StartEvent_1gai4qr_di" bpmnElement="StartEvent_1gai4qr"> - <dc:Bounds x="7.752742616033771" y="654.7502109704641" width="36" height="36" /> + <dc:Bounds x="-91" y="655" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="26" y="690.7502109704641" width="0" height="0" /> + <dc:Bounds x="-73" y="691" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ExclusiveGateway_12v8g91_di" bpmnElement="ExclusiveGateway_12v8g91" isMarkerVisible="true"> - <dc:Bounds x="284.2253164556962" y="648.1721518987342" width="50" height="50" /> + <dc:Bounds x="806" y="648" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="273" y="698" width="73" height="36" /> + <dc:Bounds x="753" y="619" width="73" height="36" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ExclusiveGateway_09ajxqr_di" bpmnElement="ExclusiveGateway_09ajxqr" isMarkerVisible="true"> - <dc:Bounds x="833.4869198312236" y="648" width="50" height="50" /> + <dc:Bounds x="1291" y="799" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="828" y="698" width="62" height="12" /> + <dc:Bounds x="1241" y="786" width="62" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="EndEvent_1seag7u_di" bpmnElement="EndEvent_1seag7u"> - <dc:Bounds x="1101.651476793249" y="655" width="36" height="36" /> + <dc:Bounds x="1678" y="806" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1120" y="691" width="0" height="0" /> + <dc:Bounds x="2135" y="827" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1537b7m_di" bpmnElement="SequenceFlow_1537b7m"> - <di:waypoint xsi:type="dc:Point" x="44" y="673" /> - <di:waypoint xsi:type="dc:Point" x="131" y="673" /> + <di:waypoint xsi:type="dc:Point" x="-55" y="673" /> + <di:waypoint xsi:type="dc:Point" x="-3" y="673" /> <bpmndi:BPMNLabel> - <dc:Bounds x="88" y="658" width="0" height="0" /> + <dc:Bounds x="-29" y="658" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ScriptTask_0fckboe_di" bpmnElement="PreProcessRequest"> - <dc:Bounds x="131" y="633" width="100" height="80" /> + <dc:Bounds x="-3" y="633" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0bmsi5h_di" bpmnElement="SequenceFlow_0bmsi5h"> - <di:waypoint xsi:type="dc:Point" x="231" y="673" /> - <di:waypoint xsi:type="dc:Point" x="257" y="673" /> - <di:waypoint xsi:type="dc:Point" x="257" y="673" /> - <di:waypoint xsi:type="dc:Point" x="284" y="673" /> + <di:waypoint xsi:type="dc:Point" x="97" y="673" /> + <di:waypoint xsi:type="dc:Point" x="124" y="673" /> + <di:waypoint xsi:type="dc:Point" x="124" y="673" /> + <di:waypoint xsi:type="dc:Point" x="150" y="673" /> <bpmndi:BPMNLabel> - <dc:Bounds x="272" y="673" width="0" height="0" /> + <dc:Bounds x="139" y="673" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_1ycq005_di" bpmnElement="SequenceFlow_1ycq005"> - <di:waypoint xsi:type="dc:Point" x="469" y="509" /> - <di:waypoint xsi:type="dc:Point" x="502" y="510" /> + <di:waypoint xsi:type="dc:Point" x="983" y="494" /> + <di:waypoint xsi:type="dc:Point" x="1016" y="495" /> <bpmndi:BPMNLabel> - <dc:Bounds x="486" y="494.5" width="0" height="0" /> + <dc:Bounds x="1000" y="480" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ScriptTask_1sc2oye_di" bpmnElement="Task_1sbxjc8"> - <dc:Bounds x="369" y="470" width="100" height="80" /> + <dc:Bounds x="883" y="455" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="CallActivity_1lj1iud_di" bpmnElement="Task_0ifyxgt"> - <dc:Bounds x="502" y="470" width="100" height="80" /> + <bpmndi:BPMNShape id="CallActivity_1lj1iud_di" bpmnElement="RollbackCreateVFModule"> + <dc:Bounds x="1016" y="455" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1r6wyy6_di" bpmnElement="SequenceFlow_1r6wyy6"> - <di:waypoint xsi:type="dc:Point" x="309" y="698" /> - <di:waypoint xsi:type="dc:Point" x="309" y="755" /> - <di:waypoint xsi:type="dc:Point" x="769" y="755" /> - <di:waypoint xsi:type="dc:Point" x="769" y="673" /> - <di:waypoint xsi:type="dc:Point" x="833" y="673" /> + <di:waypoint xsi:type="dc:Point" x="831" y="698" /> + <di:waypoint xsi:type="dc:Point" x="831" y="799" /> <bpmndi:BPMNLabel> - <dc:Bounds x="533" y="740" width="12" height="12" /> + <dc:Bounds x="838" y="759.6519350414114" width="12" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_0v85t87_di" bpmnElement="SequenceFlow_0v85t87"> - <di:waypoint xsi:type="dc:Point" x="309" y="648" /> - <di:waypoint xsi:type="dc:Point" x="309" y="510" /> - <di:waypoint xsi:type="dc:Point" x="369" y="510" /> + <di:waypoint xsi:type="dc:Point" x="831" y="648" /> + <di:waypoint xsi:type="dc:Point" x="831" y="495" /> + <di:waypoint xsi:type="dc:Point" x="883" y="495" /> <bpmndi:BPMNLabel> - <dc:Bounds x="315" y="579" width="18" height="12" /> + <dc:Bounds x="837" y="572.1521739130435" width="18" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_1kr0r4a_di" bpmnElement="SequenceFlow_1kr0r4a"> - <di:waypoint xsi:type="dc:Point" x="858" y="648" /> - <di:waypoint xsi:type="dc:Point" x="858" y="589" /> - <di:waypoint xsi:type="dc:Point" x="945" y="589" /> + <di:waypoint xsi:type="dc:Point" x="1316" y="799" /> + <di:waypoint xsi:type="dc:Point" x="1316" y="733" /> + <di:waypoint xsi:type="dc:Point" x="1390" y="733" /> <bpmndi:BPMNLabel> - <dc:Bounds x="864" y="619" width="18" height="12" /> + <dc:Bounds x="1322" y="765.8928772635815" width="18" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_04yd2yr_di" bpmnElement="SequenceFlow_04yd2yr"> - <di:waypoint xsi:type="dc:Point" x="1045" y="589" /> - <di:waypoint xsi:type="dc:Point" x="1120" y="589" /> - <di:waypoint xsi:type="dc:Point" x="1120" y="655" /> + <di:waypoint xsi:type="dc:Point" x="1490" y="733" /> + <di:waypoint xsi:type="dc:Point" x="1592" y="733" /> + <di:waypoint xsi:type="dc:Point" x="1592" y="784" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1083" y="574" width="0" height="0" /> + <dc:Bounds x="1541" y="718" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_1yas9ol_di" bpmnElement="SequenceFlow_1yas9ol"> - <di:waypoint xsi:type="dc:Point" x="883" y="673" /> - <di:waypoint xsi:type="dc:Point" x="1102" y="673" /> + <di:waypoint xsi:type="dc:Point" x="1341" y="824" /> + <di:waypoint xsi:type="dc:Point" x="1542" y="824" /> <bpmndi:BPMNLabel> - <dc:Bounds x="987" y="658" width="12" height="12" /> + <dc:Bounds x="1503" y="807" width="12" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="CallActivity_01fs058_di" bpmnElement="Task_0p8fmrm"> - <dc:Bounds x="945" y="549" width="100" height="80" /> + <dc:Bounds x="1390" y="693" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_181hb2a_di" bpmnElement="SequenceFlow_181hb2a"> - <di:waypoint xsi:type="dc:Point" x="602" y="510" /> - <di:waypoint xsi:type="dc:Point" x="641" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1116" y="495" /> + <di:waypoint xsi:type="dc:Point" x="1155" y="495" /> <bpmndi:BPMNLabel> - <dc:Bounds x="622" y="495" width="0" height="0" /> + <dc:Bounds x="1136" y="480" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ScriptTask_196e1px_di" bpmnElement="Task_0kf9oby"> - <dc:Bounds x="641" y="470" width="100" height="80" /> + <dc:Bounds x="1155" y="455" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1srw52v_di" bpmnElement="SequenceFlow_1srw52v"> - <di:waypoint xsi:type="dc:Point" x="691" y="550" /> - <di:waypoint xsi:type="dc:Point" x="691" y="673" /> - <di:waypoint xsi:type="dc:Point" x="334" y="673" /> + <di:waypoint xsi:type="dc:Point" x="1205" y="535" /> + <di:waypoint xsi:type="dc:Point" x="1205" y="673" /> + <di:waypoint xsi:type="dc:Point" x="856" y="673" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1220" y="604" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_12w53bf_di" bpmnElement="PreProcessSDNCDeactivateRequest"> + <dc:Bounds x="323" y="795" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1ug98j4_di" bpmnElement="ScriptTask_1ug98j4"> + <dc:Bounds x="617" y="795" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1gvc90m_di" bpmnElement="SDNCAdapterTopologyDeactivate"> + <dc:Bounds x="473" y="795" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0nysmc9_di" bpmnElement="SequenceFlow_0nysmc9"> + <di:waypoint xsi:type="dc:Point" x="423" y="835" /> + <di:waypoint xsi:type="dc:Point" x="473" y="835" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="449" y="820" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1hc04x2_di" bpmnElement="SequenceFlow_1hc04x2"> + <di:waypoint xsi:type="dc:Point" x="573" y="835" /> + <di:waypoint xsi:type="dc:Point" x="617" y="835" /> <bpmndi:BPMNLabel> - <dc:Bounds x="706" y="611.5" width="0" height="0" /> + <dc:Bounds x="595" y="820" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1sr014x_di" bpmnElement="ExclusiveGateway_1sr014x" isMarkerVisible="true"> + <dc:Bounds x="277" y="648" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="271" y="608" width="62" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0zjzorm_di" bpmnElement="SequenceFlow_0zjzorm"> + <di:waypoint xsi:type="dc:Point" x="327" y="673" /> + <di:waypoint xsi:type="dc:Point" x="806" y="673" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="561" y="658" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1tgi77m_di" bpmnElement="SDNCDeactivateYes"> + <di:waypoint xsi:type="dc:Point" x="302" y="698" /> + <di:waypoint xsi:type="dc:Point" x="302" y="835" /> + <di:waypoint xsi:type="dc:Point" x="323" y="835" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="308" y="756.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19xaddm_di" bpmnElement="SequenceFlow_19xaddm"> + <di:waypoint xsi:type="dc:Point" x="717" y="835" /> + <di:waypoint xsi:type="dc:Point" x="781" y="835" /> + <di:waypoint xsi:type="dc:Point" x="781" y="673" /> + <di:waypoint xsi:type="dc:Point" x="806" y="673" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="796" y="754" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_07kr3gt_di" bpmnElement="ExclusiveGateway_07kr3gt" isMarkerVisible="true"> + <dc:Bounds x="806" y="799" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="841" y="858" width="62" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1g6psjt_di" bpmnElement="SequenceFlow_1g6psjt"> + <di:waypoint xsi:type="dc:Point" x="856" y="824" /> + <di:waypoint xsi:type="dc:Point" x="1074" y="824" /> + <di:waypoint xsi:type="dc:Point" x="1074" y="824" /> + <di:waypoint xsi:type="dc:Point" x="1291" y="824" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1083" y="824" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1ma7nvr_di" bpmnElement="ScriptTask_1ma7nvr"> + <dc:Bounds x="873" y="905" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_018fqnd_di" bpmnElement="CallActivity_018fqnd"> + <dc:Bounds x="1034" y="905" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0b3jyb7_di" bpmnElement="ScriptTask_0b3jyb7"> + <dc:Bounds x="1195" y="905" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0a5ecvu_di" bpmnElement="SequenceFlow_0a5ecvu"> + <di:waypoint xsi:type="dc:Point" x="973" y="945" /> + <di:waypoint xsi:type="dc:Point" x="1034" y="945" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1004" y="930" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ilok6u_di" bpmnElement="SequenceFlow_1ilok6u"> + <di:waypoint xsi:type="dc:Point" x="1134" y="945" /> + <di:waypoint xsi:type="dc:Point" x="1195" y="945" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1165" y="930" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_152tazp_di" bpmnElement="SequenceFlow_152tazp"> + <di:waypoint xsi:type="dc:Point" x="1295" y="945" /> + <di:waypoint xsi:type="dc:Point" x="1316" y="945" /> + <di:waypoint xsi:type="dc:Point" x="1316" y="849" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1306" y="920" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_01am36p_di" bpmnElement="SequenceFlow_01am36p"> + <di:waypoint xsi:type="dc:Point" x="831" y="849" /> + <di:waypoint xsi:type="dc:Point" x="831" y="945" /> + <di:waypoint xsi:type="dc:Point" x="873" y="945" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="838" y="897" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_01o1lkn_di" bpmnElement="ExclusiveGateway_01o1lkn" isMarkerVisible="true"> + <dc:Bounds x="150" y="648" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="136" y="614" width="68" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rezswi_di" bpmnElement="SequenceFlow_1rezswi"> + <di:waypoint xsi:type="dc:Point" x="200" y="673" /> + <di:waypoint xsi:type="dc:Point" x="239" y="673" /> + <di:waypoint xsi:type="dc:Point" x="239" y="673" /> + <di:waypoint xsi:type="dc:Point" x="277" y="673" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="214" y="648" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0mk9lrj_di" bpmnElement="SequenceFlow_0mk9lrj"> + <di:waypoint xsi:type="dc:Point" x="175" y="698" /> + <di:waypoint xsi:type="dc:Point" x="175" y="991" /> + <di:waypoint xsi:type="dc:Point" x="1696" y="1002" /> + <di:waypoint xsi:type="dc:Point" x="1696" y="842" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="147" y="775" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_03cc9y6_di" bpmnElement="SequenceFlow_03cc9y6"> + <di:waypoint xsi:type="dc:Point" x="1642" y="824" /> + <di:waypoint xsi:type="dc:Point" x="1678" y="824" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1660" y="809" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1a3lghn_di" bpmnElement="SetSuccessfulRollbackStatus"> + <dc:Bounds x="1542" y="784" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1wch84s_di" bpmnElement="SequenceFlow_1wch84s"> + <di:waypoint xsi:type="dc:Point" x="261" y="1081" /> + <di:waypoint xsi:type="dc:Point" x="361" y="1081" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="311" y="1066" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1od8f5n_di" bpmnElement="SetFailedRollbackStatus"> + <dc:Bounds x="161" y="1041" width="100" height="80" /> + </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> -</bpmn2:definitions> +</bpmn2:definitions>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteNetworkInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteNetworkInstance.bpmn index 3c581865cc..6f58f62476 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteNetworkInstance.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteNetworkInstance.bpmn @@ -268,7 +268,7 @@ DoDeleteNetworkInstance.postProcessResponse(execution) </bpmn2:scriptTask> <bpmn2:sequenceFlow id="SequenceFlow_1pbgnr2" sourceRef="ScriptTask_01xjfhu" targetRef="EndEvent_3" /> <bpmn2:sequenceFlow id="SequenceFlow_1pdp4d2" sourceRef="prepareSDNCTopoRequest_ScriptTask" targetRef="callDeleteSDNCAdapter_CallActivity" /> - <bpmn2:exclusiveGateway id="ExclusiveGateway_02t94x3" name="is '1702' SNDC Call?" default="SequenceFlow_0r3pvf8"> + <bpmn2:exclusiveGateway id="ExclusiveGateway_02t94x3" name="is not '1610' SNDC Call?" default="SequenceFlow_0r3pvf8"> <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_0r3pvf8</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_0kqnddy</bpmn2:outgoing> @@ -298,7 +298,7 @@ prepareSDNCRequest.prepareRpcSDNCRequest(execution) <bpmn2:sequenceFlow id="SequenceFlow_1jnva78" sourceRef="CallActivity_03wzdas" targetRef="validateSDNCResponse_ScriptTask" /> <bpmn2:sequenceFlow id="SequenceFlow_0zlbzad" sourceRef="ScriptTask_0iqzbz6" targetRef="CallActivity_03wzdas" /> <bpmn2:sequenceFlow id="SequenceFlow_0kqnddy" name="Yes" sourceRef="ExclusiveGateway_02t94x3" targetRef="ScriptTask_1wf192s"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") == '1702'} ]]></bpmn2:conditionExpression> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:scriptTask id="ScriptTask_01w2cd9" name="PreProcess Incoming Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> @@ -699,7 +699,7 @@ DoDeleteNetworkInstance.validateRpcSDNCDeactivateResponse(execution)]]></bpmn2:s <bpmndi:BPMNShape id="ExclusiveGateway_02t94x3_di" bpmnElement="ExclusiveGateway_02t94x3" isMarkerVisible="true"> <dc:Bounds x="1156" y="648" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1143" y="707" width="76" height="24" /> + <dc:Bounds x="1150" y="707" width="61" height="24" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0r3pvf8_di" bpmnElement="SequenceFlow_0r3pvf8"> @@ -930,4 +930,4 @@ DoDeleteNetworkInstance.validateRpcSDNCDeactivateResponse(execution)]]></bpmn2:s </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> -</bpmn2:definitions> +</bpmn2:definitions>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteNetworkInstanceRollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteNetworkInstanceRollback.bpmn index 2c5fa5ae4b..fabcb5e2e5 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteNetworkInstanceRollback.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteNetworkInstanceRollback.bpmn @@ -121,7 +121,7 @@ DoDeleteNetworkInstanceRollback.processJavaException(execution)]]></bpmn:script> </bpmn:sequenceFlow> <bpmn:sequenceFlow id="SequenceFlow_1wy1aba" name="No" sourceRef="ExclusiveGateway_1ga27si" targetRef="Task_00chyig" /> <bpmn:sequenceFlow id="SequenceFlow_1yltkyg" name="Yes" sourceRef="ExclusiveGateway_1ga27si" targetRef="Task_1iuumxi"> - <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") == '1702'} ]]></bpmn:conditionExpression> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn:conditionExpression> </bpmn:sequenceFlow> <bpmn:sequenceFlow id="SequenceFlow_1hcmrh9" sourceRef="Task_1iuumxi" targetRef="ExclusiveGateway_0798yby" /> <bpmn:sequenceFlow id="SequenceFlow_1pi168e" sourceRef="Task_00chyig" targetRef="ExclusiveGateway_0798yby" /> @@ -543,4 +543,4 @@ wasDeleted </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> -</bpmn:definitions> +</bpmn:definitions>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteServiceInstance.bpmn index 49274bd8a6..10f688b30f 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteServiceInstance.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteServiceInstance.bpmn @@ -7,7 +7,7 @@ <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_0jfgn05</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_1jqc16k</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* def ddsi = new DoDeleteServiceInstance() ddsi.preProcessRequest(execution) ]]></bpmn2:script> @@ -41,13 +41,13 @@ ddsi.preProcessRequest(execution) <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" /> <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_0rtflal</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0yohjl7</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_0k28xib</bpmn2:outgoing> </bpmn2:callActivity> <bpmn2:scriptTask id="ScriptTask_1uxr0cx" name="Post Process SDNC Deactivate" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_0k28xib</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_1w8ao21</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* String response = execution.getVariable("sdncDeactivateResponse") def ddsi = new DoDeleteServiceInstance() @@ -56,12 +56,11 @@ ddsi.postProcessSDNCDelete(execution, response, "deactivate")]]></bpmn2:script> <bpmn2:sequenceFlow id="SequenceFlow_0jfgn05" sourceRef="deleteSI_startEven" targetRef="preProcessRequest_ScriptTask" /> <bpmn2:scriptTask id="ScriptTask_0xxwbdq" name="PreProcess SDNC Delete" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_1dwch0k</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0rtflal</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+ <bpmn2:outgoing>SequenceFlow_1ju26o1</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* def ddsi = new DoDeleteServiceInstance() ddsi.preProcessSDNCDelete(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_0rtflal" sourceRef="ScriptTask_0xxwbdq" targetRef="CallActivity_0ak0ezb" /> <bpmn2:exclusiveGateway id="ExclusiveGateway_0590oev" name="SI found in AAI" default="SequenceFlow_05jfuko"> <bpmn2:incoming>SequenceFlow_1up0j5r</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_1hcfvcj</bpmn2:outgoing> @@ -101,7 +100,7 @@ ddsi.preProcessSDNCDelete(execution)]]></bpmn2:script> <bpmn2:scriptTask id="ScriptTask_02da0lj" name="Post Process AAI GET" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_1grea1r</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_1up0j5r</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* def ddsi = new DoDeleteServiceInstance() ddsi.postProcessAAIGET(execution)]]></bpmn2:script> </bpmn2:scriptTask> @@ -110,7 +109,7 @@ ddsi.postProcessAAIGET(execution)]]></bpmn2:script> <bpmn2:scriptTask id="ScriptTask_1ybdq3e" name="Post Process AAI Delete" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_05wu9i7</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_1wyvxwi</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* def ddsi = new DoDeleteServiceInstance() ddsi.postProcessAAIDEL(execution)]]></bpmn2:script> </bpmn2:scriptTask> @@ -126,7 +125,7 @@ ddsi.postProcessAAIDEL(execution)]]></bpmn2:script> <bpmn2:scriptTask id="ScriptTask_1va95un" name="Log / Print Unexpected Error" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_0u33vy6</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_0hevfee</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*
+ <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* ExceptionUtil ex = new ExceptionUtil() ex.processJavaException(execution)]]></bpmn2:script> </bpmn2:scriptTask> @@ -143,6 +142,7 @@ ex.processJavaException(execution)]]></bpmn2:script> <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_1w8ao21</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1swzrij</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_14x55db</bpmn2:outgoing> </bpmn2:callActivity> <bpmn2:scriptTask id="ScriptTask_0lc115e" name="Post Process SDNC Delete" scriptFormat="groovy"> @@ -156,6 +156,16 @@ ddsi.postProcessSDNCDelete(execution, response, "delete")]]></bpmn2:script> </bpmn2:scriptTask> <bpmn2:sequenceFlow id="SequenceFlow_14x55db" sourceRef="CallActivity_1c5wru8" targetRef="ScriptTask_0lc115e" /> <bpmn2:sequenceFlow id="SequenceFlow_0znbzxu" sourceRef="ScriptTask_0lc115e" targetRef="callGenericDeleteService" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1xbefi3" name="skipDeactivate for TRANSPORT" default="SequenceFlow_0yohjl7"> + <bpmn2:incoming>SequenceFlow_1ju26o1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0yohjl7</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1swzrij</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1ju26o1" sourceRef="ScriptTask_0xxwbdq" targetRef="ExclusiveGateway_1xbefi3" /> + <bpmn2:sequenceFlow id="SequenceFlow_0yohjl7" name="no" sourceRef="ExclusiveGateway_1xbefi3" targetRef="CallActivity_0ak0ezb" /> + <bpmn2:sequenceFlow id="SequenceFlow_1swzrij" name="yes" sourceRef="ExclusiveGateway_1xbefi3" targetRef="CallActivity_1c5wru8"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("skipDeactivate" ) == true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> </bpmn2:process> <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> @@ -168,7 +178,7 @@ ddsi.postProcessSDNCDelete(execution, response, "delete")]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> - <dc:Bounds x="-229" y="57" width="100" height="80" /> + <dc:Bounds x="-265" y="57" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3"> <dc:Bounds x="1384" y="201" width="36" height="36" /> @@ -187,61 +197,52 @@ ddsi.postProcessSDNCDelete(execution, response, "delete")]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_0k28xib_di" bpmnElement="SequenceFlow_0k28xib"> - <di:waypoint xsi:type="dc:Point" x="738" y="97" /> + <di:waypoint xsi:type="dc:Point" x="713" y="97" /> <di:waypoint xsi:type="dc:Point" x="776" y="97" /> <bpmndi:BPMNLabel> - <dc:Bounds x="757" y="82" width="0" height="0" /> + <dc:Bounds x="745" y="82" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="CallActivity_0ak0ezb_di" bpmnElement="CallActivity_0ak0ezb"> - <dc:Bounds x="638" y="57" width="100" height="80" /> + <dc:Bounds x="613" y="57" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ScriptTask_1uxr0cx_di" bpmnElement="ScriptTask_1uxr0cx"> <dc:Bounds x="776" y="57" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0jfgn05_di" bpmnElement="SequenceFlow_0jfgn05"> <di:waypoint xsi:type="dc:Point" x="-298" y="97" /> - <di:waypoint xsi:type="dc:Point" x="-262" y="97" /> - <di:waypoint xsi:type="dc:Point" x="-262" y="97" /> - <di:waypoint xsi:type="dc:Point" x="-229" y="97" /> + <di:waypoint xsi:type="dc:Point" x="-265" y="97" /> <bpmndi:BPMNLabel> - <dc:Bounds x="-247" y="97" width="0" height="0" /> + <dc:Bounds x="-281" y="82" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ScriptTask_0xxwbdq_di" bpmnElement="ScriptTask_0xxwbdq"> - <dc:Bounds x="492" y="57" width="100" height="80" /> + <dc:Bounds x="354" y="57" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0rtflal_di" bpmnElement="SequenceFlow_0rtflal"> - <di:waypoint xsi:type="dc:Point" x="592" y="97" /> - <di:waypoint xsi:type="dc:Point" x="638" y="97" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="615" y="82" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ExclusiveGateway_0590oev_di" bpmnElement="ExclusiveGateway_0590oev" isMarkerVisible="true"> - <dc:Bounds x="305" y="72" width="50" height="50" /> + <dc:Bounds x="150" y="72" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="293" y="51" width="73" height="13" /> + <dc:Bounds x="138" y="51" width="74" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1hcfvcj_di" bpmnElement="SequenceFlow_1hcfvcj"> - <di:waypoint xsi:type="dc:Point" x="355" y="97" /> - <di:waypoint xsi:type="dc:Point" x="403" y="97" /> + <di:waypoint xsi:type="dc:Point" x="200" y="97" /> + <di:waypoint xsi:type="dc:Point" x="236" y="97" /> <bpmndi:BPMNLabel> - <dc:Bounds x="384" y="99" width="18" height="12" /> + <dc:Bounds x="222" y="99" width="18" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="EndEvent_0ronxsz_di" bpmnElement="EndEvent_0ronxsz"> - <dc:Bounds x="312" y="186" width="36" height="36" /> + <dc:Bounds x="157" y="221" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="330" y="227" width="0" height="0" /> + <dc:Bounds x="175" y="262" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_05jfuko_di" bpmnElement="SequenceFlow_05jfuko"> - <di:waypoint xsi:type="dc:Point" x="330" y="122" /> - <di:waypoint xsi:type="dc:Point" x="330" y="186" /> + <di:waypoint xsi:type="dc:Point" x="175" y="122" /> + <di:waypoint xsi:type="dc:Point" x="175" y="221" /> <bpmndi:BPMNLabel> - <dc:Bounds x="310" y="127.1200546314796" width="13" height="13" /> + <dc:Bounds x="156" y="137.69226916562667" width="12" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_1w8ao21_di" bpmnElement="SequenceFlow_1w8ao21"> @@ -252,58 +253,53 @@ ddsi.postProcessSDNCDelete(execution, response, "delete")]]></bpmn2:script> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ExclusiveGateway_1mrh7us_di" bpmnElement="ExclusiveGateway_1mrh7us" isMarkerVisible="true"> - <dc:Bounds x="403" y="72" width="50" height="50" /> + <dc:Bounds x="236" y="72" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="390" y="122" width="75" height="24" /> + <dc:Bounds x="227" y="126" width="76" height="26" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0riudmc_di" bpmnElement="SequenceFlow_0riudmc"> - <di:waypoint xsi:type="dc:Point" x="428" y="72" /> - <di:waypoint xsi:type="dc:Point" x="428" y="-20" /> + <di:waypoint xsi:type="dc:Point" x="261" y="72" /> + <di:waypoint xsi:type="dc:Point" x="261" y="-20" /> <di:waypoint xsi:type="dc:Point" x="1252" y="-20" /> <di:waypoint xsi:type="dc:Point" x="1252" y="57" /> <bpmndi:BPMNLabel> - <dc:Bounds x="834" y="-35" width="18" height="12" /> + <dc:Bounds x="753" y="-35" width="18" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_1dwch0k_di" bpmnElement="SequenceFlow_1dwch0k"> - <di:waypoint xsi:type="dc:Point" x="453" y="97" /> - <di:waypoint xsi:type="dc:Point" x="492" y="97" /> + <di:waypoint xsi:type="dc:Point" x="286" y="97" /> + <di:waypoint xsi:type="dc:Point" x="310" y="97" /> + <di:waypoint xsi:type="dc:Point" x="353" y="97" /> <bpmndi:BPMNLabel> - <dc:Bounds x="464" y="73" width="12" height="12" /> + <dc:Bounds x="308" y="101.4811676034096" width="13" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="CallActivity_1s8pf0x_di" bpmnElement="CallActivity_1s8pf0x"> - <dc:Bounds x="-64" y="57" width="100" height="80" /> + <dc:Bounds x="-121" y="57" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1jqc16k_di" bpmnElement="SequenceFlow_1jqc16k"> - <di:waypoint xsi:type="dc:Point" x="-129" y="97" /> - <di:waypoint xsi:type="dc:Point" x="-100" y="97" /> - <di:waypoint xsi:type="dc:Point" x="-100" y="97" /> - <di:waypoint xsi:type="dc:Point" x="-64" y="97" /> + <di:waypoint xsi:type="dc:Point" x="-165" y="97" /> + <di:waypoint xsi:type="dc:Point" x="-121" y="97" /> <bpmndi:BPMNLabel> - <dc:Bounds x="-85" y="97" width="0" height="0" /> + <dc:Bounds x="-143" y="82" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ScriptTask_02da0lj_di" bpmnElement="ScriptTask_02da0lj"> - <dc:Bounds x="107" y="57" width="100" height="80" /> + <dc:Bounds x="20" y="57" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1grea1r_di" bpmnElement="SequenceFlow_1grea1r"> - <di:waypoint xsi:type="dc:Point" x="36" y="97" /> - <di:waypoint xsi:type="dc:Point" x="73" y="97" /> - <di:waypoint xsi:type="dc:Point" x="73" y="97" /> - <di:waypoint xsi:type="dc:Point" x="107" y="97" /> + <di:waypoint xsi:type="dc:Point" x="-21" y="97" /> + <di:waypoint xsi:type="dc:Point" x="20" y="97" /> <bpmndi:BPMNLabel> - <dc:Bounds x="88" y="97" width="0" height="0" /> + <dc:Bounds x="0" y="82" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_1up0j5r_di" bpmnElement="SequenceFlow_1up0j5r"> - <di:waypoint xsi:type="dc:Point" x="207" y="97" /> - <di:waypoint xsi:type="dc:Point" x="256" y="97" /> - <di:waypoint xsi:type="dc:Point" x="256" y="97" /> - <di:waypoint xsi:type="dc:Point" x="305" y="97" /> + <di:waypoint xsi:type="dc:Point" x="120" y="97" /> + <di:waypoint xsi:type="dc:Point" x="150" y="97" /> <bpmndi:BPMNLabel> - <dc:Bounds x="271" y="97" width="0" height="0" /> + <dc:Bounds x="135" y="82" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ScriptTask_1ybdq3e_di" bpmnElement="ScriptTask_1ybdq3e"> @@ -368,6 +364,35 @@ ddsi.postProcessSDNCDelete(execution, response, "delete")]]></bpmn2:script> <dc:Bounds x="1180" y="82" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1xbefi3_di" bpmnElement="ExclusiveGateway_1xbefi3" isMarkerVisible="true"> + <dc:Bounds x="508" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="495" y="126" width="84" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ju26o1_di" bpmnElement="SequenceFlow_1ju26o1"> + <di:waypoint xsi:type="dc:Point" x="454" y="97" /> + <di:waypoint xsi:type="dc:Point" x="508" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="481" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yohjl7_di" bpmnElement="SequenceFlow_0yohjl7"> + <di:waypoint xsi:type="dc:Point" x="558" y="97" /> + <di:waypoint xsi:type="dc:Point" x="613" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="580" y="72" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1swzrij_di" bpmnElement="SequenceFlow_1swzrij"> + <di:waypoint xsi:type="dc:Point" x="533" y="72" /> + <di:waypoint xsi:type="dc:Point" x="533" y="26" /> + <di:waypoint xsi:type="dc:Point" x="967" y="26" /> + <di:waypoint xsi:type="dc:Point" x="967" y="57" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="741" y="11" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVfModuleFromVnf.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVfModuleFromVnf.bpmn new file mode 100644 index 0000000000..bc42e6094b --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVfModuleFromVnf.bpmn @@ -0,0 +1,396 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoDeleteVfModuleFromVnf" name="DoDeleteVfModuleFromVnf" isExecutable="true"> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="VNFAdapterPrep" targetRef="InvokeVNFAdapterRestV1" /> + <bpmn2:callActivity id="callSDNCAdapterTopologyUnassign" name="Call SDNC Adapter Topology Unassign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="DDVMFV_unassignSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="sdncAdapterResponse" target="DoDVfMod_doDeleteVfModuleResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_33</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_33" name="" sourceRef="callSDNCAdapterTopologyUnassign" targetRef="validateSDNCResponse" /> + <bpmn2:scriptTask id="VNFAdapterPrep" name="VNFAdapter
Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0kx9e3s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.prepVNFAdapterRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="SDNCAdapterPrep2" name="SDNCAdapter
Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0ltm4jt</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.preProcessSDNCUnassignRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="SDNCAdapterPrep2" targetRef="callSDNCAdapterTopologyUnassign" /> + <bpmn2:callActivity id="InvokeVNFAdapterRestV1" name="Invoke
VNFAdapterRestV1" calledElement="vnfAdapterRestV1"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="vnfAdapterRestV1Request" target="vnfAdapterRestV1Request" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="vnfAdapterRestV1Response" target="DDVMFV_doDeleteVfModuleResponse" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0hia88a</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_9"> + <bpmn2:incoming>SequenceFlow_1eemrjp</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="validateSDNCResponse" name="PostProcess SDNC Adapter Unassign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_33</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +String response = execution.getVariable("DDVMFV_deactivateSDNCAdapterResponse") +ddvmfv.validateSDNCResponse(execution, response, "unassign")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="validateSDNCResponse" targetRef="DeleteAAIVfModulePrep" /> + <bpmn2:scriptTask id="InitializeVariables" name="Initialize Variables" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0qbjihn</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="InitializeVariables" /> + <bpmn2:scriptTask id="DeleteNetworkPoliciesFromAAI" name="Delete Network Policies from AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0coa90m</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ltm4jt</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.deleteNetworkPoliciesFromAAI(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PostProcessVNFAdapterRequest" name="PostProcess VNFAdapter Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0hia88a</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0coa90m</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.postProcessVNFAdapterRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0coa90m" sourceRef="PostProcessVNFAdapterRequest" targetRef="DeleteNetworkPoliciesFromAAI" /> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0y4td40" sourceRef="preProcessSDNCDeactivateRequest" targetRef="callSDNCAdapterTopologyDeactivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_12q2r4i" sourceRef="callSDNCAdapterTopologyDeactivate" targetRef="postProcessSDNCDeactivateRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_0hia88a" sourceRef="InvokeVNFAdapterRestV1" targetRef="PostProcessVNFAdapterRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_0kx9e3s" sourceRef="postProcessSDNCDeactivateRequest" targetRef="VNFAdapterPrep" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ltm4jt" sourceRef="DeleteNetworkPoliciesFromAAI" targetRef="SDNCAdapterPrep2" /> + <bpmn2:scriptTask id="preProcessSDNCDeactivateRequest" name="PreProcess SDNC Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1igsfgk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0y4td40</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.preProcessSDNCDeactivateRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="callSDNCAdapterTopologyDeactivate" name="Call SDNC Adapter Topology Deactivate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DDVMFV_deactivateSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DDVMFV_deactivateSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0y4td40</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12q2r4i</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="postProcessSDNCDeactivateRequest" name="PostProcess SDNC Adapter Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12q2r4i</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0kx9e3s</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +String response = execution.getVariable("DDVMFV_deactivateSDNCAdapterResponse") +ddvmfv.validateSDNCResponse(execution, response, "deactivate")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0qbjihn" sourceRef="InitializeVariables" targetRef="QueryAAIForVfModule" /> + <bpmn2:sequenceFlow id="SequenceFlow_1c2lvlc" sourceRef="QueryAAIForVfModule" targetRef="ValidateVfModule" /> + <bpmn2:scriptTask id="QueryAAIForVfModule" name="Query AAI for VF Module" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0qbjihn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c2lvlc</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.queryAAIForVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1igsfgk" sourceRef="ValidateVfModule" targetRef="preProcessSDNCDeactivateRequest" /> + <bpmn2:scriptTask id="ValidateVfModule" name="Validate VF Module" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1c2lvlc</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1igsfgk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.validateVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:subProcess id="SubProcess_1r8unf9" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1ebrix6"> + <bpmn2:outgoing>SequenceFlow_095634c</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_15yfom3" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_0yb2lmo"> + <bpmn2:incoming>SequenceFlow_0yvjvhu</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_1ypch9x" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_095634c</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0yvjvhu</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_095634c" name="" sourceRef="StartEvent_1ebrix6" targetRef="ScriptTask_1ypch9x" /> + <bpmn2:sequenceFlow id="SequenceFlow_0yvjvhu" name="" sourceRef="ScriptTask_1ypch9x" targetRef="EndEvent_0yb2lmo" /> + </bpmn2:subProcess> + <bpmn2:callActivity id="DeleteAAIVfModule" name="Invoke
DeleteAAIVfModule" calledElement="DeleteAAIVfModule"> + <bpmn2:extensionElements> + <camunda:in source="DeleteAAIVfModuleRequest" target="DeleteAAIVfModuleRequest" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_092kvy3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1eemrjp</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="DeleteAAIVfModulePrep" name="DeleteAAIVfModule
Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_092kvy3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.prepDeleteAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_092kvy3" name="" sourceRef="DeleteAAIVfModulePrep" targetRef="DeleteAAIVfModule" /> + <bpmn2:sequenceFlow id="SequenceFlow_1eemrjp" sourceRef="DeleteAAIVfModule" targetRef="EndEvent_9" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmn2:message id="Message_1" name="DoDeleteVfModuleRequest" /> + <bpmn2:error id="Error_15yfom3" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteVfModuleFromVnf"> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_22" bpmnElement="InitializeVariables"> + <dc:Bounds x="144" y="36" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" targetElement="_BPMNShape_ScriptTask_22"> + <di:waypoint xsi:type="dc:Point" x="70" y="75" /> + <di:waypoint xsi:type="dc:Point" x="144" y="76" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="60.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_170" bpmnElement="VNFAdapterPrep"> + <dc:Bounds x="125" y="330" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_13" bpmnElement="InvokeVNFAdapterRestV1"> + <dc:Bounds x="281" y="330" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_172" bpmnElement="SDNCAdapterPrep2"> + <dc:Bounds x="129" y="487" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_15" bpmnElement="callSDNCAdapterTopologyUnassign"> + <dc:Bounds x="281" y="487" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_32" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_ScriptTask_172" targetElement="_BPMNShape_CallActivity_15"> + <di:waypoint xsi:type="dc:Point" x="229" y="527" /> + <di:waypoint xsi:type="dc:Point" x="281" y="528" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="255" y="512.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_33" bpmnElement="SequenceFlow_33" sourceElement="_BPMNShape_CallActivity_15" targetElement="_BPMNShape_ScriptTask_251"> + <di:waypoint xsi:type="dc:Point" x="381" y="527" /> + <di:waypoint xsi:type="dc:Point" x="425" y="527" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="403" y="512" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_169" bpmnElement="EndEvent_9"> + <dc:Bounds x="873" y="509" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="891" y="550" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_4" targetElement="_BPMNShape_ScriptTask_170"> + <di:waypoint xsi:type="dc:Point" x="225" y="370" /> + <di:waypoint xsi:type="dc:Point" x="281" y="370" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="253" y="355" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_251" bpmnElement="validateSDNCResponse"> + <dc:Bounds x="425" y="487" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_251"> + <di:waypoint xsi:type="dc:Point" x="525" y="527" /> + <di:waypoint xsi:type="dc:Point" x="548" y="527" /> + <di:waypoint xsi:type="dc:Point" x="548" y="527" /> + <di:waypoint xsi:type="dc:Point" x="570" y="527" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="563" y="527" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0la8haz_di" bpmnElement="DeleteNetworkPoliciesFromAAI"> + <dc:Bounds x="581" y="330" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0lewl6b_di" bpmnElement="PostProcessVNFAdapterRequest"> + <dc:Bounds x="430" y="330" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0coa90m_di" bpmnElement="SequenceFlow_0coa90m"> + <di:waypoint xsi:type="dc:Point" x="530" y="370" /> + <di:waypoint xsi:type="dc:Point" x="581" y="370" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="556" y="355" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="StartEvent_1mifg2p_di" bpmnElement="StartEvent_1"> + <dc:Bounds x="34" y="57" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="52" y="98" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0y4td40_di" bpmnElement="SequenceFlow_0y4td40"> + <di:waypoint xsi:type="dc:Point" x="268" y="219" /> + <di:waypoint xsi:type="dc:Point" x="288" y="219" /> + <di:waypoint xsi:type="dc:Point" x="288" y="219" /> + <di:waypoint xsi:type="dc:Point" x="316" y="219" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="303" y="219" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12q2r4i_di" bpmnElement="SequenceFlow_12q2r4i"> + <di:waypoint xsi:type="dc:Point" x="416" y="219" /> + <di:waypoint xsi:type="dc:Point" x="464" y="219" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="440" y="204" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0hia88a_di" bpmnElement="SequenceFlow_0hia88a"> + <di:waypoint xsi:type="dc:Point" x="381" y="370" /> + <di:waypoint xsi:type="dc:Point" x="430" y="370" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="406" y="345" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0kx9e3s_di" bpmnElement="SequenceFlow_0kx9e3s"> + <di:waypoint xsi:type="dc:Point" x="564" y="219" /> + <di:waypoint xsi:type="dc:Point" x="763" y="219" /> + <di:waypoint xsi:type="dc:Point" x="763" y="293" /> + <di:waypoint xsi:type="dc:Point" x="39" y="293" /> + <di:waypoint xsi:type="dc:Point" x="39" y="370" /> + <di:waypoint xsi:type="dc:Point" x="125" y="370" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="401" y="278" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ltm4jt_di" bpmnElement="SequenceFlow_0ltm4jt"> + <di:waypoint xsi:type="dc:Point" x="681" y="370" /> + <di:waypoint xsi:type="dc:Point" x="759" y="370" /> + <di:waypoint xsi:type="dc:Point" x="759" y="442" /> + <di:waypoint xsi:type="dc:Point" x="51" y="442" /> + <di:waypoint xsi:type="dc:Point" x="51" y="527" /> + <di:waypoint xsi:type="dc:Point" x="129" y="527" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="405" y="427" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1boza4q_di" bpmnElement="preProcessSDNCDeactivateRequest"> + <dc:Bounds x="168" y="179" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0xpc0da_di" bpmnElement="callSDNCAdapterTopologyDeactivate"> + <dc:Bounds x="316" y="179" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1kkyngh_di" bpmnElement="postProcessSDNCDeactivateRequest"> + <dc:Bounds x="464" y="179" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0qbjihn_di" bpmnElement="SequenceFlow_0qbjihn"> + <di:waypoint xsi:type="dc:Point" x="244" y="76" /> + <di:waypoint xsi:type="dc:Point" x="316" y="76" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="280" y="61" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1c2lvlc_di" bpmnElement="SequenceFlow_1c2lvlc"> + <di:waypoint xsi:type="dc:Point" x="416" y="76" /> + <di:waypoint xsi:type="dc:Point" x="473" y="76" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="445" y="61" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1gf22c0_di" bpmnElement="QueryAAIForVfModule"> + <dc:Bounds x="316" y="36" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1igsfgk_di" bpmnElement="SequenceFlow_1igsfgk"> + <di:waypoint xsi:type="dc:Point" x="573" y="76" /> + <di:waypoint xsi:type="dc:Point" x="760" y="76" /> + <di:waypoint xsi:type="dc:Point" x="760" y="145" /> + <di:waypoint xsi:type="dc:Point" x="34" y="145" /> + <di:waypoint xsi:type="dc:Point" x="34" y="218" /> + <di:waypoint xsi:type="dc:Point" x="168" y="219" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="397" y="130" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1jgeknl_di" bpmnElement="ValidateVfModule"> + <dc:Bounds x="473" y="36" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1r8unf9_di" bpmnElement="SubProcess_1r8unf9" isExpanded="true"> + <dc:Bounds x="43" y="622" width="467" height="193" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1ebrix6_di" bpmnElement="StartEvent_1ebrix6"> + <dc:Bounds x="111" y="689" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="129" y="730" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0yb2lmo_di" bpmnElement="EndEvent_0yb2lmo"> + <dc:Bounds x="404" y="689" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="422" y="730" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1ypch9x_di" bpmnElement="ScriptTask_1ypch9x"> + <dc:Bounds x="215" y="667" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_095634c_di" bpmnElement="SequenceFlow_095634c"> + <di:waypoint xsi:type="dc:Point" x="147" y="707" /> + <di:waypoint xsi:type="dc:Point" x="215" y="707" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="181" y="692" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yvjvhu_di" bpmnElement="SequenceFlow_0yvjvhu"> + <di:waypoint xsi:type="dc:Point" x="315" y="707" /> + <di:waypoint xsi:type="dc:Point" x="404" y="707" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="360" y="692" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_10td9ns_di" bpmnElement="DeleteAAIVfModule"> + <dc:Bounds x="713" y="487" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rcw5x3_di" bpmnElement="DeleteAAIVfModulePrep"> + <dc:Bounds x="570" y="487" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_092kvy3_di" bpmnElement="SequenceFlow_092kvy3"> + <di:waypoint xsi:type="dc:Point" x="670" y="527" /> + <di:waypoint xsi:type="dc:Point" x="713" y="527" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="692" y="512" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1eemrjp_di" bpmnElement="SequenceFlow_1eemrjp"> + <di:waypoint xsi:type="dc:Point" x="813" y="527" /> + <di:waypoint xsi:type="dc:Point" x="873" y="527" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="843" y="502" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVfModuleVolumeV2.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVfModuleVolumeV2.bpmn new file mode 100644 index 0000000000..fec3f93521 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVfModuleVolumeV2.bpmn @@ -0,0 +1,208 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0"> + <bpmn:process id="DoDeleteVfModuleVolumeV2" name="DoDeleteVfModuleVolumeV2" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1" name="Start"> + <bpmn:outgoing>SequenceFlow_1gvfdp4</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="Task_06u1lr0" name="Call REST AAI Query Cloud Region" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1vy2ojp</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1dlcqmc</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def delVfModuleVol = new DoDeleteVfModuleVolumeV2() +delVfModuleVol.executeMethod('callRESTQueryAAICloudRegion', execution, isDebugLogEnabled)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Task_1woqfjw" name="Call REST AAI Query for Volume Group" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1dlcqmc</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1kjccf1</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def deleteVfMod = new DoDeleteVfModuleVolumeV2() +deleteVfMod.executeMethod('callRESTQueryAAIForVolumeGroup', execution, isDebugLogEnabled)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Task_0yjx0p2" name="Prepare VNF Adapter Delete" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1kjccf1</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1tgngf7</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def deleteVfMod = new DoDeleteVfModuleVolumeV2() +deleteVfMod.executeMethod('prepareVnfAdapterDeleteRequest', execution, isDebugLogEnabled)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="Task_14fsstq" name="Call REST VNF Adapter Delete" calledElement="vnfAdapterRestV1"> + <bpmn:extensionElements> + <camunda:in source="DDVMV_deleteVnfARequest" target="vnfAdapterRestV1Request" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in variables="all" /> + <camunda:out source="vnfAdapterRestV1Response" target="DDVMV_deleteVnfAResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="VNFREST_SuccessIndicator" target="VNFREST_SuccessIndicator" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1tgngf7</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1x3luyj</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="Task_17q1roq" name="Call REST AAI Delete Volume Group" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0cy0y9t</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_13c3cv2</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def deleteVfMod = new DoDeleteVfModuleVolumeV2() +deleteVfMod.executeMethod('callRESTDeleteAAIVolumeGroup', execution, isDebugLogEnabled)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:endEvent id="EndEvent_0fw1gkf" name="Stop"> + <bpmn:incoming>SequenceFlow_1sgtwr2</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1dlcqmc" sourceRef="Task_06u1lr0" targetRef="Task_1woqfjw" /> + <bpmn:sequenceFlow id="SequenceFlow_1kjccf1" sourceRef="Task_1woqfjw" targetRef="Task_0yjx0p2" /> + <bpmn:sequenceFlow id="SequenceFlow_1tgngf7" sourceRef="Task_0yjx0p2" targetRef="Task_14fsstq" /> + <bpmn:scriptTask id="Task_1i432ud" name="Pre Process Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1gvfdp4</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1vy2ojp</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def deleteVfMod = new DoDeleteVfModuleVolumeV2() +deleteVfMod.executeMethod('preProcessRequest', execution, isDebugLogEnabled) +]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1gvfdp4" sourceRef="StartEvent_1" targetRef="Task_1i432ud" /> + <bpmn:sequenceFlow id="SequenceFlow_1vy2ojp" sourceRef="Task_1i432ud" targetRef="Task_06u1lr0" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_0o3lxtf" name="VNF Adapter REST call success?"> + <bpmn:incoming>SequenceFlow_1x3luyj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0cy0y9t</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1rgd8dg</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1x3luyj" sourceRef="Task_14fsstq" targetRef="ExclusiveGateway_0o3lxtf" /> + <bpmn:sequenceFlow id="SequenceFlow_0cy0y9t" name="Yes" sourceRef="ExclusiveGateway_0o3lxtf" targetRef="Task_17q1roq"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{VNFREST_SuccessIndicator == true}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:endEvent id="EndEvent_00cohim" name="throw MSOException"> + <bpmn:incoming>SequenceFlow_1rgd8dg</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_0fa7ks7" /> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1rgd8dg" sourceRef="ExclusiveGateway_0o3lxtf" targetRef="EndEvent_00cohim" /> + <bpmn:scriptTask id="Task_018w43g" name="Post Process" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_13c3cv2</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1sgtwr2</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def deleteVfMod = new DoDeleteVfModuleVolumeV2() +deleteVfMod.executeMethod('postProcess', execution, isDebugLogEnabled)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_13c3cv2" sourceRef="Task_17q1roq" targetRef="Task_018w43g" /> + <bpmn:sequenceFlow id="SequenceFlow_1sgtwr2" sourceRef="Task_018w43g" targetRef="EndEvent_0fw1gkf" /> + </bpmn:process> + <bpmn:error id="Error_0fa7ks7" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteVfModuleVolumeV2"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="173" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="179" y="138" width="23" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1qojxu5_di" bpmnElement="Task_06u1lr0"> + <dc:Bounds x="407" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1mht6f6_di" bpmnElement="Task_1woqfjw"> + <dc:Bounds x="564" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_02ujn8y_di" bpmnElement="Task_0yjx0p2"> + <dc:Bounds x="713" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0bf87en_di" bpmnElement="Task_14fsstq"> + <dc:Bounds x="865" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_07kmkio_di" bpmnElement="Task_17q1roq"> + <dc:Bounds x="1151" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0fw1gkf_di" bpmnElement="EndEvent_0fw1gkf"> + <dc:Bounds x="1463" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1470" y="138" width="22" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1dlcqmc_di" bpmnElement="SequenceFlow_1dlcqmc"> + <di:waypoint xsi:type="dc:Point" x="507" y="120" /> + <di:waypoint xsi:type="dc:Point" x="564" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="536" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1kjccf1_di" bpmnElement="SequenceFlow_1kjccf1"> + <di:waypoint xsi:type="dc:Point" x="664" y="120" /> + <di:waypoint xsi:type="dc:Point" x="713" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="689" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1tgngf7_di" bpmnElement="SequenceFlow_1tgngf7"> + <di:waypoint xsi:type="dc:Point" x="813" y="120" /> + <di:waypoint xsi:type="dc:Point" x="865" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="839" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0wjwf8w_di" bpmnElement="Task_1i432ud"> + <dc:Bounds x="247" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1gvfdp4_di" bpmnElement="SequenceFlow_1gvfdp4"> + <di:waypoint xsi:type="dc:Point" x="209" y="120" /> + <di:waypoint xsi:type="dc:Point" x="247" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="228" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1vy2ojp_di" bpmnElement="SequenceFlow_1vy2ojp"> + <di:waypoint xsi:type="dc:Point" x="347" y="120" /> + <di:waypoint xsi:type="dc:Point" x="407" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="377" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0o3lxtf_di" bpmnElement="ExclusiveGateway_0o3lxtf" isMarkerVisible="true"> + <dc:Bounds x="1028" y="95" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1020" y="145" width="66" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1x3luyj_di" bpmnElement="SequenceFlow_1x3luyj"> + <di:waypoint xsi:type="dc:Point" x="965" y="120" /> + <di:waypoint xsi:type="dc:Point" x="1028" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="997" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0cy0y9t_di" bpmnElement="SequenceFlow_0cy0y9t"> + <di:waypoint xsi:type="dc:Point" x="1078" y="120" /> + <di:waypoint xsi:type="dc:Point" x="1151" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1106" y="95" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0zln0ww_di" bpmnElement="EndEvent_00cohim"> + <dc:Bounds x="1035" y="274" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1016" y="310" width="73" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rgd8dg_di" bpmnElement="SequenceFlow_1rgd8dg"> + <di:waypoint xsi:type="dc:Point" x="1053" y="145" /> + <di:waypoint xsi:type="dc:Point" x="1053" y="274" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1068" y="199.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1ilduoy_di" bpmnElement="Task_018w43g"> + <dc:Bounds x="1298" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_13c3cv2_di" bpmnElement="SequenceFlow_13c3cv2"> + <di:waypoint xsi:type="dc:Point" x="1251" y="120" /> + <di:waypoint xsi:type="dc:Point" x="1298" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1275" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1sgtwr2_di" bpmnElement="SequenceFlow_1sgtwr2"> + <di:waypoint xsi:type="dc:Point" x="1398" y="120" /> + <di:waypoint xsi:type="dc:Point" x="1463" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1431" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVnfAndModules.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVnfAndModules.bpmn index 078e0107ba..9850552a9e 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVnfAndModules.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVnfAndModules.bpmn @@ -66,7 +66,7 @@ exceptionUtil.processJavaException(execution)]]></bpmn2:script> <camunda:in source="DDVAM_vfModuleModelInfo" target="vfModuleModelInfo" /> <camunda:in source="cloudConfiguration" target="cloudConfiguration" /> <camunda:in source="DDVAM_sdncVersion" target="sdncVersion" /> - <camunda:in source=""true"" target="isVidRequest" /> + <camunda:in source="DDVAM_isVidRequest" target="isVidRequest" /> <camunda:out source="WorkflowException" target="WorkflowException" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_1xujrk5</bpmn2:incoming> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateNetworkInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateNetworkInstance.bpmn index 45e1a49f8a..53c419e6a6 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateNetworkInstance.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateNetworkInstance.bpmn @@ -155,7 +155,7 @@ DoUpdateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script> </bpmn2:exclusiveGateway> <bpmn2:sequenceFlow id="SequenceFlow_0nrc66n" name="No" sourceRef="ExclusiveGateway_1kjh92x" targetRef="sdncOk_ExclusiveGateway" /> <bpmn2:sequenceFlow id="SequenceFlow_0srdlf3" name="Yes" sourceRef="ExclusiveGateway_1kjh92x" targetRef="InclusiveGateway_6"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") == '1702'} ]]></bpmn2:conditionExpression> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:scriptTask id="ScriptTask_1gedbow" name="Set Exception Flag" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming> @@ -238,18 +238,12 @@ def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() DoUpdateNetworkInstance.callRESTQueryAAINetworkId(execution)]]></bpmn2:script> </bpmn2:scriptTask> <bpmn2:sequenceFlow id="SequenceFlow_24" name="" sourceRef="callRESTQueryNetworkId_ScriptTask" targetRef="callRESTQueryCloudRegion_ScriptTask" /> - <bpmn2:endEvent id="EndEvent_2"> - <bpmn2:incoming>SequenceFlow_30</bpmn2:incoming> - <bpmn2:errorEventDefinition id="_ErrorEventDefinition_97" errorRef="Error_2" /> - </bpmn2:endEvent> <bpmn2:scriptTask id="workflowExceptionSINotFound" name="Create Workflow Exception" scriptFormat="groovy"> <bpmn2:incoming>siFoundNo</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_30</bpmn2:outgoing> - <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.utils.* + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* ExceptionUtil exceptionUtil = new ExceptionUtil() -exceptionUtil.buildWorkflowException(execution, 404, "Service Instance Not Found")]]></bpmn2:script> +exceptionUtil.buildAndThrowWorkflowException(execution, 404, "Service Instance Not Found")]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_30" name="" sourceRef="workflowExceptionSINotFound" targetRef="EndEvent_2" /> <bpmn2:exclusiveGateway id="siFoundCheck" name="is SI Found?" default="siFoundNo"> <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> <bpmn2:outgoing>siFoundYes</bpmn2:outgoing> @@ -259,7 +253,7 @@ exceptionUtil.buildWorkflowException(execution, 404, "Service Instance Not Found <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("GENGSI_FoundIndicator" ) == true && execution.getVariable("GENGSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:sequenceFlow id="siFoundNo" name="No" sourceRef="siFoundCheck" targetRef="workflowExceptionSINotFound" /> - <bpmn2:callActivity id="callGetServiceInstance" name="Get
Service
Instance" calledElement="GenericGetService"> + <bpmn2:callActivity id="callGetServiceInstance" name="Get Service Instance" calledElement="GenericGetService"> <bpmn2:extensionElements> <camunda:in source="UPDNETI_serviceInstanceId" target="GENGS_serviceInstanceId" /> <camunda:out source="GENGS_serviceInstance" target="UPDNETI_serviceInstanceId" /> @@ -714,12 +708,6 @@ DoUpdateNetworkInstance.callRESTQueryAAINetworkPolicy(execution)]]></bpmn2:scrip <dc:Bounds x="868" y="157" width="29" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_247" bpmnElement="EndEvent_2"> - <dc:Bounds x="1155" y="278" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1173" y="319" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_331" bpmnElement="workflowExceptionSINotFound"> <dc:Bounds x="984" y="256" width="100" height="80" /> </bpmndi:BPMNShape> @@ -731,13 +719,6 @@ DoUpdateNetworkInstance.callRESTQueryAAINetworkPolicy(execution)]]></bpmn2:scrip <dc:Bounds x="871" y="233" width="22" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_30" sourceElement="_BPMNShape_ScriptTask_331" targetElement="_BPMNShape_EndEvent_247"> - <di:waypoint xsi:type="dc:Point" x="1084" y="296" /> - <di:waypoint xsi:type="dc:Point" x="1155" y="296" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1103" y="296" width="6" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_ScriptTask_245"> <di:waypoint xsi:type="dc:Point" x="1084" y="140" /> <di:waypoint xsi:type="dc:Point" x="1200" y="140" /> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateNetworkInstanceRollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateNetworkInstanceRollback.bpmn index 6fd0565f3a..a8ea29b15c 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateNetworkInstanceRollback.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateNetworkInstanceRollback.bpmn @@ -82,7 +82,7 @@ DoUpdateNetworkInstanceRollback.validateRollbackResponses(execution)]]></bpmn:sc <bpmn:sequenceFlow id="SequenceFlow_17o4w67" sourceRef="ServiceTask_0bqh5yl" targetRef="ExclusiveGateway_1n5jck8" /> <bpmn:sequenceFlow id="SequenceFlow_101y57s" name="No" sourceRef="ExclusiveGateway_17g4q5c" targetRef="CallActivity_1xilevb" /> <bpmn:sequenceFlow id="SequenceFlow_0mw0dgd" name="Yes" sourceRef="ExclusiveGateway_17g4q5c" targetRef="ExclusiveGateway_0b9kbop"> - <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") == '1702'} ]]></bpmn:conditionExpression> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn:conditionExpression> </bpmn:sequenceFlow> <bpmn:endEvent id="EndEvent_1fvr7ad"> <bpmn:incoming>SequenceFlow_0yto4gz</bpmn:incoming> @@ -149,7 +149,7 @@ wasDeleted <bpmn:association id="Association_1gx121b" sourceRef="ScriptTask_1ggaxfu" targetRef="TextAnnotation_0vwyo82" /> </bpmn:process> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> - <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateNetworkInstanceRollback"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateNetworkInstanceRollback"> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> <dc:Bounds x="240" y="354" width="36" height="36" /> <bpmndi:BPMNLabel> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateVfModule.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateVfModule.bpmn index 5911067a49..ce96a3593a 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateVfModule.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateVfModule.bpmn @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> -<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="_Wblj8GyfEeWUWLTvug7ZOg" exporter="camunda modeler" exporterVersion="2.7.0" targetNamespace="http://camunda.org/schema/1.0/bpmn"> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> <bpmn2:process id="DoUpdateVfModule" name="DoUpdateVfModule" isExecutable="true"> - <bpmn2:documentation>This flow expects its incoming request to be in the variable 'DoUpdateVfModuleRequest'. This flow produces no output.</bpmn2:documentation> + <bpmn2:documentation><![CDATA[This flow expects its incoming request to be in the variable 'DoUpdateVfModuleRequest'. This flow produces no output.]]></bpmn2:documentation> <bpmn2:scriptTask id="PrepareUpdateAAIVfModule_prep" name="Prepare Update AAI Vf Module (prep)" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_38</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> @@ -9,16 +9,16 @@ def duvm = new DoUpdateVfModule() duvm.prepPrepareUpdateAAIVfModule(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="PrepareUpdateAAIVfModule_prep" targetRef="ScriptTask_1"/> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="PrepareUpdateAAIVfModule_prep" targetRef="ScriptTask_1" /> <bpmn2:callActivity id="ScriptTask_1" name="Prepare Update AAI Vf Module" calledElement="PrepareUpdateAAIVfModule"> <bpmn2:extensionElements> - <camunda:in source="DOUPVfMod_prepareUpdateAAIVfModuleRequest" target="PrepareUpdateAAIVfModuleRequest"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> - <camunda:out source="PUAAIVfMod_outVfModule" target="DOUPVfMod_vfModule"/> - <camunda:out source="PUAAIVfMod_vnfName" target="DOUPVfMod_vnfNameFromAAI"/> - <camunda:out source="WorkflowException" target="WorkflowException"/> + <camunda:in source="DOUPVfMod_prepareUpdateAAIVfModuleRequest" target="PrepareUpdateAAIVfModuleRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="PUAAIVfMod_outVfModule" target="DOUPVfMod_vfModule" /> + <camunda:out source="PUAAIVfMod_vnfName" target="DOUPVfMod_vnfNameFromAAI" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> @@ -30,7 +30,7 @@ duvm.prepPrepareUpdateAAIVfModule(execution)]]></bpmn2:script> def duvm = new DoUpdateVfModule() duvm.preProcessRequest(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_38" name="" sourceRef="ProcessReceivedRequest" targetRef="PrepareUpdateAAIVfModule_prep"/> + <bpmn2:sequenceFlow id="SequenceFlow_38" name="" sourceRef="ProcessReceivedRequest" targetRef="PrepareUpdateAAIVfModule_prep" /> <bpmn2:subProcess id="SubProcess_1" name="Catch Exception" triggeredByEvent="true"> <bpmn2:scriptTask id="ScriptTask_16" name="Handle Exception" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> @@ -41,24 +41,24 @@ duvm.handleWorkflowException(execution)]]></bpmn2:script> </bpmn2:scriptTask> <bpmn2:endEvent id="EndEvent_3"> <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming> - <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_11"/> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_11" /> </bpmn2:endEvent> - <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="ScriptTask_16" targetRef="EndEvent_3"/> + <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="ScriptTask_16" targetRef="EndEvent_3" /> <bpmn2:startEvent id="StartEvent_3"> <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> - <bpmn2:errorEventDefinition id="ErrorEventDefinition_2"/> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" /> </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="StartEvent_3" targetRef="ScriptTask_16"/> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="StartEvent_3" targetRef="ScriptTask_16" /> </bpmn2:subProcess> <bpmn2:endEvent id="EndEvent_5"> <bpmn2:incoming>SequenceFlow_36</bpmn2:incoming> - <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_12"/> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_12" /> </bpmn2:endEvent> <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> <bpmn2:outgoing>SequenceFlow_36</bpmn2:outgoing> - <bpmn2:errorEventDefinition id="_ErrorEventDefinition_70"/> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_70" /> </bpmn2:boundaryEvent> - <bpmn2:sequenceFlow id="SequenceFlow_36" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_5"/> + <bpmn2:sequenceFlow id="SequenceFlow_36" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_5" /> <bpmn2:scriptTask id="ScriptTask_10" name="Update AAI Vf Module (prep)" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> @@ -67,19 +67,19 @@ duvm.handleWorkflowException(execution)]]></bpmn2:script> def duvm = new DoUpdateVfModule() duvm.prepUpdateAAIVfModule(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_25" name="" sourceRef="ScriptTask_10" targetRef="ScriptTask_11"/> + <bpmn2:sequenceFlow id="SequenceFlow_25" name="" sourceRef="ScriptTask_10" targetRef="ScriptTask_11" /> <bpmn2:callActivity id="ScriptTask_11" name="UpdateAAIVfModule" calledElement="UpdateAAIVfModule"> <bpmn2:extensionElements> - <camunda:out source="WorkflowException" target="WorkflowException"/> - <camunda:in source="DOUPVfMod_updateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="DOUPVfMod_updateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_25</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_26</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_26" name="" sourceRef="ScriptTask_11" targetRef="ScriptTask_12"/> + <bpmn2:sequenceFlow id="SequenceFlow_26" name="" sourceRef="ScriptTask_11" targetRef="ScriptTask_12" /> <bpmn2:scriptTask id="ScriptTask_12" name="SDNC Topology Activate (prep)" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_26</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_27</bpmn2:outgoing> @@ -87,16 +87,16 @@ duvm.prepUpdateAAIVfModule(execution)]]></bpmn2:script> def duvm = new DoUpdateVfModule() duvm.prepSDNCTopologyAct(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="ScriptTask_12" targetRef="ScriptTask_13"/> + <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="ScriptTask_12" targetRef="ScriptTask_13" /> <bpmn2:callActivity id="ScriptTask_13" name="SDNCAdapter Topology Activate" calledElement="sdncAdapter"> <bpmn2:extensionElements> - <camunda:in source="DOUPVfMod_sdncActivateRequest" target="sdncAdapterWorkflowRequest"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> - <camunda:out source="WorkflowException" target="WorkflowException"/> - <camunda:out source="sdncAdapterResponse" target="DOUPVfMod_sdncActivateResponse"/> - <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator"/> + <camunda:in source="DOUPVfMod_sdncActivateRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DOUPVfMod_sdncActivateResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> @@ -108,32 +108,33 @@ duvm.prepSDNCTopologyAct(execution)]]></bpmn2:script> def duvm = new DoUpdateVfModule() duvm.prepUpdateAAIGenericVnf(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_14" targetRef="ExclusiveGateway_1"/> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_14" targetRef="ExclusiveGateway_1" /> <bpmn2:callActivity id="CallActivity_1" name="UpdateAAIGenericVnf" calledElement="UpdateAAIGenericVnf"> <bpmn2:extensionElements> - <camunda:in source="DOUPVfMod_updateAAIGenericVnfRequest" target="UpdateAAIGenericVnfRequest"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> - <camunda:out source="WorkflowException" target="WorkflowException"/> + <camunda:in source="DOUPVfMod_updateAAIGenericVnfRequest" target="UpdateAAIGenericVnfRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_10"/> - <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="Skip Update
Generic Vnf?" default="SequenceFlow_14"> + <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_10" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="Skip Update + Generic Vnf?" default="SequenceFlow_14"> <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_14" name="Do the update" sourceRef="ExclusiveGateway_1" targetRef="CallActivity_1"/> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="Do the update" sourceRef="ExclusiveGateway_1" targetRef="CallActivity_1" /> <bpmn2:sequenceFlow id="SequenceFlow_18" name="Skip the update" sourceRef="ExclusiveGateway_1" targetRef="ScriptTask_10"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy">${execution.getVariable('DOUPVfMod_skipUpdateGenericVnf')} == true</bpmn2:conditionExpression> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[${execution.getVariable('DOUPVfMod_skipUpdateGenericVnf')} == true]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> <bpmn2:startEvent id="StartEvent_1" name="Start"> <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="ProcessReceivedRequest"/> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="ProcessReceivedRequest" /> <bpmn2:scriptTask id="ScriptTask_4" name="SDNC Topology Change/Assign (prep)" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> @@ -142,33 +143,33 @@ duvm.prepUpdateAAIGenericVnf(execution)]]></bpmn2:script> def duvm = new DoUpdateVfModule() duvm.prepSDNCTopologyChg(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="ScriptTask_4" targetRef="ScriptTask_5"/> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="ScriptTask_4" targetRef="ScriptTask_5" /> <bpmn2:callActivity id="ScriptTask_5" name="SDNC Adapter Topology Change/Assign" calledElement="sdncAdapter"> <bpmn2:extensionElements> - <camunda:in source="DOUPVfMod_sdncChangeAssignRequest" target="sdncAdapterWorkflowRequest"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> - <camunda:out source="WorkflowException" target="WorkflowException"/> - <camunda:out source="sdncAdapterResponse" target="DOUPVfMod_sdncChangeAssignResponse"/> - <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator"/> + <camunda:in source="DOUPVfMod_sdncChangeAssignRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DOUPVfMod_sdncChangeAssignResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> </bpmn2:callActivity> <bpmn2:callActivity id="ScriptTask_9" name="VnfAdapterRest" calledElement="vnfAdapterRestV1"> <bpmn2:extensionElements> - <camunda:in source="DOUPVfMod_vnfAdapterRestRequest" target="vnfAdapterRestV1Request"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> - <camunda:out source="WorkflowException" target="WorkflowException"/> - <camunda:out source="vnfAdapterRestV1Response" target="DOUPVfMod_vnfAdapterRestResponse"/> + <camunda:in source="DOUPVfMod_vnfAdapterRestRequest" target="vnfAdapterRestV1Request" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="vnfAdapterRestV1Response" target="DOUPVfMod_vnfAdapterRestResponse" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_24" name="" sourceRef="ScriptTask_9" targetRef="ScriptTask_14"/> + <bpmn2:sequenceFlow id="SequenceFlow_24" name="" sourceRef="ScriptTask_9" targetRef="ScriptTask_14" /> <bpmn2:scriptTask id="ScriptTask_8" name="VNF Adapter (prep)" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing> @@ -176,7 +177,7 @@ duvm.prepSDNCTopologyChg(execution)]]></bpmn2:script> def duvm = new DoUpdateVfModule() duvm.prepVnfAdapterRest(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ScriptTask_8" targetRef="ScriptTask_9"/> + <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ScriptTask_8" targetRef="ScriptTask_9" /> <bpmn2:scriptTask id="ScriptTask_15" name="Validate SDNC Query Response" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> @@ -187,13 +188,13 @@ duvm.validateSDNCResponse(execution, response, "query")]]></bpmn2:script> </bpmn2:scriptTask> <bpmn2:callActivity id="ScriptTask_7" name="SDNCAdapter Topology Query" calledElement="sdncAdapter"> <bpmn2:extensionElements> - <camunda:in source="DOUPVfMod_sdncTopologyRequest" target="sdncAdapterWorkflowRequest"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> - <camunda:out source="WorkflowException" target="WorkflowException"/> - <camunda:out source="sdncAdapterResponse" target="DOUPVfMod_sdncTopologyResponse"/> - <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator"/> + <camunda:in source="DOUPVfMod_sdncTopologyRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DOUPVfMod_sdncTopologyResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing> @@ -206,8 +207,8 @@ String response = execution.getVariable("DOUPVfMod_sdncChangeAssignResponse") def duvm = new DoUpdateVfModule() duvm.validateSDNCResponse(execution, response, "changeassign")]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="ScriptTask_5" targetRef="ScriptTask_18"/> - <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_18" targetRef="ScriptTask_6"/> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="ScriptTask_5" targetRef="ScriptTask_18" /> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_18" targetRef="ScriptTask_6" /> <bpmn2:scriptTask id="ScriptTask_6" name="SDNC Topology Query (prep)" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> @@ -215,29 +216,30 @@ duvm.validateSDNCResponse(execution, response, "changeassign")]]></bpmn2:script> def duvm = new DoUpdateVfModule() duvm.prepSDNCTopologyQuery(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="ScriptTask_6" targetRef="ScriptTask_7"/> - <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ScriptTask_7" targetRef="ScriptTask_15"/> - <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="ScriptTask_15" targetRef="ScriptTask_8"/> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="ScriptTask_6" targetRef="ScriptTask_7" /> + <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ScriptTask_7" targetRef="ScriptTask_15" /> + <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="ScriptTask_15" targetRef="ScriptTask_8" /> <bpmn2:exclusiveGateway id="IsBaseVfModule" name="Is Base VF Module?" default="SequenceFlow_30"> <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_30</bpmn2:outgoing> </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="ScriptTask_1" targetRef="IsBaseVfModule"/> + <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="ScriptTask_1" targetRef="IsBaseVfModule" /> <bpmn2:callActivity id="ScriptTask_3" name="Confirm VolumeGroup Tenant" calledElement="ConfirmVolumeGroupTenant"> <bpmn2:extensionElements> - <camunda:in source="DOUPVfMod_volumeGroupId" target="volumeGroupId"/> - <camunda:in source="DOUPVfMod_tenantId" target="tenantId"/> - <camunda:in source="DOUPVfMod_aicCloudRegion" target="aicCloudRegion"/> - <camunda:in source="mso-request-id" target="mso-request-id"/> - <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> - <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled"/> - <camunda:out source="WorkflowException" target="WorkflowException"/> + <camunda:in source="DOUPVfMod_volumeGroupId" target="volumeGroupId" /> + <camunda:in source="DOUPVfMod_tenantId" target="tenantId" /> + <camunda:in source="DOUPVfMod_cloudRegionForVolume" target="aicCloudRegion" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="ConfirmVolumeGroupTenantResponse" target="DOUPVfMod_volumeGroupStackId" /> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> </bpmn2:callActivity> - <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_3" targetRef="ScriptTask_4"/> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_3" targetRef="ScriptTask_4" /> <bpmn2:scriptTask id="ScriptTask_2" name="Confirm VolumeGroup Tenant (prep)" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> @@ -245,16 +247,17 @@ duvm.prepSDNCTopologyQuery(execution)]]></bpmn2:script> def duvm = new DoUpdateVfModule() duvm.prepConfirmVolumeGroupTenant(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="ScriptTask_2" targetRef="ScriptTask_3"/> - <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="VolumeGroupId 
present?" default="SequenceFlow_16"> + <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="ScriptTask_2" targetRef="ScriptTask_3" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="VolumeGroupId + present?" default="SequenceFlow_16"> <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing> </bpmn2:exclusiveGateway> <bpmn2:sequenceFlow id="SequenceFlow_10" name="Yes" sourceRef="ExclusiveGateway_2" targetRef="ScriptTask_2"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy">${execution.getVariable('DOUPVfMod_volumeGroupId').isEmpty()} == false</bpmn2:conditionExpression> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[${execution.getVariable('DOUPVfMod_volumeGroupId').isEmpty()} == false]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_16" name="No" sourceRef="ExclusiveGateway_2" targetRef="ScriptTask_4"/> + <bpmn2:sequenceFlow id="SequenceFlow_16" name="No" sourceRef="ExclusiveGateway_2" targetRef="ScriptTask_4" /> <bpmn2:sequenceFlow id="SequenceFlow_28" name="yes" sourceRef="IsBaseVfModule" targetRef="ExclusiveGateway_3"> <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DOUPVfMod_isBaseVfModule") == "true"]]></bpmn2:conditionExpression> </bpmn2:sequenceFlow> @@ -265,15 +268,15 @@ duvm.prepConfirmVolumeGroupTenant(execution)]]></bpmn2:script> def doUpdateVfModule = new DoUpdateVfModule() doUpdateVfModule.queryAAIVfModule(execution)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_30" name="no" sourceRef="IsBaseVfModule" targetRef="QueryAAIVfModule"/> - <bpmn2:sequenceFlow id="SequenceFlow_34" name="" sourceRef="QueryAAIVfModule" targetRef="ExclusiveGateway_3"/> + <bpmn2:sequenceFlow id="SequenceFlow_30" name="no" sourceRef="IsBaseVfModule" targetRef="QueryAAIVfModule" /> + <bpmn2:sequenceFlow id="SequenceFlow_34" name="" sourceRef="QueryAAIVfModule" targetRef="ExclusiveGateway_3" /> <bpmn2:exclusiveGateway id="ExclusiveGateway_3"> <bpmn2:incoming>SequenceFlow_28</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_34</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing> </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="ExclusiveGateway_3" targetRef="ExclusiveGateway_2"/> - <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_13" targetRef="ScriptTask_19"/> + <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="ExclusiveGateway_3" targetRef="ExclusiveGateway_2" /> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_13" targetRef="ScriptTask_19" /> <bpmn2:scriptTask id="ScriptTask_19" name="PostProcess SDNC Adapter Activate" scriptFormat="groovy"> <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing> @@ -288,381 +291,381 @@ duvm.validateSDNCResponse(execution, response, "activate")]]></bpmn2:script> <bpmn2:script><![CDATA[// This variable is checked by the unit test execution.setVariable('DoUpdateVfModuleSuccessIndicator', true)]]></bpmn2:script> </bpmn2:scriptTask> - <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ScriptTask_17" targetRef="EndEvent_1"/> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ScriptTask_17" targetRef="EndEvent_1" /> <bpmn2:endEvent id="EndEvent_1" name="TheEnd"> <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> - <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_10"/> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_10" /> </bpmn2:endEvent> - <bpmn2:sequenceFlow id="SequenceFlow_20" name="" sourceRef="ScriptTask_19" targetRef="ScriptTask_17"/> + <bpmn2:sequenceFlow id="SequenceFlow_20" name="" sourceRef="ScriptTask_19" targetRef="ScriptTask_17" /> </bpmn2:process> - <bpmn2:error id="Error_1" errorCode="MSOWorkflowException" name="MSO Workflow Exception"/> + <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateVfModule"> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_37" bpmnElement="StartEvent_1"> - <dc:Bounds height="36.0" width="36.0" x="150.0" y="214.0"/> + <dc:Bounds x="150" y="214" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="34.0" x="151.0" y="255.0"/> + <dc:Bounds x="151" y="255" width="34" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_22" bpmnElement="ProcessReceivedRequest"> - <dc:Bounds height="80.0" width="100.0" x="300.0" y="192.0"/> + <dc:Bounds x="300" y="192" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_37" targetElement="_BPMNShape_ScriptTask_22"> - <di:waypoint xsi:type="dc:Point" x="186.0" y="232.0"/> - <di:waypoint xsi:type="dc:Point" x="300.0" y="232.0"/> + <di:waypoint xsi:type="dc:Point" x="186" y="232" /> + <di:waypoint xsi:type="dc:Point" x="300" y="232" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="208.0" y="232.0"/> + <dc:Bounds x="208" y="232" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_160" bpmnElement="PrepareUpdateAAIVfModule_prep"> - <dc:Bounds height="80.0" width="100.0" x="456.0" y="192.0"/> + <dc:Bounds x="456" y="192" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_38" bpmnElement="SequenceFlow_38" sourceElement="_BPMNShape_ScriptTask_22" targetElement="_BPMNShape_ScriptTask_160"> - <di:waypoint xsi:type="dc:Point" x="400.0" y="232.0"/> - <di:waypoint xsi:type="dc:Point" x="456.0" y="232.0"/> + <di:waypoint xsi:type="dc:Point" x="400" y="232" /> + <di:waypoint xsi:type="dc:Point" x="456" y="232" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="492.0" y="232.0"/> + <dc:Bounds x="492" y="232" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_164" bpmnElement="ScriptTask_1"> - <dc:Bounds height="80.0" width="100.0" x="624.0" y="192.0"/> + <dc:Bounds x="624" y="192" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_160" targetElement="_BPMNShape_ScriptTask_164"> - <di:waypoint xsi:type="dc:Point" x="556.0" y="232.0"/> - <di:waypoint xsi:type="dc:Point" x="624.0" y="232.0"/> + <di:waypoint xsi:type="dc:Point" x="556" y="232" /> + <di:waypoint xsi:type="dc:Point" x="624" y="232" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="575.0" y="232.0"/> + <dc:Bounds x="575" y="232" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_88" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="1039.0" y="206.0"/> + <dc:Bounds x="1039" y="206" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds height="38.0" width="109.0" x="1011.0" y="172.0"/> + <dc:Bounds x="1011" y="172" width="109" height="38" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_165" bpmnElement="ScriptTask_2"> - <dc:Bounds height="80.0" width="100.0" x="1152.0" y="192.0"/> + <dc:Bounds x="1152" y="192" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ExclusiveGateway_88" targetElement="_BPMNShape_ScriptTask_165"> - <di:waypoint xsi:type="dc:Point" x="1089.0" y="231.0"/> - <di:waypoint xsi:type="dc:Point" x="1118.0" y="231.0"/> - <di:waypoint xsi:type="dc:Point" x="1118.0" y="232.0"/> - <di:waypoint xsi:type="dc:Point" x="1152.0" y="232.0"/> + <di:waypoint xsi:type="dc:Point" x="1089" y="231" /> + <di:waypoint xsi:type="dc:Point" x="1118" y="231" /> + <di:waypoint xsi:type="dc:Point" x="1118" y="232" /> + <di:waypoint xsi:type="dc:Point" x="1152" y="232" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="29.0" x="1099.0" y="231.0"/> + <dc:Bounds x="1099" y="231" width="29" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_166" bpmnElement="ScriptTask_3"> - <dc:Bounds height="80.0" width="100.0" x="1308.0" y="192.0"/> + <dc:Bounds x="1308" y="192" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_165" targetElement="_BPMNShape_ScriptTask_166"> - <di:waypoint xsi:type="dc:Point" x="1252.0" y="232.0"/> - <di:waypoint xsi:type="dc:Point" x="1308.0" y="232.0"/> + <di:waypoint xsi:type="dc:Point" x="1252" y="232" /> + <di:waypoint xsi:type="dc:Point" x="1308" y="232" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1271.0" y="232.0"/> + <dc:Bounds x="1271" y="232" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_167" bpmnElement="ScriptTask_4"> - <dc:Bounds height="80.0" width="100.0" x="72.0" y="420.0"/> + <dc:Bounds x="72" y="420" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_168" bpmnElement="ScriptTask_5"> - <dc:Bounds height="80.0" width="100.0" x="239.0" y="420.0"/> + <dc:Bounds x="239" y="420" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_169" bpmnElement="ScriptTask_6"> - <dc:Bounds height="80.0" width="100.0" x="535.0" y="420.0"/> + <dc:Bounds x="535" y="420" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_ScriptTask_167" targetElement="_BPMNShape_ScriptTask_168"> - <di:waypoint xsi:type="dc:Point" x="172.0" y="460.0"/> - <di:waypoint xsi:type="dc:Point" x="239.0" y="460.0"/> + <di:waypoint xsi:type="dc:Point" x="172" y="460" /> + <di:waypoint xsi:type="dc:Point" x="239" y="460" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="197.0" y="460.0"/> + <dc:Bounds x="197" y="460" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ExclusiveGateway_88" targetElement="_BPMNShape_ScriptTask_167"> - <di:waypoint xsi:type="dc:Point" x="1064.0" y="256.0"/> - <di:waypoint xsi:type="dc:Point" x="1064.0" y="351.0"/> - <di:waypoint xsi:type="dc:Point" x="122.0" y="351.0"/> - <di:waypoint xsi:type="dc:Point" x="122.0" y="420.0"/> + <di:waypoint xsi:type="dc:Point" x="1064" y="256" /> + <di:waypoint xsi:type="dc:Point" x="1064" y="351" /> + <di:waypoint xsi:type="dc:Point" x="122" y="351" /> + <di:waypoint xsi:type="dc:Point" x="122" y="420" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="22.0" x="1073.0" y="271.0"/> + <dc:Bounds x="1073" y="271" width="22" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_166" targetElement="_BPMNShape_ScriptTask_167"> - <di:waypoint xsi:type="dc:Point" x="1358.0" y="272.0"/> - <di:waypoint xsi:type="dc:Point" x="1358.0" y="352.0"/> - <di:waypoint xsi:type="dc:Point" x="639.0" y="352.0"/> - <di:waypoint xsi:type="dc:Point" x="122.0" y="352.0"/> - <di:waypoint xsi:type="dc:Point" x="122.0" y="420.0"/> + <di:waypoint xsi:type="dc:Point" x="1358" y="272" /> + <di:waypoint xsi:type="dc:Point" x="1358" y="352" /> + <di:waypoint xsi:type="dc:Point" x="639" y="352" /> + <di:waypoint xsi:type="dc:Point" x="122" y="352" /> + <di:waypoint xsi:type="dc:Point" x="122" y="420" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="927.0" y="352.0"/> + <dc:Bounds x="927" y="352" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_170" bpmnElement="ScriptTask_7"> - <dc:Bounds height="80.0" width="100.0" x="684.0" y="420.0"/> + <dc:Bounds x="684" y="420" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ScriptTask_169" targetElement="_BPMNShape_ScriptTask_170"> - <di:waypoint xsi:type="dc:Point" x="635.0" y="460.0"/> - <di:waypoint xsi:type="dc:Point" x="684.0" y="460.0"/> + <di:waypoint xsi:type="dc:Point" x="635" y="460" /> + <di:waypoint xsi:type="dc:Point" x="684" y="460" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="648.0" y="460.0"/> + <dc:Bounds x="648" y="460" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_171" bpmnElement="ScriptTask_8"> - <dc:Bounds height="80.0" width="100.0" x="996.0" y="420.0"/> + <dc:Bounds x="996" y="420" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_172" bpmnElement="ScriptTask_9"> - <dc:Bounds height="80.0" width="100.0" x="1176.0" y="420.0"/> + <dc:Bounds x="1176" y="420" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ScriptTask_171" targetElement="_BPMNShape_ScriptTask_172"> - <di:waypoint xsi:type="dc:Point" x="1096.0" y="460.0"/> - <di:waypoint xsi:type="dc:Point" x="1176.0" y="460.0"/> + <di:waypoint xsi:type="dc:Point" x="1096" y="460" /> + <di:waypoint xsi:type="dc:Point" x="1176" y="460" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1133.0" y="460.0"/> + <dc:Bounds x="1133" y="460" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_173" bpmnElement="ScriptTask_10"> - <dc:Bounds height="80.0" width="100.0" x="466.0" y="636.0"/> + <dc:Bounds x="466" y="636" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_174" bpmnElement="ScriptTask_11"> - <dc:Bounds height="80.0" width="100.0" x="624.0" y="636.0"/> + <dc:Bounds x="624" y="636" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ScriptTask_172" targetElement="_BPMNShape_ScriptTask_219"> - <di:waypoint xsi:type="dc:Point" x="1226.0" y="500.0"/> - <di:waypoint xsi:type="dc:Point" x="1226.0" y="576.0"/> - <di:waypoint xsi:type="dc:Point" x="194.0" y="576.0"/> - <di:waypoint xsi:type="dc:Point" x="194.0" y="636.0"/> + <di:waypoint xsi:type="dc:Point" x="1226" y="500" /> + <di:waypoint xsi:type="dc:Point" x="1226" y="576" /> + <di:waypoint xsi:type="dc:Point" x="194" y="576" /> + <di:waypoint xsi:type="dc:Point" x="194" y="636" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="821.0" y="576.0"/> + <dc:Bounds x="821" y="576" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="SequenceFlow_25" sourceElement="_BPMNShape_ScriptTask_173" targetElement="_BPMNShape_ScriptTask_174"> - <di:waypoint xsi:type="dc:Point" x="566.0" y="676.0"/> - <di:waypoint xsi:type="dc:Point" x="624.0" y="676.0"/> + <di:waypoint xsi:type="dc:Point" x="566" y="676" /> + <di:waypoint xsi:type="dc:Point" x="624" y="676" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="591.0" y="676.0"/> + <dc:Bounds x="591" y="676" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_175" bpmnElement="ScriptTask_12"> - <dc:Bounds height="80.0" width="100.0" x="804.0" y="636.0"/> + <dc:Bounds x="804" y="636" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_176" bpmnElement="ScriptTask_13"> - <dc:Bounds height="80.0" width="100.0" x="984.0" y="636.0"/> + <dc:Bounds x="984" y="636" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="SequenceFlow_26" sourceElement="_BPMNShape_ScriptTask_174" targetElement="_BPMNShape_ScriptTask_175"> - <di:waypoint xsi:type="dc:Point" x="724.0" y="676.0"/> - <di:waypoint xsi:type="dc:Point" x="804.0" y="676.0"/> + <di:waypoint xsi:type="dc:Point" x="724" y="676" /> + <di:waypoint xsi:type="dc:Point" x="804" y="676" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="695.0" y="674.0"/> + <dc:Bounds x="695" y="674" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_27" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_ScriptTask_175" targetElement="_BPMNShape_ScriptTask_176"> - <di:waypoint xsi:type="dc:Point" x="904.0" y="676.0"/> - <di:waypoint xsi:type="dc:Point" x="984.0" y="676.0"/> + <di:waypoint xsi:type="dc:Point" x="904" y="676" /> + <di:waypoint xsi:type="dc:Point" x="984" y="676" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="902.0" y="676.0"/> + <dc:Bounds x="902" y="676" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_162" bpmnElement="EndEvent_1"> - <dc:Bounds height="36.0" width="36.0" x="1208.0" y="906.0"/> + <dc:Bounds x="1208" y="906" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="50.0" x="1201.0" y="947.0"/> + <dc:Bounds x="1201" y="947" width="50" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_SubProcess_21" bpmnElement="SubProcess_1" isExpanded="true"> - <dc:Bounds height="198.0" width="475.0" x="239.0" y="924.0"/> + <dc:Bounds x="239" y="924" width="475" height="198" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_179" bpmnElement="ScriptTask_16"> - <dc:Bounds height="80.0" width="100.0" x="399.0" y="984.0"/> + <dc:Bounds x="399" y="984" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_163" bpmnElement="EndEvent_3"> - <dc:Bounds height="36.0" width="36.0" x="617.0" y="1006.0"/> + <dc:Bounds x="617" y="1006" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="635.0" y="1047.0"/> + <dc:Bounds x="635" y="1047" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_ScriptTask_179" targetElement="_BPMNShape_EndEvent_163"> - <di:waypoint xsi:type="dc:Point" x="499.0" y="1024.0"/> - <di:waypoint xsi:type="dc:Point" x="617.0" y="1024.0"/> + <di:waypoint xsi:type="dc:Point" x="499" y="1024" /> + <di:waypoint xsi:type="dc:Point" x="617" y="1024" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="555.0" y="1024.0"/> + <dc:Bounds x="555" y="1024" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_46" bpmnElement="BoundaryEvent_1"> - <dc:Bounds height="36.0" width="36.0" x="696.0" y="1005.0"/> + <dc:Bounds x="696" y="1005" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="711.0" y="1046.0"/> + <dc:Bounds x="711" y="1046" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_EndEvent_164" bpmnElement="EndEvent_5"> - <dc:Bounds height="36.0" width="36.0" x="814.0" y="1005.0"/> + <dc:Bounds x="814" y="1005" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="832.0" y="1046.0"/> + <dc:Bounds x="832" y="1046" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_36" bpmnElement="SequenceFlow_36" sourceElement="_BPMNShape_BoundaryEvent_46" targetElement="_BPMNShape_EndEvent_164"> - <di:waypoint xsi:type="dc:Point" x="732.0" y="1023.0"/> - <di:waypoint xsi:type="dc:Point" x="814.0" y="1023.0"/> + <di:waypoint xsi:type="dc:Point" x="732" y="1023" /> + <di:waypoint xsi:type="dc:Point" x="814" y="1023" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="770.0" y="1023.0"/> + <dc:Bounds x="770" y="1023" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_56" bpmnElement="StartEvent_3"> - <dc:Bounds height="36.0" width="36.0" x="305.0" y="1006.0"/> + <dc:Bounds x="305" y="1006" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="323.0" y="1047.0"/> + <dc:Bounds x="323" y="1047" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_StartEvent_56" targetElement="_BPMNShape_ScriptTask_179"> - <di:waypoint xsi:type="dc:Point" x="341.0" y="1024.0"/> - <di:waypoint xsi:type="dc:Point" x="399.0" y="1024.0"/> + <di:waypoint xsi:type="dc:Point" x="341" y="1024" /> + <di:waypoint xsi:type="dc:Point" x="399" y="1024" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="302.0" y="1084.0"/> + <dc:Bounds x="302" y="1084" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_180" bpmnElement="ScriptTask_17"> - <dc:Bounds height="80.0" width="100.0" x="1176.0" y="768.0"/> + <dc:Bounds x="1176" y="768" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_180" targetElement="_BPMNShape_EndEvent_162"> - <di:waypoint xsi:type="dc:Point" x="1226.0" y="848.0"/> - <di:waypoint xsi:type="dc:Point" x="1226.0" y="906.0"/> + <di:waypoint xsi:type="dc:Point" x="1226" y="848" /> + <di:waypoint xsi:type="dc:Point" x="1226" y="906" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1223.0" y="868.0"/> + <dc:Bounds x="1223" y="868" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_219" bpmnElement="ScriptTask_14"> - <dc:Bounds height="80.0" width="100.0" x="144.0" y="636.0"/> + <dc:Bounds x="144" y="636" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_CallActivity_2" bpmnElement="CallActivity_1"> - <dc:Bounds height="80.0" width="100.0" x="300.0" y="636.0"/> + <dc:Bounds x="300" y="636" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_CallActivity_2" targetElement="_BPMNShape_ScriptTask_173"> - <di:waypoint xsi:type="dc:Point" x="400.0" y="676.0"/> - <di:waypoint xsi:type="dc:Point" x="466.0" y="676.0"/> + <di:waypoint xsi:type="dc:Point" x="400" y="676" /> + <di:waypoint xsi:type="dc:Point" x="466" y="676" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="431.0" y="676.0"/> + <dc:Bounds x="431" y="676" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_219" targetElement="_BPMNShape_ExclusiveGateway_213"> - <di:waypoint xsi:type="dc:Point" x="194.0" y="716.0"/> - <di:waypoint xsi:type="dc:Point" x="195.0" y="793.0"/> - <di:waypoint xsi:type="dc:Point" x="284.0" y="793.0"/> - <di:waypoint xsi:type="dc:Point" x="324.0" y="793.0"/> + <di:waypoint xsi:type="dc:Point" x="194" y="716" /> + <di:waypoint xsi:type="dc:Point" x="195" y="793" /> + <di:waypoint xsi:type="dc:Point" x="284" y="793" /> + <di:waypoint xsi:type="dc:Point" x="324" y="793" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="191.0" y="746.0"/> + <dc:Bounds x="191" y="746" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_213" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="324.0" y="768.0"/> + <dc:Bounds x="324" y="768" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="349.0" y="823.0"/> + <dc:Bounds x="349" y="823" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ExclusiveGateway_213" targetElement="_BPMNShape_CallActivity_2"> - <di:waypoint xsi:type="dc:Point" x="349.0" y="768.0"/> - <di:waypoint xsi:type="dc:Point" x="350.0" y="716.0"/> + <di:waypoint xsi:type="dc:Point" x="349" y="768" /> + <di:waypoint xsi:type="dc:Point" x="350" y="716" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="80.0" x="357.0" y="733.0"/> + <dc:Bounds x="357" y="733" width="80" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_ExclusiveGateway_213" targetElement="_BPMNShape_ScriptTask_173"> - <di:waypoint xsi:type="dc:Point" x="374.0" y="793.0"/> - <di:waypoint xsi:type="dc:Point" x="515.0" y="793.0"/> - <di:waypoint xsi:type="dc:Point" x="516.0" y="716.0"/> + <di:waypoint xsi:type="dc:Point" x="374" y="793" /> + <di:waypoint xsi:type="dc:Point" x="515" y="793" /> + <di:waypoint xsi:type="dc:Point" x="516" y="716" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="97.0" x="380.0" y="768.0"/> + <dc:Bounds x="380" y="768" width="97" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_220" bpmnElement="ScriptTask_15"> - <dc:Bounds height="80.0" width="100.0" x="840.0" y="420.0"/> + <dc:Bounds x="840" y="420" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_221" bpmnElement="ScriptTask_18"> - <dc:Bounds height="80.0" width="100.0" x="384.0" y="420.0"/> + <dc:Bounds x="384" y="420" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_168" targetElement="_BPMNShape_ScriptTask_221"> - <di:waypoint xsi:type="dc:Point" x="339.0" y="460.0"/> - <di:waypoint xsi:type="dc:Point" x="384.0" y="460.0"/> + <di:waypoint xsi:type="dc:Point" x="339" y="460" /> + <di:waypoint xsi:type="dc:Point" x="384" y="460" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_221" targetElement="_BPMNShape_ScriptTask_169"> - <di:waypoint xsi:type="dc:Point" x="484.0" y="460.0"/> - <di:waypoint xsi:type="dc:Point" x="535.0" y="460.0"/> + <di:waypoint xsi:type="dc:Point" x="484" y="460" /> + <di:waypoint xsi:type="dc:Point" x="535" y="460" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="511.0" y="460.0"/> + <dc:Bounds x="511" y="460" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_170" targetElement="_BPMNShape_ScriptTask_220"> - <di:waypoint xsi:type="dc:Point" x="784.0" y="460.0"/> - <di:waypoint xsi:type="dc:Point" x="840.0" y="460.0"/> + <di:waypoint xsi:type="dc:Point" x="784" y="460" /> + <di:waypoint xsi:type="dc:Point" x="840" y="460" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_ScriptTask_220" targetElement="_BPMNShape_ScriptTask_171"> - <di:waypoint xsi:type="dc:Point" x="940.0" y="460.0"/> - <di:waypoint xsi:type="dc:Point" x="996.0" y="460.0"/> + <di:waypoint xsi:type="dc:Point" x="940" y="460" /> + <di:waypoint xsi:type="dc:Point" x="996" y="460" /> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_214" bpmnElement="ExclusiveGateway_3" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="965.0" y="206.0"/> + <dc:Bounds x="965" y="206" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="990.0" y="261.0"/> + <dc:Bounds x="990" y="261" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_215" bpmnElement="IsBaseVfModule" isMarkerVisible="true"> - <dc:Bounds height="50.0" width="50.0" x="770.0" y="206.0"/> + <dc:Bounds x="770" y="206" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds height="0.0" width="0.0" x="795.0" y="261.0"/> + <dc:Bounds x="795" y="261" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="QueryAAIVfModule"> - <dc:Bounds height="80.0" width="100.0" x="849.0" y="72.0"/> + <dc:Bounds x="849" y="72" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_164" targetElement="_BPMNShape_ExclusiveGateway_215"> - <di:waypoint xsi:type="dc:Point" x="724.0" y="232.0"/> - <di:waypoint xsi:type="dc:Point" x="747.0" y="232.0"/> - <di:waypoint xsi:type="dc:Point" x="747.0" y="231.0"/> - <di:waypoint xsi:type="dc:Point" x="770.0" y="231.0"/> + <di:waypoint xsi:type="dc:Point" x="724" y="232" /> + <di:waypoint xsi:type="dc:Point" x="747" y="232" /> + <di:waypoint xsi:type="dc:Point" x="747" y="231" /> + <di:waypoint xsi:type="dc:Point" x="770" y="231" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_28" sourceElement="_BPMNShape_ExclusiveGateway_215" targetElement="_BPMNShape_ExclusiveGateway_214"> - <di:waypoint xsi:type="dc:Point" x="820.0" y="231.0"/> - <di:waypoint xsi:type="dc:Point" x="965.0" y="231.0"/> + <di:waypoint xsi:type="dc:Point" x="820" y="231" /> + <di:waypoint xsi:type="dc:Point" x="965" y="231" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="888.0" y="231.0"/> + <dc:Bounds x="888" y="231" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ExclusiveGateway_214" targetElement="_BPMNShape_ExclusiveGateway_88"> - <di:waypoint xsi:type="dc:Point" x="1015.0" y="231.0"/> - <di:waypoint xsi:type="dc:Point" x="1039.0" y="231.0"/> + <di:waypoint xsi:type="dc:Point" x="1015" y="231" /> + <di:waypoint xsi:type="dc:Point" x="1039" y="231" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1015.0" y="231.0"/> + <dc:Bounds x="1015" y="231" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_30" bpmnElement="SequenceFlow_30" sourceElement="_BPMNShape_ExclusiveGateway_215" targetElement="_BPMNShape_ScriptTask_285"> - <di:waypoint xsi:type="dc:Point" x="795.0" y="206.0"/> - <di:waypoint xsi:type="dc:Point" x="795.0" y="112.0"/> - <di:waypoint xsi:type="dc:Point" x="849.0" y="112.0"/> + <di:waypoint xsi:type="dc:Point" x="795" y="206" /> + <di:waypoint xsi:type="dc:Point" x="795" y="112" /> + <di:waypoint xsi:type="dc:Point" x="849" y="112" /> <bpmndi:BPMNLabel> - <dc:Bounds height="22.0" width="20.0" x="770.0" y="151.0"/> + <dc:Bounds x="770" y="151" width="20" height="22" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_34" bpmnElement="SequenceFlow_34" sourceElement="_BPMNShape_ScriptTask_285" targetElement="_BPMNShape_ExclusiveGateway_214"> - <di:waypoint xsi:type="dc:Point" x="949.0" y="112.0"/> - <di:waypoint xsi:type="dc:Point" x="966.0" y="112.0"/> - <di:waypoint xsi:type="dc:Point" x="990.0" y="112.0"/> - <di:waypoint xsi:type="dc:Point" x="990.0" y="206.0"/> + <di:waypoint xsi:type="dc:Point" x="949" y="112" /> + <di:waypoint xsi:type="dc:Point" x="966" y="112" /> + <di:waypoint xsi:type="dc:Point" x="990" y="112" /> + <di:waypoint xsi:type="dc:Point" x="990" y="206" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="987.0" y="136.0"/> + <dc:Bounds x="987" y="136" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_286" bpmnElement="ScriptTask_19"> - <dc:Bounds height="80.0" width="100.0" x="1176.0" y="636.0"/> + <dc:Bounds x="1176" y="636" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_176" targetElement="_BPMNShape_ScriptTask_286"> - <di:waypoint xsi:type="dc:Point" x="1084.0" y="676.0"/> - <di:waypoint xsi:type="dc:Point" x="1176.0" y="676.0"/> + <di:waypoint xsi:type="dc:Point" x="1084" y="676" /> + <di:waypoint xsi:type="dc:Point" x="1176" y="676" /> <bpmndi:BPMNLabel> - <dc:Bounds height="6.0" width="6.0" x="1121.0" y="676.0"/> + <dc:Bounds x="1121" y="676" width="6" height="6" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ScriptTask_286" targetElement="_BPMNShape_ScriptTask_180"> - <di:waypoint xsi:type="dc:Point" x="1226.0" y="716.0"/> - <di:waypoint xsi:type="dc:Point" x="1226.0" y="768.0"/> + <di:waypoint xsi:type="dc:Point" x="1226" y="716" /> + <di:waypoint xsi:type="dc:Point" x="1226" y="768" /> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> -</bpmn2:definitions>
\ No newline at end of file +</bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateVnfAndModules.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateVnfAndModules.bpmn new file mode 100644 index 0000000000..c110580f5c --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateVnfAndModules.bpmn @@ -0,0 +1,274 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_9MhrcHqVEea26OhQB97uCQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoUpdateVnfAndModules" name="DoUpdateVnfAndModules" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="intialization" /> + <bpmn2:scriptTask id="intialization" name="Intialization" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_08nd69s</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +DoUpdateVnfAndModules updateVnfAndModules = new DoUpdateVnfAndModules() +updateVnfAndModules.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:subProcess id="javaErrorHandlingSubProcess" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:endEvent id="EndEvent_4"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:startEvent id="StartEvent_3"> + <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_95" errorRef="Error_2" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="StartEvent_3" targetRef="processJavaException" /> + <bpmn2:scriptTask id="processJavaException" name="Process Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="processJavaException" targetRef="EndEvent_4" /> + </bpmn2:subProcess> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_0of4kmm</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_36" /> + </bpmn2:endEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1amun4k" name="Are there VF modules to update?" default="SequenceFlow_19c7hcw"> + <bpmn2:incoming>SequenceFlow_0t4yszi</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1f4mbkc</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qrkdn3</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_19c7hcw</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_08nd69s" sourceRef="intialization" targetRef="QueryVnf" /> + <bpmn2:sequenceFlow id="SequenceFlow_1qrkdn3" name="yes" sourceRef="ExclusiveGateway_1amun4k" targetRef="PrepareModuleList"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DUVAM_nextModule") < execution.getVariable("DUVAM_moduleCount")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="UpdateVFModule" name="Do Update VF Module" calledElement="DoUpdateVfModule"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:in source="vnfType" target="vnfType" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="DUVAM_vfModuleName" target="vfModuleName" /> + <camunda:in source="DUVAM_vfModuleId" target="vfModuleId" /> + <camunda:in source="DUVAM_volumeGroupId" target="volumeGroupId" /> + <camunda:in source="DUVAM_volumeGroupName" target="volumeGroupName" /> + <camunda:in source="DUVAM_isBaseVfModule" target="isBaseVfModule" /> + <camunda:in source="asdcServiceModelVersion" target="asdcServiceModelVersion" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:in source="DUVAM_vfModuleModelInfo" target="vfModuleModelInfo" /> + <camunda:in source="usePreload" target="usePreload" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_04o61yk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1p4ycii</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1p4ycii" sourceRef="UpdateVFModule" targetRef="PostProcessUpdateVfModule" /> + <bpmn2:sequenceFlow id="SequenceFlow_0t4yszi" sourceRef="PostProcessUpdateVfModule" targetRef="ExclusiveGateway_1amun4k" /> + <bpmn2:scriptTask id="QueryVnf" name="Query VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_08nd69s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1f4mbkc</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def duvam = new DoUpdateVnfAndModules() +duvam.queryAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PrepareModuleList" name="Prepare Next Module To Update" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1qrkdn3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04o61yk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def duvam = new DoUpdateVnfAndModules() +duvam.prepareNextModuleToUpdate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PostProcessUpdateVfModule" name="PostProcess Update VF Module" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1p4ycii</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0t4yszi</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +int nextModule = execution.getVariable("DUVAM_nextModule") + execution.setVariable("DUVAM_nextModule", nextModule + 1)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_04o61yk" sourceRef="PrepareModuleList" targetRef="UpdateVFModule" /> + <bpmn2:sequenceFlow id="SequenceFlow_19c7hcw" name="no" sourceRef="ExclusiveGateway_1amun4k" targetRef="PreProcessUpdateAAIGenericVNF" /> + <bpmn2:sequenceFlow id="SequenceFlow_0of4kmm" sourceRef="UpdateAAIGenericVNFTask" targetRef="EndEvent_2" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ltycz6" sourceRef="PreProcessUpdateAAIGenericVNF" targetRef="UpdateAAIGenericVNFTask" /> + <bpmn2:callActivity id="UpdateAAIGenericVNFTask" name="Update AAI Generic VNF" calledElement="UpdateAAIGenericVnf"> + <bpmn2:extensionElements> + <camunda:in source="DUVAM_updateAAIGenericVnfRequest" target="UpdateAAIGenericVnfRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-id" target="mso-service-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1ltycz6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0of4kmm</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PreProcessUpdateAAIGenericVNF" name="PreProcess Update AAI Generic VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_19c7hcw</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ltycz6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def duvam = new DoUpdateVnfAndModules() +duvam.prepUpdateAAIGenericVnf(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1f4mbkc" sourceRef="QueryVnf" targetRef="ExclusiveGateway_1amun4k" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_2" name="Java Lang Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateVnfAndModules"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_79" bpmnElement="StartEvent_1"> + <dc:Bounds x="238" y="209" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="256" y="250" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_311" bpmnElement="intialization"> + <dc:Bounds x="344" y="187" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_79" targetElement="_BPMNShape_ScriptTask_311"> + <di:waypoint xsi:type="dc:Point" x="274" y="227" /> + <di:waypoint xsi:type="dc:Point" x="344" y="228" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="309" y="212.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_237" bpmnElement="EndEvent_2"> + <dc:Bounds x="1441" y="279" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1459" y="320" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_35" bpmnElement="javaErrorHandlingSubProcess" isExpanded="true"> + <dc:Bounds x="242" y="457" width="431" height="157" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_81" bpmnElement="StartEvent_3"> + <dc:Bounds x="390" y="518" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="408" y="559" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_239" bpmnElement="EndEvent_4"> + <dc:Bounds x="606" y="518" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="624" y="559" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_319" bpmnElement="processJavaException"> + <dc:Bounds x="460" y="496" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_StartEvent_81" targetElement="_BPMNShape_ScriptTask_319"> + <di:waypoint xsi:type="dc:Point" x="426" y="536" /> + <di:waypoint xsi:type="dc:Point" x="460" y="536" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="443" y="521" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ScriptTask_319" targetElement="_BPMNShape_EndEvent_239"> + <di:waypoint xsi:type="dc:Point" x="560" y="536" /> + <di:waypoint xsi:type="dc:Point" x="606" y="536" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="583" y="521" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1amun4k_di" bpmnElement="ExclusiveGateway_1amun4k" isMarkerVisible="true"> + <dc:Bounds x="706" y="201" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="660" y="248" width="65" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_08nd69s_di" bpmnElement="SequenceFlow_08nd69s"> + <di:waypoint xsi:type="dc:Point" x="444" y="227" /> + <di:waypoint xsi:type="dc:Point" x="512" y="227" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="478" y="212" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qrkdn3_di" bpmnElement="SequenceFlow_1qrkdn3"> + <di:waypoint xsi:type="dc:Point" x="731" y="201" /> + <di:waypoint xsi:type="dc:Point" x="731" y="92" /> + <di:waypoint xsi:type="dc:Point" x="816" y="92" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="737" y="151" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0qmp9y5_di" bpmnElement="UpdateVFModule"> + <dc:Bounds x="983" y="52" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1p4ycii_di" bpmnElement="SequenceFlow_1p4ycii"> + <di:waypoint xsi:type="dc:Point" x="1083" y="92" /> + <di:waypoint xsi:type="dc:Point" x="1164" y="92" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1124" y="77" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0t4yszi_di" bpmnElement="SequenceFlow_0t4yszi"> + <di:waypoint xsi:type="dc:Point" x="1214" y="132" /> + <di:waypoint xsi:type="dc:Point" x="1214" y="226" /> + <di:waypoint xsi:type="dc:Point" x="756" y="226" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1229" y="179" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_12xsp2f_di" bpmnElement="QueryVnf"> + <dc:Bounds x="512" y="187" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_01c9qas_di" bpmnElement="PrepareModuleList"> + <dc:Bounds x="816" y="52" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_11i0rnd_di" bpmnElement="PostProcessUpdateVfModule"> + <dc:Bounds x="1164" y="52" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_04o61yk_di" bpmnElement="SequenceFlow_04o61yk"> + <di:waypoint xsi:type="dc:Point" x="916" y="92" /> + <di:waypoint xsi:type="dc:Point" x="983" y="92" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="950" y="77" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19c7hcw_di" bpmnElement="SequenceFlow_19c7hcw"> + <di:waypoint xsi:type="dc:Point" x="731" y="251" /> + <di:waypoint xsi:type="dc:Point" x="731" y="295" /> + <di:waypoint xsi:type="dc:Point" x="1111" y="297" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="908" y="273" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0of4kmm_di" bpmnElement="SequenceFlow_0of4kmm"> + <di:waypoint xsi:type="dc:Point" x="1367" y="297" /> + <di:waypoint xsi:type="dc:Point" x="1404" y="297" /> + <di:waypoint xsi:type="dc:Point" x="1404" y="297" /> + <di:waypoint xsi:type="dc:Point" x="1441" y="297" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1419" y="297" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ltycz6_di" bpmnElement="SequenceFlow_1ltycz6"> + <di:waypoint xsi:type="dc:Point" x="1211" y="297" /> + <di:waypoint xsi:type="dc:Point" x="1267" y="297" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1239" y="282" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1cem00f_di" bpmnElement="UpdateAAIGenericVNFTask"> + <dc:Bounds x="1267" y="257" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0snu9sv_di" bpmnElement="PreProcessUpdateAAIGenericVNF"> + <dc:Bounds x="1111" y="257" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1f4mbkc_di" bpmnElement="SequenceFlow_1f4mbkc"> + <di:waypoint xsi:type="dc:Point" x="612" y="227" /> + <di:waypoint xsi:type="dc:Point" x="706" y="226" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="659" y="211.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/applicationContext.xml b/bpmn/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/applicationContext.xml new file mode 100644 index 0000000000..0492cebbe9 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/applicationContext.xml @@ -0,0 +1,14 @@ +<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <!-- Spring bean to be invoked through the ApplicationContextElResolver -->
+ <bean id="urnMappingTaskBean" class="org.openecomp.mso.bpmn.core.URNMappingsTask" />
+ <bean id="logTaskBean" class="org.openecomp.mso.bpmn.core.LogTask" />
+ <bean id="readConfigBean" class="org.openecomp.mso.bpmn.core.ReadConfigTask" />
+ <bean id="readFileBean" class="org.openecomp.mso.bpmn.core.ReadFileTask" />
+ <bean id="xqueryScriptBean" class="org.openecomp.mso.bpmn.core.XQueryScriptTask"/>
+
+
+</beans>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/web.xml b/bpmn/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/web.xml index eb5df6038e..cd114a85dc 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/web.xml +++ b/bpmn/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/web.xml @@ -25,7 +25,7 @@ <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
- <param-value>org.openecomp.mso.bpmn.infrastructure.workflow.service.WorkflowResourceApplication</param-value>
+ <param-value>org.openecomp.mso.bpmn.common.workflow.service.WorkflowResourceApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
@@ -33,6 +33,10 @@ <url-pattern>/*</url-pattern>
</servlet-mapping>
<context-param>
+ <param-name>contextConfigLocation</param-name>
+ <param-value>/WEB-INF/applicationContext.xml</param-value>
+ </context-param>
+ <context-param>
<param-name>mso.configuration</param-name>
<param-value>MSO_PROP_TOPOLOGY=topology.properties</param-value>
</context-param>
@@ -44,6 +48,9 @@ <param-name>resteasy.resources</param-name>
<param-value>org.openecomp.mso.logger.MsoLoggingServlet,org.openecomp.mso.bpmn.core.HealthCheckHandler</param-value>
</context-param>
+ <listener>
+ <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+ </listener>
<filter>
<filter-name>LogFilter</filter-name>
<filter-class>org.openecomp.mso.logger.LogFilter</filter-class>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstanceTest.groovy new file mode 100644 index 0000000000..13e107e8ad --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstanceTest.groovy @@ -0,0 +1,360 @@ +package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.ProcessEngineServices
+import org.camunda.bpm.engine.RepositoryService
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.camunda.bpm.engine.repository.ProcessDefinition
+import org.camunda.bpm.engine.runtime.Execution
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.mockito.MockitoAnnotations
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.core.WorkflowException
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*
+
+import com.github.tomakehurst.wiremock.junit.WireMockRule
+
+class CreateNetworkInstanceTest {
+
+ @Rule
+ public WireMockRule wireMockRule = new WireMockRule(8090);
+
+ String Prefix="CRENI_"
+ def utils = new MsoUtils()
+
+ String createDBRequestError =
+"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <lastModifiedBy>BPMN</lastModifiedBy>
+ <statusMessage>Received error from SDN-C: No availability zone available</statusMessage>
+ <responseBody></responseBody>
+ <requestStatus>FAILED</requestStatus>
+ <vnfOutputs><network-id></network-id><network-name></network-names></vnfOutputs>
+ </ns:updateInfraRequest>
+ </soapenv:Body>
+ </soapenv:Envelope>"""
+
+ String falloutHandlerRequest =
+ """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns="http://org.openecomp/mso/request/types/v1"
+ xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">
+ <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-id>b69c9054-da09-4a2c-adf5-51042b62bfac</request-id>
+ <action>CREATE</action>
+ <source>VID</source>
+ </request-info>
+ <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ <aetgt:ErrorMessage>Received error from SDN-C: No availability zone available.</aetgt:ErrorMessage>
+ <aetgt:ErrorCode>5300</aetgt:ErrorCode>
+ </aetgt:WorkflowException>
+ </aetgt:FalloutHandlerRequest>"""
+
+ String completeMsoProcessRequest =
+ """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns="http://org.openecomp/mso/request/types/v1"
+ xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>CREATE</action>
+ <source>VID</source>
+ </request-info>
+ <aetgt:status-message>Network has been created successfully.</aetgt:status-message>
+ <aetgt:mso-bpel-name>BPMN Network action: CREATE</aetgt:mso-bpel-name>
+</aetgt:MsoCompletionRequest>"""
+
+
+String jsonIncomingRequest =
+"""{ "requestDetails": {
+ "modelInfo": {
+ "modelType": "networkTyp",
+ "modelId": "modelId",
+ "modelNameVersionId": "modelNameVersionId",
+ "modelName": "CONTRAIL_EXTERNAL",
+ "modelVersion": "1"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "RDM2WAGPLCP",
+ "tenantId": "7dd5365547234ee8937416c65507d266"
+ },
+ "requestInfo": {
+ "instanceName": "MNS-25180-L-01-dmz_direct_net_1",
+ "source": "VID",
+ "callbackUrl": "",
+ "suppressRollback": true,
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": "f70e927b-6087-4974-9ef8-c5e4d5847ca4",
+ "modelInfo": {
+ "modelType": "serviceT",
+ "modelId": "modelI",
+ "modelNameVersionId": "modelNameVersionI",
+ "modelName": "modleNam",
+ "modelVersion": "1"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "userParams": [
+ {
+ "name": "someUserParam1",
+ "value": "someValue1"
+ }
+ ]
+ }
+ }}"""
+
+ @Before
+ public void init()
+ {
+ MockitoAnnotations.initMocks(this)
+
+ }
+
+ public void initializeVariables(Execution mockExecution) {
+
+ verify(mockExecution).setVariable(Prefix + "Success", false)
+
+ verify(mockExecution).setVariable(Prefix + "CompleteMsoProcessRequest", "")
+ verify(mockExecution).setVariable(Prefix + "FalloutHandlerRequest", "")
+ verify(mockExecution).setVariable(Prefix + "isSilentSuccess", false)
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest() {
+
+ println "************ preProcessRequest() ************* "
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest)
+
+
+ // preProcessRequest(Execution execution)
+ CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
+ CreateNetworkInstance.preProcessRequest(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ initializeVariables(mockExecution)
+ //verify(mockExecution).setVariable(Prefix + "Success", false)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void getNetworkModelInfo() {
+
+ println "************ getNetworkModelInfo() ************* "
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+
+ // preProcessRequest(Execution execution)
+ CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
+ CreateNetworkInstance.getNetworkModelInfo(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ }
+
+ @Test
+ //@Ignore
+ public void sendSyncResponse() {
+
+ println "************ sendSyncResponse ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+
+ // preProcessRequest(Execution execution)
+ CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
+ CreateNetworkInstance.sendSyncResponse(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable("CreateNetworkInstanceResponseCode", "202")
+
+ }
+
+ @Test
+ //@Ignore
+ public void sendSyncError() {
+
+ println "************ sendSyncError ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+
+ CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
+ CreateNetworkInstance.sendSyncError(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable("CreateNetworkInstanceResponseCode", "500")
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareDBRequestError() {
+
+ println "************ prepareDBRequestError ************* "
+
+ WorkflowException sndcWorkflowException = new WorkflowException("CreateNetworkInstance", 500, "Received error from SDN-C: No availability zone available")
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowException)
+ //when(mockExecution.getVariable("msoRequestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable(Prefix + "requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("networkId")).thenReturn("")
+ when(mockExecution.getVariable("networkName")).thenReturn("")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+
+ // preProcessRequest(Execution execution)
+ CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
+ CreateNetworkInstance.prepareDBRequestError(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "createDBRequest", createDBRequestError)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void prepareCompletion() {
+
+ println "************ postProcessResponse ************* "
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable(Prefix + "dbReturnCode")).thenReturn("200")
+
+ // postProcessResponse(Execution execution)
+ CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
+ CreateNetworkInstance.prepareCompletion(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "Success", true)
+ verify(mockExecution).setVariable(Prefix + "CompleteMsoProcessRequest", completeMsoProcessRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void buildErrorResponse() {
+
+ println "************ buildErrorResponse ************* "
+
+
+ WorkflowException sndcWorkflowException = new WorkflowException("CreateNetworkInstance", 5300, "Received error from SDN-C: No availability zone available.")
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("b69c9054-da09-4a2c-adf5-51042b62bfac")
+ //when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowException)
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowException)
+
+ // buildErrorResponse(Execution execution)
+ CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
+ CreateNetworkInstance.buildErrorResponse(mockExecution)
+
+ verify(mockExecution, atLeast(1)).setVariable("prefix", "CRENI_")
+ verify(mockExecution).setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequest)
+
+ //MockitoDebuggerImpl debugger = new MockitoDebuggerImpl()
+ //debugger.printInvocations(mockExecution)
+
+ }
+
+ @Test
+ //@Ignore
+ public void postProcessResponse() {
+
+ println "************ postProcessResponse() ************* "
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("CMSO_ResponseCode")).thenReturn("200")
+
+ // postProcessResponse(Execution execution)
+ CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
+ CreateNetworkInstance.postProcessResponse(mockExecution)
+
+ //verify(mockExecution).getVariable("isDebugLogEnabled")
+ //verify(mockExecution).setVariable("prefix", Prefix)
+
+ verify(mockExecution).setVariable(Prefix + "Success", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void processRollbackData() {
+
+ println "************ callDBCatalog() ************* "
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+
+ // preProcessRequest(Execution execution)
+ CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
+ CreateNetworkInstance.processRollbackData(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ }
+
+ private ExecutionEntity setupMock() {
+
+ ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
+ when(mockProcessDefinition.getKey()).thenReturn("CreateNetworkInstance")
+ RepositoryService mockRepositoryService = mock(RepositoryService.class)
+ when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
+ when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("CreateNetworkInstance")
+ when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
+ ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
+ when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+
+ when(mockExecution.getId()).thenReturn("100")
+ when(mockExecution.getProcessDefinitionId()).thenReturn("CreateNetworkInstance")
+ when(mockExecution.getProcessInstanceId()).thenReturn("CreateNetworkInstance")
+ when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
+ when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
+
+ return mockExecution
+ }
+
+}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1Test.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1Test.groovy index 4f5375719f..0cf97922ae 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1Test.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1Test.groovy @@ -27,10 +27,11 @@ import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity import org.mockito.ArgumentCaptor import org.mockito.MockitoAnnotations import org.mockito.runners.MockitoJUnitRunner +import org.openecomp.mso.bpmn.common.scripts.MsoGroovyTest import org.junit.Before +import org.junit.Ignore; import org.junit.Test import org.junit.runner.RunWith -import org.openecomp.mso.bpmn.common.scripts.MsoGroovyTest; @RunWith(MockitoJUnitRunner.class) @@ -64,8 +65,8 @@ class CreateVfModuleVolumeInfraV1Test extends MsoGroovyTest { "instanceId": "{service-instance-id}", "modelInfo": { "modelType": "service", - "modelId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid": "ff5256d1-5a33-55df-13ab-12abad84e7ff", + "modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "Test", "modelVersion": "2.0" } @@ -79,7 +80,7 @@ class CreateVfModuleVolumeInfraV1Test extends MsoGroovyTest { "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12", "modelVersion": "1", - "modelCustomizationName": "vSAMP12" + "modelInstanceName": "vSAMP12" } } } @@ -162,6 +163,7 @@ class CreateVfModuleVolumeInfraV1Test extends MsoGroovyTest { @Test + @Ignore public void testPreProcessRequest() { ExecutionEntity mockExecution = setupMock('CreateVfModuleVolumeInfraV1') @@ -171,6 +173,7 @@ class CreateVfModuleVolumeInfraV1Test extends MsoGroovyTest { when(mockExecution.getVariable("serviceInstanceId")).thenReturn('') when(mockExecution.getVariable("vnfId")).thenReturn('test-vnf-id') when(mockExecution.getVariable("mso-request-id")).thenReturn('1234') + when(mockExecution.getVariable("URN_mso_rollback")).thenReturn('true') CreateVfModuleVolumeInfraV1 createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() createVfModuleVolumeInfraV1.preProcessRequest(mockExecution, 'true') diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstanceTest.groovy new file mode 100644 index 0000000000..304697891f --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstanceTest.groovy @@ -0,0 +1,397 @@ +package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import static org.mockito.Mockito.*
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.ProcessEngineServices
+import org.camunda.bpm.engine.RepositoryService
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.camunda.bpm.engine.repository.ProcessDefinition
+import org.camunda.bpm.engine.runtime.Execution
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.MockitoAnnotations
+import org.mockito.runners.MockitoJUnitRunner
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.core.WorkflowException
+
+import com.github.tomakehurst.wiremock.junit.WireMockRule
+
+
+@RunWith(MockitoJUnitRunner.class)
+class DeleteNetworkInstanceTest {
+
+ @Rule
+ public WireMockRule wireMockRule = new WireMockRule(8090);
+
+ String Prefix="DELNI_"
+ def utils = new MsoUtils()
+
+ String falloutHandlerRequest =
+ """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns="http://org.openecomp/mso/request/types/v1"
+ xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">
+ <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-id>b69c9054-da09-4a2c-adf5-51042b62bfac</request-id>
+ <action>DELETE</action>
+ <source>PORTAL</source>
+ </request-info>
+ <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ <aetgt:ErrorMessage>Received error from SDN-C: No availability zone available</aetgt:ErrorMessage>
+ <aetgt:ErrorCode>5300</aetgt:ErrorCode>
+ <aetgt:SourceSystemErrorCode>200</aetgt:SourceSystemErrorCode>
+</aetgt:WorkflowException>
+ </aetgt:FalloutHandlerRequest>"""
+
+ String falloutHandlerRequestObj =
+ """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns="http://org.openecomp/mso/request/types/v1"
+ xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">
+ <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-id>b69c9054-da09-4a2c-adf5-51042b62bfac</request-id>
+ <action>DELETE</action>
+ <source>PORTAL</source>
+ </request-info>
+ <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ <aetgt:ErrorMessage>Received error from SDN-C: No availability zone available</aetgt:ErrorMessage>
+ <aetgt:ErrorCode>7000</aetgt:ErrorCode>
+ </aetgt:WorkflowException>
+ </aetgt:FalloutHandlerRequest>"""
+
+ String completeMsoProcessRequest =
+ """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns="http://org.openecomp/mso/request/types/v1"
+ xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>DELETE</action>
+ <source>VID</source>
+ </request-info>
+ <aetgt:status-message>Network has been deleted successfully.</aetgt:status-message>
+ <aetgt:mso-bpel-name>BPMN Network action: DELETE</aetgt:mso-bpel-name>
+</aetgt:MsoCompletionRequest>"""
+
+String deleteDBRequest =
+"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:ns="http://org.openecomp.mso/requestsdb">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <ns:updateInfraRequest>
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <lastModifiedBy>BPMN</lastModifiedBy>
+ <statusMessage>Network successfully deleted.</statusMessage>
+ <responseBody/>
+ <requestStatus>COMPLETED</requestStatus>
+ <progress>100</progress>
+ <vnfOutputs><network-outputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:aetgt="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"/></vnfOutputs>
+ </ns:updateInfraRequest>
+ </soapenv:Body>
+</soapenv:Envelope>"""
+
+String deleteDBRequestErrorObj =
+"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <lastModifiedBy>BPMN</lastModifiedBy>
+ <statusMessage>Received error from SDN-C: No availability zone available</statusMessage>
+ <responseBody></responseBody>
+ <requestStatus>FAILED</requestStatus>
+ <progress></progress>
+ <vnfOutputs><network-outputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:aetgt="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"/></vnfOutputs>
+ </ns:updateInfraRequest>
+ </soapenv:Body>
+ </soapenv:Envelope>"""
+
+String deleteDBRequestErrorString =
+"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <lastModifiedBy>BPMN</lastModifiedBy>
+ <statusMessage>Received error from SDN-C: No availability zone available</statusMessage>
+ <responseBody></responseBody>
+ <requestStatus>FAILED</requestStatus>
+ <progress></progress>
+ <vnfOutputs><network-outputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:aetgt="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"/></vnfOutputs>
+ </ns:updateInfraRequest>
+ </soapenv:Body>
+ </soapenv:Envelope>"""
+
+ String jsonIncomingRequest =
+ """{ "requestDetails": {
+ "modelInfo": {
+ "modelType": "networkTyp",
+ "modelId": "modelId",
+ "modelNameVersionId": "modelNameVersionId",
+ "modelName": "CONTRAIL_EXTERNAL",
+ "modelVersion": "1"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "RDM2WAGPLCP",
+ "tenantId": "7dd5365547234ee8937416c65507d266"
+ },
+ "requestInfo": {
+ "instanceName": "MNS-25180-L-01-dmz_direct_net_1",
+ "source": "VID",
+ "callbackUrl": "",
+ "suppressRollback": true,
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": "f70e927b-6087-4974-9ef8-c5e4d5847ca4",
+ "modelInfo": {
+ "modelType": "serviceT",
+ "modelId": "modelI",
+ "modelNameVersionId": "modelNameVersionI",
+ "modelName": "modleNam",
+ "modelVersion": "1"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "userParams": [
+ {
+ "name": "someUserParam1",
+ "value": "someValue1"
+ }
+ ]
+ }
+ }}"""
+
+// - - - - - - - -
+
+
+ @Before
+ public void init()
+ {
+ MockitoAnnotations.initMocks(this)
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest() {
+
+ println "************ preProcessRequest_Payload ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest)
+
+ DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
+ DeleteNetworkInstance.preProcessRequest(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+
+ }
+
+ public void initializeVariables (Execution mockExecution) {
+
+
+ verify(mockExecution).setVariable(Prefix + "Success", false)
+
+ verify(mockExecution).setVariable(Prefix + "CompleteMsoProcessRequest", "")
+ verify(mockExecution).setVariable(Prefix + "FalloutHandlerRequest", "")
+ verify(mockExecution).setVariable(Prefix + "isSilentSuccess", false)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void getNetworkModelInfo() {
+
+ println "************ getNetworkModelInfo() ************* "
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+
+ // preProcessRequest(Execution execution)
+ DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
+ DeleteNetworkInstance.getNetworkModelInfo(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ }
+
+ @Test
+ //@Ignore
+ public void sendSyncResponse() {
+
+ println "************ sendSyncResponse ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+
+ // preProcessRequest(Execution execution)
+ DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
+ DeleteNetworkInstance.sendSyncResponse(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable("DeleteNetworkInstanceResponseCode", "202")
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void sendSyncError() {
+
+ println "************ sendSyncError ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+
+ DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
+ DeleteNetworkInstance.sendSyncError(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable("DeleteNetworkInstanceResponseCode", "500")
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void prepareCompletion() {
+
+ println "************ postProcessResponse ************* "
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "source")).thenReturn("PORTAL")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+
+ // postProcessResponse(Execution execution)
+ DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
+ DeleteNetworkInstance.prepareCompletion(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "CompleteMsoProcessRequest", completeMsoProcessRequest)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void prepareDBRequestError() {
+
+ println "************ prepareDBRequestError ************* "
+
+ WorkflowException sndcWorkflowExceptionObj = new WorkflowException("CreateNetworkV2", 500, "Received error from SDN-C: No availability zone available")
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowExceptionObj)
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+
+ // preProcessRequest(Execution execution)
+ DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
+ DeleteNetworkInstance.prepareDBRequestError(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "deleteDBRequest", deleteDBRequestErrorObj)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void postProcessResponse() {
+
+ println "************ postProcessResponse ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("CMSO_ResponseCode")).thenReturn("200")
+
+ // postProcessResponse(Execution execution)
+ DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
+ DeleteNetworkInstance.postProcessResponse(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "Success", true)
+
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void buildErrorResponse_FalloutHandlerRequest() {
+
+ println "************ buildErrorResponse ************* "
+
+ WorkflowException sndcWorkflowExceptionObj = new WorkflowException("DeleteNetworkInstance", 7000, "Received error from SDN-C: No availability zone available")
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("b69c9054-da09-4a2c-adf5-51042b62bfac")
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowExceptionObj)
+ when(mockExecution.getVariable(Prefix + "source")).thenReturn("PORTAL")
+
+ // buildErrorResponse(Execution execution)
+ DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
+ DeleteNetworkInstance.buildErrorResponse(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "Success", false)
+ verify(mockExecution).setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequestObj)
+
+ }
+
+
+ private ExecutionEntity setupMock() {
+
+ ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
+ when(mockProcessDefinition.getKey()).thenReturn("DeleteNetworkInstance")
+ RepositoryService mockRepositoryService = mock(RepositoryService.class)
+ when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
+ when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DeleteNetworkInstance")
+ when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
+ ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
+ when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+
+ when(mockExecution.getId()).thenReturn("100")
+ when(mockExecution.getProcessDefinitionId()).thenReturn("DeleteNetworkInstance")
+ when(mockExecution.getProcessInstanceId()).thenReturn("DeleteNetworkInstance")
+ when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
+ when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
+
+ return mockExecution
+
+ }
+
+}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1Test.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1Test.groovy index 2e6b35eaba..fac156e86d 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1Test.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1Test.groovy @@ -26,6 +26,7 @@ import static org.mockito.Mockito.* import org.apache.commons.lang3.* import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity import org.junit.Before +import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith import org.mockito.MockitoAnnotations @@ -121,11 +122,14 @@ class DeleteVfModuleVolumeInfraV1Test extends MsoGroovyTest { } @Test + //@Ignore public void testPrepareDbRequest() { ExecutionEntity mockExecution = setupMock('DeleteVfModuleVolumeInfraV1') when(mockExecution.getVariable("DELVfModVol_requestId")).thenReturn('TEST-REQUEST-ID-0123') when(mockExecution.getVariable("DELVfModVol_volumeOutputs")).thenReturn('') + when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC") + when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7") DeleteVfModuleVolumeInfraV1 myproc = new DeleteVfModuleVolumeInfraV1() myproc.prepareDBRequest(mockExecution, 'true') diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollbackTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollbackTest.groovy new file mode 100644 index 0000000000..2bb88632db --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollbackTest.groovy @@ -0,0 +1,349 @@ +package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import static org.mockito.Mockito.*
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.ProcessEngineServices
+import org.camunda.bpm.engine.RepositoryService
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.camunda.bpm.engine.impl.pvm.process.ProcessDefinitionImpl
+import org.camunda.bpm.engine.repository.ProcessDefinition
+import org.camunda.bpm.engine.runtime.Execution;
+import org.mockito.MockitoAnnotations
+import org.mockito.runners.MockitoJUnitRunner
+import org.mockito.internal.debugging.MockitoDebuggerImpl
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.junit.Before
+import org.junit.Rule;
+import org.junit.Test
+import org.junit.Ignore
+import org.junit.runner.RunWith
+
+import static org.openecomp.mso.bpmn.mock.StubResponseNetworkAdapter.MockNetworkAdapterRestRollbackDelete;
+import static org.junit.Assert.*;
+
+import com.github.tomakehurst.wiremock.client.WireMock;
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import org.apache.commons.lang3.*
+
+
+@RunWith(MockitoJUnitRunner.class)
+class DoCreateNetworkInstanceRollbackTest {
+
+ @Rule
+ public WireMockRule wireMockRule = new WireMockRule(28090);
+
+ def utils = new MsoUtils()
+ String Prefix="CRENWKIR_"
+
+
+ String rollbackNetworkRequest =
+ """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">
+ <rollback>
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkStackId/>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <networkCreated>true</networkCreated>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <msoRequest>
+ <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+ <serviceInstanceId/>
+ </msoRequest>
+ </rollback>
+</NetworkAdapter:rollbackNetwork>"""
+
+ String rollbackActivateSDNCRequest =
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>CreateNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type>MSO-dev-service-type</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
+ <model-customization-uuid>customization-uuid</model-customization-uuid>
+ <model-uuid>uuid</model-uuid>
+ <model-version>version</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+ String rollbackSDNCRequest =
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>CreateNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type>MSO-dev-service-type</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
+ <model-customization-uuid>customization-uuid</model-customization-uuid>
+ <model-uuid>uuid</model-uuid>
+ <model-version>version</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+// - - - - - - - -
+
+
+ @Before
+ public void init()
+ {
+ MockitoAnnotations.initMocks(this)
+
+ }
+
+ public void initializeVariables (Execution mockExecution) {
+
+ verify(mockExecution).setVariable(Prefix + "WorkflowException", null)
+
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", null)
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")
+
+ verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", null)
+ verify(mockExecution).setVariable(Prefix + "rollbackSDNCResponse", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackSDNCReturnCode", "")
+
+ verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCRequest", null)
+ verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCResponse", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCReturnCode", "")
+
+ verify(mockExecution).setVariable(Prefix + "Success", false)
+ verify(mockExecution).setVariable(Prefix + "fullRollback", false)
+ verify(mockExecution).setVariable(Prefix + "networkId", "")
+ verify(mockExecution).setVariable(Prefix + "urlRollbackPoNetwork", "")
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest() {
+
+ println "************ preProcessRequest ************* "
+
+ WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstance", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")
+ Map<String, String> rollbackData = new HashMap<String, String>();
+ rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
+ rollbackData.put("rollbackActivateSDNCRequest", rollbackActivateSDNCRequest)
+ rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
+ when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1702")
+
+ when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+
+ when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:28090/SDNCAdapter")
+ when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:28090/networks/NetworkAdapter")
+ when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:28090/SDNCAdapterRpc")
+
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
+ DoCreateNetworkInstanceRollback.preProcessRequest(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callPONetworkAdapter() {
+
+ MockNetworkAdapterRestRollbackDelete("deleteNetworkResponse_Success.xml","8abc633a-810b-4ca5-8b3a-09511d13a2ce");
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn( rollbackNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn(rollbackSDNCRequest)
+ when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:28090/networks/NetworkAdapter")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
+ DoCreateNetworkInstanceRollback.callPONetworkAdapter(mockExecution)
+
+ verify(mockExecution, atLeast(1)).setVariable(Prefix + "urlRollbackPoNetwork", "http://localhost:28090/networks/NetworkAdapter/8abc633a-810b-4ca5-8b3a-09511d13a2ce/rollback")
+
+ }
+
+ @Test
+ //@Ignore
+ public void validateRollbackResponses_Good() {
+
+ WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed. Error 404.")
+ WorkflowException expectedWorkflowException = new WorkflowException("DoCreateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed. Error 404. + SNDC activate rollback completed. + PO Network rollback completed. + SNDC assign rollback completed.")
+
+ println "************ validateRollbackResponses_Good() ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(workflowException)
+ when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(false)
+
+ DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
+ DoCreateNetworkInstanceRollback.validateRollbackResponses(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution, atLeast(1)).setVariable("rolledBack", true)
+ verify(mockExecution, atLeast(1)).setVariable("wasDeleted", true)
+ verify(mockExecution).setVariable("WorkflowException", refEq(expectedWorkflowException, any(WorkflowException.class)))
+ //verify(mockExecution).setVariable("WorkflowException", expectedWorkflowException)
+ }
+
+ @Test
+ //@Ignore
+ public void validateRollbackResponses_FullRollback() {
+
+ Map<String, String> rollbackData = new HashMap<String, String>();
+ rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
+ rollbackData.put("rollbackActivateSDNCRequest", rollbackActivateSDNCRequest)
+ rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
+
+ println "************ validateRollbackResponses_FullRollback() ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "workflowException")).thenReturn(null)
+ when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(true)
+ when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
+
+ DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
+ DoCreateNetworkInstanceRollback.validateRollbackResponses(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution, atLeast(1)).setVariable("rollbackSuccessful", true)
+ verify(mockExecution, atLeast(1)).setVariable("rollbackError", false)
+
+ }
+
+
+ private ExecutionEntity setupMock() {
+
+ ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
+ when(mockProcessDefinition.getKey()).thenReturn("DoCreateNetworkInstanceRollback")
+ RepositoryService mockRepositoryService = mock(RepositoryService.class)
+ when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
+ when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoCreateNetworkInstanceRollback")
+ when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
+ ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
+ when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+
+ when(mockExecution.getId()).thenReturn("100")
+ when(mockExecution.getProcessDefinitionId()).thenReturn("DoCreateNetworkInstanceRollback")
+ when(mockExecution.getProcessInstanceId()).thenReturn("DoCreateNetworkInstanceRollback")
+ when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
+ when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
+
+ return mockExecution
+ }
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceTest.groovy new file mode 100644 index 0000000000..d0b87b3737 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceTest.groovy @@ -0,0 +1,3988 @@ +package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import static org.mockito.Mockito.*
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkByName;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkByName_404;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkByIdWithDepth;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkCloudRegion;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkCloudRegion_404;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutNetworkIdWithDepth;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkPolicy;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkTableReference;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkVpnBinding;
+import org.camunda.bpm.engine.ProcessEngineServices
+import org.camunda.bpm.engine.RepositoryService
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.camunda.bpm.engine.repository.ProcessDefinition
+import org.camunda.bpm.engine.runtime.Execution
+import org.junit.Before
+import org.junit.Ignore
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.MockitoAnnotations
+import org.mockito.runners.MockitoJUnitRunner
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.core.WorkflowException
+
+import com.github.tomakehurst.wiremock.client.WireMock
+import com.github.tomakehurst.wiremock.junit.WireMockRule
+import org.apache.commons.lang3.*
+
+@RunWith(MockitoJUnitRunner.class)
+class DoCreateNetworkInstanceTest {
+
+ @Rule
+ public WireMockRule wireMockRule = new WireMockRule(8090);
+
+ def utils = new MsoUtils()
+ String Prefix="CRENWKI_"
+
+// ---- Start XML Zone ----
+ String xmlIncomingRequest =
+ """<rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd">
+ <network-request xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-info>
+ <request-id>1ef47428-cade-45bd-a103-0751e8b2deb0</request-id>
+ <action>CREATE</action>
+ <source>PORTAL</source>
+ </request-info>
+ <network-inputs>
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <physicalNetworkName>dvs-slcp3-01</physicalNetworkName>
+ <vlans>3008</vlans>
+ <service-instance-id>MNS-25180-L-01-dmz_direct_net_1</service-instance-id>
+ <backout-on-failure>true</backout-on-failure>
+ </network-inputs>
+ <network-params xmlns:vnfreq="http://org.openecomp/mso/infra/vnf-request/v1">
+ <param xmlns="" xmlns:ns3="http://org.openecomp/mso/infra/vnf-request/v1" name="shared">1</param>
+ <param xmlns="" xmlns:ns3="http://org.openecomp/mso/infra/vnf-request/v1" name="external">0</param>
+ </network-params>
+ </network-request>
+ </rest:payload>"""
+
+ String expectedXMLNetworkRequest =
+"""<rest:payload xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ xmlns:vnfreq="http://org.openecomp/mso/infra/vnf-request/v1"
+ contentType="text/xml">
+ <vnfreq:network-request>
+ <vnfreq:request-info>
+ <vnfreq:request-id>1ef47428-cade-45bd-a103-0751e8b2deb0</vnfreq:request-id>
+ <vnfreq:action>CREATE</vnfreq:action>
+ <vnfreq:source>PORTAL</vnfreq:source>
+ </vnfreq:request-info>
+ <vnfreq:network-inputs>
+ <vnfreq:network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</vnfreq:network-id>
+ <vnfreq:network-name>MNS-25180-L-01-dmz_direct_net_1</vnfreq:network-name>
+ <vnfreq:network-type>CONTRAIL_EXTERNAL</vnfreq:network-type>
+ <vnfreq:service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</vnfreq:service-id>
+ <vnfreq:aic-cloud-region>RDM2WAGPLCP</vnfreq:aic-cloud-region>
+ <vnfreq:tenant-id>7dd5365547234ee8937416c65507d266</vnfreq:tenant-id>
+ <vnfreq:physicalNetworkName>dvs-slcp3-01</vnfreq:physicalNetworkName>
+ <vnfreq:vlans>3008</vnfreq:vlans>
+ <vnfreq:service-instance-id>MNS-25180-L-01-dmz_direct_net_1</vnfreq:service-instance-id>
+ <vnfreq:backout-on-failure>true</vnfreq:backout-on-failure>
+ </vnfreq:network-inputs>
+ <vnfreq:network-params>
+ <param name="shared">1</param>
+ <param name="external">0</param>
+ </vnfreq:network-params>
+ </vnfreq:network-request>
+</rest:payload>"""
+
+ String expectedXMLNetworkInputs =
+"""<vnfreq:network-inputs xmlns:vnfreq="http://org.openecomp/mso/infra/vnf-request/v1">
+ <vnfreq:network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</vnfreq:network-id>
+ <vnfreq:network-name>MNS-25180-L-01-dmz_direct_net_1</vnfreq:network-name>
+ <vnfreq:network-type>CONTRAIL_EXTERNAL</vnfreq:network-type>
+ <vnfreq:service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</vnfreq:service-id>
+ <vnfreq:aic-cloud-region>RDM2WAGPLCP</vnfreq:aic-cloud-region>
+ <vnfreq:tenant-id>7dd5365547234ee8937416c65507d266</vnfreq:tenant-id>
+ <vnfreq:physicalNetworkName>dvs-slcp3-01</vnfreq:physicalNetworkName>
+ <vnfreq:vlans>3008</vnfreq:vlans>
+ <vnfreq:service-instance-id>MNS-25180-L-01-dmz_direct_net_1</vnfreq:service-instance-id>
+ <vnfreq:backout-on-failure>true</vnfreq:backout-on-failure>
+</vnfreq:network-inputs>"""
+
+ String networkXMLOutputs =
+""""""
+
+// ---- End XML Zone ----
+
+// ---- Start JSON Zone ----
+ // JSON format Input
+ String jsonIncomingRequest =
+ """{ "requestDetails": {
+ "modelInfo": {
+ "modelType": "network",
+ "modelCustomizationId": "f21df226-8093-48c3-be7e-0408fcda0422",
+ "modelName": "CONTRAIL_EXTERNAL",
+ "modelVersion": "1.0"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "RDM2WAGPLCP",
+ "tenantId": "7dd5365547234ee8937416c65507d266"
+ },
+ "requestInfo": {
+ "instanceName": "MNS-25180-L-01-dmz_direct_net_1",
+ "source": "VID",
+ "callbackUrl": "",
+ "suppressRollback": true,
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": "f70e927b-6087-4974-9ef8-c5e4d5847ca4",
+ "modelInfo": {
+ "modelType": "serviceT",
+ "modelId": "modelI",
+ "modelNameVersionId": "modelNameVersionI",
+ "modelName": "modleNam",
+ "modelVersion": "1"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "userParams": [
+ {
+ "name": "someUserParam1",
+ "value": "someValue1"
+ }
+ ]
+ }
+ }}"""
+
+ String expectedJSONNetworkRequest =
+ """<network-request xmlns="http://www.w3.org/2001/XMLSchema">
+ <request-info>
+ <request-id>null</request-id>
+ <action>CREATE</action>
+ <source>VID</source>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ </request-info>
+ <network-inputs>
+ <network-id>networkId</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <modelCustomizationId>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationId>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <sdncVersion>1610</sdncVersion>
+ </network-inputs>
+ <network-params>
+ <param name="some_user_param1">someValue1</param>
+ </network-params>
+</network-request>"""
+
+ String expectedJSONNetworkInputs =
+"""<network-inputs xmlns="http://www.w3.org/2001/XMLSchema">
+ <network-id>networkId</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <modelCustomizationId>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationId>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <sdncVersion>1610</sdncVersion>
+</network-inputs>"""
+
+ String networkJSONOutputs =
+"""<network-outputs>
+ <network-id>networkId</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ </network-outputs>"""
+
+// ---- End JSON Zone ----
+
+// ---- Start vPIR Zone ----
+ // expectedNetworkRequest
+ String expectedvIPRNetworkRequest =
+ """<network-request xmlns="http://www.w3.org/2001/XMLSchema">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>CREATE</action>
+ <source>VID</source>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ </request-info>
+ <network-inputs>
+ <network-id>networkId</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <subscription-service-type>MSO-dev-service-type</subscription-service-type>
+ <global-customer-id>globalId_45678905678</global-customer-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <failIfExist>false</failIfExist>
+ <networkModelInfo>
+ <modelName>CONTRAIL_EXTERNAL</modelName>
+ <modelUuid>sn5256d1-5a33-55df-13ab-12abad84e111</modelUuid>
+ <modelInvariantUuid>sn5256d1-5a33-55df-13ab-12abad84e764</modelInvariantUuid>
+ <modelVersion>1</modelVersion>
+ <modelCustomizationUuid>sn5256d1-5a33-55df-13ab-12abad84e222</modelCustomizationUuid>
+ </networkModelInfo>
+ <serviceModelInfo>
+ <modelName>HNGW Protected OAM</modelName>
+ <modelUuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</modelUuid>
+ <modelInvariantUuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</modelInvariantUuid>
+ <modelVersion>1.0</modelVersion>
+ <modelCustomizationUuid/>
+ </serviceModelInfo>
+ <sdncVersion>1702</sdncVersion>
+ </network-inputs>
+ <network-params/>
+</network-request>"""
+
+ String expectedvIPRNetworkInputs =
+"""<network-inputs xmlns="http://www.w3.org/2001/XMLSchema">
+ <network-id>networkId</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <subscription-service-type>MSO-dev-service-type</subscription-service-type>
+ <global-customer-id>globalId_45678905678</global-customer-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <failIfExist>false</failIfExist>
+ <networkModelInfo>
+ <modelName>CONTRAIL_EXTERNAL</modelName>
+ <modelUuid>sn5256d1-5a33-55df-13ab-12abad84e111</modelUuid>
+ <modelInvariantUuid>sn5256d1-5a33-55df-13ab-12abad84e764</modelInvariantUuid>
+ <modelVersion>1</modelVersion>
+ <modelCustomizationUuid>sn5256d1-5a33-55df-13ab-12abad84e222</modelCustomizationUuid>
+ </networkModelInfo>
+ <serviceModelInfo>
+ <modelName>HNGW Protected OAM</modelName>
+ <modelUuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</modelUuid>
+ <modelInvariantUuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</modelInvariantUuid>
+ <modelVersion>1.0</modelVersion>
+ <modelCustomizationUuid/>
+ </serviceModelInfo>
+ <sdncVersion>1702</sdncVersion>
+</network-inputs>"""
+
+ String networkvIPROutputs =
+"""<network-outputs>
+ <network-id>networkId</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ </network-outputs>"""
+
+// ---- End vPIR Zone ----
+
+ String vnfRequestFakeRegion =
+ """<vnfreq:network-request xmlns:vnfreq="http://org.openecomp/mso/infra/vnf-request/v1">
+ <vnfreq:request-info>
+ <vnfreq:request-id>1ef47428-cade-45bd-a103-0751e8b2deb0</vnfreq:request-id>
+ <vnfreq:action>CREATE</vnfreq:action>
+ <vnfreq:source>PORTAL</vnfreq:source>
+ </vnfreq:request-info>
+ <vnfreq:network-inputs>
+ <vnfreq:network-name>MNS-25180-L-01-dmz_direct_net_1</vnfreq:network-name>
+ <vnfreq:network-type>CONTRAIL_EXTERNAL</vnfreq:network-type>
+ <subscriptionServiceType>MSO-dev-service-type</subscriptionServiceType>
+ <vnfreq:service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</vnfreq:service-id>
+ <vnfreq:aic-cloud-region>MDTWNJ21</vnfreq:aic-cloud-region>
+ <vnfreq:tenant-id>7dd5365547234ee8937416c65507d266</vnfreq:tenant-id>
+ </vnfreq:network-inputs>
+ <vnfreq:network-params>
+ <param name="shared">1</param>
+ <param name="external">0</param>
+ </vnfreq:network-params>
+</vnfreq:network-request>"""
+
+ // expectedNetworkRequest
+ String expectedNetworkRequest_Outputs =
+ """<vnfreq:network-request xmlns:vnfreq="http://org.openecomp/mso/infra/vnf-request/v1">
+ <vnfreq:request-info>
+ <vnfreq:request-id>1ef47428-cade-45bd-a103-0751e8b2deb0</vnfreq:request-id>
+ <vnfreq:action>CREATE</vnfreq:action>
+ <vnfreq:source>PORTAL</vnfreq:source>
+ </vnfreq:request-info>
+ <vnfreq:network-inputs>
+ <vnfreq:network-name>MNS-25180-L-01-dmz_direct_net_1</vnfreq:network-name>
+ <vnfreq:network-type>CONTRAIL_EXTERNAL</vnfreq:network-type>
+ <subscriptionServiceType>MSO-dev-service-type</subscriptionServiceType>
+ <vnfreq:service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</vnfreq:service-id>
+ <vnfreq:aic-cloud-region>RDM2WAGPLCP</vnfreq:aic-cloud-region>
+ <vnfreq:tenant-id>7dd5365547234ee8937416c65507d266</vnfreq:tenant-id>
+ </vnfreq:network-inputs>
+ <vnfreq:network-outputs>
+ <vnfreq:network-name>MNS-25180-L-01-dmz_direct_net_1</vnfreq:network-name>
+ <vnfreq:network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</vnfreq:network-id>
+ </vnfreq:network-outputs>
+ <vnfreq:network-params>
+ <param name="shared">1</param>
+ <param name="external">0</param>
+ </vnfreq:network-params>
+</vnfreq:network-request>"""
+
+
+ // expectedNetworkRequest
+ String networkInputs_404 =
+ """<network-inputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <network-name>myOwn_Network</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>e81d842d3e8b45c5a59f57cd76af3aaf</tenant-id>
+ </network-inputs>"""
+
+ String networkInputs =
+ """<network-inputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>e81d842d3e8b45c5a59f57cd76af3aaf</tenant-id>
+</network-inputs>"""
+
+
+
+ String queryAAIResponse =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:502-132671"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v3">
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <orchestration-status>pending-create</orchestration-status>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <relationship-list>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>85f015d0-2e32-4c30-96d2-87a1a27f8017</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>c980a6ef-3b88-49f0-9751-dbad8608d0a6</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/7dd5365547234ee8937416c65507d266/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>7dd5365547234ee8937416c65507d266</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </l3-network>
+ </rest:payload>
+</rest:RESTResponse>"""
+
+ String queryIdAIIResponse =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:502-132671"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v6">
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>Contrail</network-technology>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <resource-version>l3-version</resource-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <physical-network-name>networkName</physical-network-name>
+ <is-provider-network>false</is-provider-network>
+ <is-shared-network>true</is-shared-network>
+ <is-external-network>false</is-external-network>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ <relationship-list/>
+ </subnet>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <segmentation-assignments>
+ <segmentation-id>414</segmentation-id>
+ <resource-version>4132176</resource-version>
+ </segmentation-assignments>
+ <segmentation-assignments>
+ <segmentation-id>415</segmentation-id>
+ <resource-version>4132176</resource-version>
+ </segmentation-assignments>
+ <ctag-assignments>
+ <ctag-assignment>
+ <vlan-id-inner>inner</vlan-id-inner>
+ <resource-version>ctag-version</resource-version>
+ <relationship-list>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/897deadc2b954a6bac6d3c197fb3525e/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>897deadc2b954a6bac6d3c197fb3525e</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>tenant.tenant-name</property-key>
+ <property-value>MSOTest1</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/a290b841-f672-44dd-b9cd-6f8c20d7d8c8/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>a290b841-f672-44dd-b9cd-6f8c20d7d8c8</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>oam_protected_net_6_MTN5_msotest2</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/24a4b507-853a-4a38-99aa-05fcc54be24d/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>24a4b507-853a-4a38-99aa-05fcc54be24d</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>oam_protected_net_6_MTN5_msotest1</property-value>
+ </related-to-property>
+ </relationship>
+ </relationship-list>
+ </ctag-assignment>
+ </ctag-assignments>
+ <relationship-list>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>85f015d0-2e32-4c30-96d2-87a1a27f8017</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>c980a6ef-3b88-49f0-9751-dbad8608d0a6</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/7dd5365547234ee8937416c65507d266/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>7dd5365547234ee8937416c65507d266</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>network-policy</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/network-policies/network-policy/cee6d136-e378-4678-a024-2cd15f0ee0cg</related-link>
+ <relationship-data>
+ <relationship-key>network-policy.network-policy-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0cg</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN1</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN2</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </l3-network>
+ </rest:payload>
+</rest:RESTResponse>"""
+
+String queryIdAIIResponse_segmentation =
+"""<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:502-132671"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v6">
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>Contrail</network-technology>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <resource-version>l3-version</resource-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <physical-network-name>networkName</physical-network-name>
+ <is-provider-network>false</is-provider-network>
+ <is-shared-network>true</is-shared-network>
+ <is-external-network>false</is-external-network>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ <relationship-list/>
+ </subnet>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <segmentation-assignments>
+ <segmentation-assignment>
+ <segmentation-id>1</segmentation-id>
+ <resource-version>1498507569188</resource-version>
+ </segmentation-assignment>
+ </segmentation-assignments>
+ <ctag-assignments>
+ <ctag-assignment>
+ <vlan-id-inner>inner</vlan-id-inner>
+ <resource-version>ctag-version</resource-version>
+ <relationship-list>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/897deadc2b954a6bac6d3c197fb3525e/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>897deadc2b954a6bac6d3c197fb3525e</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>tenant.tenant-name</property-key>
+ <property-value>MSOTest1</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/a290b841-f672-44dd-b9cd-6f8c20d7d8c8/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>a290b841-f672-44dd-b9cd-6f8c20d7d8c8</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>oam_protected_net_6_MTN5_msotest2</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/24a4b507-853a-4a38-99aa-05fcc54be24d/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>24a4b507-853a-4a38-99aa-05fcc54be24d</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>oam_protected_net_6_MTN5_msotest1</property-value>
+ </related-to-property>
+ </relationship>
+ </relationship-list>
+ </ctag-assignment>
+ </ctag-assignments>
+ <relationship-list>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>85f015d0-2e32-4c30-96d2-87a1a27f8017</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>c980a6ef-3b88-49f0-9751-dbad8608d0a6</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/7dd5365547234ee8937416c65507d266/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>7dd5365547234ee8937416c65507d266</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>network-policy</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/network-policies/network-policy/cee6d136-e378-4678-a024-2cd15f0ee0cg</related-link>
+ <relationship-data>
+ <relationship-key>network-policy.network-policy-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0cg</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN1</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN2</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </l3-network>
+ </rest:payload>
+</rest:RESTResponse>"""
+
+String queryIdAIIResponse_Ipv4 =
+"""<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:502-132671"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v6">
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>Contrail</network-technology>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <resource-version>l3-version</resource-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <physical-network-name>networkName</physical-network-name>
+ <is-provider-network>false</is-provider-network>
+ <is-shared-network>true</is-shared-network>
+ <is-external-network>false</is-external-network>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>ipv4</ip-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ <relationship-list/>
+ </subnet>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>ipv4</ip-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <segmentation-assignments>
+ <segmentation-id>414</segmentation-id>
+ <resource-version>4132176</resource-version>
+ </segmentation-assignments>
+ <segmentation-assignments>
+ <segmentation-id>415</segmentation-id>
+ <resource-version>4132176</resource-version>
+ </segmentation-assignments>
+ <ctag-assignments>
+ <ctag-assignment>
+ <vlan-id-inner>inner</vlan-id-inner>
+ <resource-version>ctag-version</resource-version>
+ <relationship-list>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/897deadc2b954a6bac6d3c197fb3525e/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>897deadc2b954a6bac6d3c197fb3525e</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>tenant.tenant-name</property-key>
+ <property-value>MSOTest1</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/a290b841-f672-44dd-b9cd-6f8c20d7d8c8/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>a290b841-f672-44dd-b9cd-6f8c20d7d8c8</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>oam_protected_net_6_MTN5_msotest2</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/24a4b507-853a-4a38-99aa-05fcc54be24d/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>24a4b507-853a-4a38-99aa-05fcc54be24d</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>oam_protected_net_6_MTN5_msotest1</property-value>
+ </related-to-property>
+ </relationship>
+ </relationship-list>
+ </ctag-assignment>
+ </ctag-assignments>
+ <relationship-list>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>85f015d0-2e32-4c30-96d2-87a1a27f8017</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>c980a6ef-3b88-49f0-9751-dbad8608d0a6</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/7dd5365547234ee8937416c65507d266/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>7dd5365547234ee8937416c65507d266</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>network-policy</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/network-policies/network-policy/cee6d136-e378-4678-a024-2cd15f0ee0cg</related-link>
+ <relationship-data>
+ <relationship-key>network-policy.network-policy-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0cg</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN1</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN2</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </l3-network>
+ </rest:payload>
+</rest:RESTResponse>"""
+
+String queryIdAIIResponse_SRIOV =
+"""<?xml version="1.0" encoding="UTF-8"?>
+<l3-network xmlns="http://org.openecomp.aai.inventory/v8">
+ <network-id>6cb1ae5a-d2db-4eb6-97bf-d52a506a53d8</network-id>
+ <network-name>MSO_TEST_1702_A_HnportalProviderNetwork.HNPortalPROVIDERNETWORK.SR_IOV_Provider2_1_net_17</network-name>
+ <network-type>SR_IOV_Provider2_1</network-type>
+ <network-role>HnportalProviderNetwork.HNPortalPROVIDERNETWORK.SR_IOV_Provider2_1</network-role>
+ <network-technology>AIC_SR_IOV</network-technology>
+ <is-bound-to-vpn>false</is-bound-to-vpn>
+ <service-id/>
+ <resource-version>1487336177672</resource-version>
+ <orchestration-status>PendingCreate</orchestration-status>
+ <persona-model-id>f70d7a32-0ac8-4bd5-a0fb-3c9336540d78</persona-model-id>
+ <persona-model-version>1.0</persona-model-version>
+ <physical-network-name>Physnet21</physical-network-name>
+ <is-provider-network>true</is-provider-network>
+ <is-shared-network>false</is-shared-network>
+ <is-external-network>false</is-external-network>
+ <subnets>
+ <subnet>
+ <subnet-id>10437</subnet-id>
+ <subnet-name>MSO_TEST_1702_A_HnportalProviderNetwork.HNPortalPROVIDERNETWORK.SR_IOV_Provider2_1_net_17_S0</subnet-name>
+ <gateway-address>192.168.6.1</gateway-address>
+ <network-start-address>192.168.6.0</network-start-address>
+ <cidr-mask>26</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>PendingCreate</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <dhcp-start>192.168.6.3</dhcp-start>
+ <dhcp-end>192.168.6.62</dhcp-end>
+ <resource-version>1487336177359</resource-version>
+ </subnet>
+ </subnets>
+ <relationship-list>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/mtn16/tenants/tenant/6accefef3cb442ff9e644d589fb04107</related-link>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-owner</relationship-key>
+ <relationship-value>att-aic</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-region-id</relationship-key>
+ <relationship-value>mtn16</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>6accefef3cb442ff9e644d589fb04107</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>tenant.tenant-name</property-key>
+ <property-value>MSO_TEST_1702_A</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>cloud-region</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/mtn16</related-link>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-owner</relationship-key>
+ <relationship-value>att-aic</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-region-id</relationship-key>
+ <relationship-value>mtn16</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>cloud-region.owner-defined-type</property-key>
+ <property-value>lcp</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>service-instance</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_ST/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/51d8336b-a993-4afe-a5fc-10b3afbd6560</related-link>
+ <relationship-data>
+ <relationship-key>customer.global-customer-id</relationship-key>
+ <relationship-value>MSO_1610_ST</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>service-subscription.service-type</relationship-key>
+ <relationship-value>MSO-dev-service-type</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>service-instance.service-instance-id</relationship-key>
+ <relationship-value>51d8336b-a993-4afe-a5fc-10b3afbd6560</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>service-instance.service-instance-name</property-key>
+ <property-value>HnportalProviderNetwork_17</property-value>
+ </related-to-property>
+ </relationship>
+ </relationship-list>
+</l3-network>"""
+
+ String queryIdAIIResponseTestScenario01 =
+ """<?xml version="1.0" encoding="UTF-8"?>
+<l3-network xmlns="http://org.openecomp.aai.inventory/v7">
+ <network-id>4da55fe4-7a9e-478c-a434-8a98d62265ab</network-id>
+ <network-name>GN_EVPN_direct_net_0_ST1</network-name>
+ <network-type>CONTRAIL30_BASIC</network-type>
+ <network-role>GN_EVPN_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <is-bound-to-vpn>false</is-bound-to-vpn>
+ <service-id>9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <resource-version>1465398611</resource-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <physical-network-name>networkName</physical-network-name>
+ <is-provider-network>false</is-provider-network>
+ <is-shared-network>true</is-shared-network>
+ <is-external-network>false</is-external-network>
+ <subnets>
+ <subnet>
+ <subnet-id>cb1a7b47-5428-44c9-89c2-8b17541c3228</subnet-id>
+ <gateway-address>108.239.40.1</gateway-address>
+ <network-start-address>108.239.40.0</network-start-address>
+ <cidr-mask>28</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <dhcp-start>108.239.40.0</dhcp-start>
+ <dhcp-end>108.239.40.0</dhcp-end>
+ <resource-version>1465398611</resource-version>
+ <subnet-name>subnetName</subnet-name>
+ <relationship-list />
+ </subnet>
+ <subnet>
+ <subnet-id>e2cc7c14-90f0-4205-840d-b4e07f04e621</subnet-id>
+ <gateway-address>2606:ae00:2e01:604::1</gateway-address>
+ <network-start-address>2606:ae00:2e01:604::</network-start-address>
+ <cidr-mask>64</cidr-mask>
+ <ip-version>6</ip-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <dhcp-start>2606:ae00:2e01:604::</dhcp-start>
+ <dhcp-end>2606:ae00:2e01:604::</dhcp-end>
+ <resource-version>1465398611</resource-version>
+ <subnet-name>subnetName</subnet-name>
+ <relationship-list />
+ </subnet>
+ </subnets>
+ <ctag-assignments />
+ <segmentation-assignments>
+ <segmentation-id>416</segmentation-id>
+ <resource-version>4132176</resource-version>
+ </segmentation-assignments>
+ <relationship-list>
+ <relationship>
+ <related-to>cloud-region</related-to>
+ <related-link>https://mtanjv9aaas03.aic.cip.com:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/
+ </related-link>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-region-id</relationship-key>
+ <relationship-value>AAIAIC25</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-owner</relationship-key>
+ <relationship-value>att-aic</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>cloud-region.owner-defined-type</property-key>
+ <property-value></property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://mtanjv9aaas03.aic.cip.com:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/tenants/tenant/4ae1d3446a4c48b2bec44b6cfba06d68/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>4ae1d3446a4c48b2bec44b6cfba06d68
+ </relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-owner</relationship-key>
+ <relationship-value>att-aic</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-region-id</relationship-key>
+ <relationship-value>AAIAIC25</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>tenant.tenant-name</property-key>
+ <property-value>Ruchira Contrail 3.0 test</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://mtanjv9aaas03.aic.cip.com:8443/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>9a7b327d9-287aa00-82c4b0-100001</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>GN_EVPN_direct_net_0_ST1</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN1</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN2</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+</l3-network>"""
+
+ String queryIdAIIResponseVpnNotPresent =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:502-132671"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v8">
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <orchestration-status>pending-create</orchestration-status>
+ <physical-network-name>networkName</physical-network-name>
+ <is-provider-network>false</is-provider-network>
+ <is-shared-network>true</is-shared-network>
+ <is-external-network>false</is-external-network>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <relationship-list/>
+ </l3-network>
+ </rest:payload>
+</rest:RESTResponse>"""
+
+ String queryNameAIIResponse =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:502-132671"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v6">
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <orchestration-status>pending-create</orchestration-status>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <relationship-list>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>85f015d0-2e32-4c30-96d2-87a1a27f8017</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>c980a6ef-3b88-49f0-9751-dbad8608d0a6</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/7dd5365547234ee8937416c65507d266/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>7dd5365547234ee8937416c65507d266</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </l3-network>
+ </rest:payload>
+ </rest:RESTResponse>"""
+
+ String queryNameAIIResponseVpnNotPresent =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:502-132671"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v6>
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <orchestration-status>pending-create</orchestration-status>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-create</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ </l3-network>
+ </rest:payload>
+ </rest:RESTResponse>"""
+
+ String aaiVpnResponseStub =
+ """<rest:payload xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ xmlns="http://org.openecomp.aai.inventory/v8"
+ contentType="text/xml">
+ <vpn-binding>
+ <global-route-target/>
+ </vpn-binding>
+</rest:payload>"""
+
+ String queryVpnBindingAAIResponse =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Mon,14 Mar 2016 20:53:33 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID"
+ value="mtcnjv9aaas01.mtcnj.aic.cip.com-20160314-20:53:33:487-134392"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <vpn-binding xmlns="http://org.openecomp.aai.inventory/v6">
+ <vpn-id>9a7b327d9-287aa00-82c4b0-105757</vpn-id>
+ <vpn-name>GN_EVPN_Test</vpn-name>
+ <global-route-target>13979:105757</global-route-target>
+ <relationship-list>
+ <relationship>
+ <related-to>l3-network</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v3/network/l3-networks/l3-network/689ec39e-c5fc-4462-8db2-4f760763ad28/</related-link>
+ <relationship-data>
+ <relationship-key>l3-network.network-id</relationship-key>
+ <relationship-value>689ec39e-c5fc-4462-8db2-4f760763ad28</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>l3-network</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v3/network/l3-networks/l3-network/1a49396b-19b3-40a4-8792-aa2fbd0f0704/</related-link>
+ <relationship-data>
+ <relationship-key>l3-network.network-id</relationship-key>
+ <relationship-value>1a49396b-19b3-40a4-8792-aa2fbd0f0704</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>l3-network</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v3/network/l3-networks/l3-network/774f3329-3c83-4771-86c7-9e6207cd50fd/</related-link>
+ <relationship-data>
+ <relationship-key>l3-network.network-id</relationship-key>
+ <relationship-value>774f3329-3c83-4771-86c7-9e6207cd50fd</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </vpn-binding>
+ </rest:payload>
+</rest:RESTResponse>"""
+
+ String createDBRequestError01 =
+ """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <lastModifiedBy>BPMN</lastModifiedBy>
+ <statusMessage>Received error unexpectedly from SDN-C.</statusMessage>
+ <responseBody></responseBody>
+ <requestStatus>FAILED</requestStatus>
+ <vnfOutputs><network-id></network-id><network-name></network-names></vnfOutputs>
+ </ns:updateInfraRequest>
+ </soapenv:Body>
+ </soapenv:Envelope>"""
+
+ String createDBRequest_Outputs =
+ """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:ns="http://org.openecomp.mso/requestsdb">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <ns:updateInfraRequest>
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <lastModifiedBy>BPMN</lastModifiedBy>
+ <statusMessage>Network successfully created.</statusMessage>
+ <responseBody/>
+ <requestStatus>COMPLETED</requestStatus>
+ <progress>100</progress>
+ <vnfOutputs><network-id>networkId</network-id><network-name>MNS-25180-L-01-dmz_direct_net_1</network-names></vnfOutputs>
+ <networkId>networkId</networkId>
+ </ns:updateInfraRequest>
+ </soapenv:Body>
+</soapenv:Envelope>"""
+
+ String createNetworkRequest =
+ """<createNetworkRequest>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <networkId>49c86598-f766-46f8-84f8-8d1c1b10f9b4</networkId>
+ <networkName>MNS-25180-L-01-dmz_direct_net_1</networkName>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <modelCustomizationUuid>sn5256d1-5a33-55df-13ab-12abad84e222</modelCustomizationUuid>
+ <networkTechnology>CONTRAIL</networkTechnology>
+ <providerVlanNetwork>
+ <physicalNetworkName>networkName</physicalNetworkName>
+ <vlans>414,415</vlans>
+ </providerVlanNetwork>
+ <contrailNetwork>
+ <shared>true</shared>
+ <external>false</external>
+ <routeTargets>13979:105757</routeTargets>
+ <routeTargets>13979:105757</routeTargets>
+ <policyFqdns>GN_EVPN_Test</policyFqdns>
+ <routeTableFqdns>refFQDN1</routeTableFqdns>
+ <routeTableFqdns>refFQDN2</routeTableFqdns>
+ </contrailNetwork>
+ <subnets>
+ <allocationPools>
+ <start/>
+ <end/>
+ </allocationPools>
+ <cidr>107.239.52.0/24</cidr>
+ <enableDHCP>true</enableDHCP>
+ <gatewayIp>107.239.52.1</gatewayIp>
+ <ipVersion>4</ipVersion>
+ <subnetId>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnetId>
+ <subnetName>subnetName</subnetName>
+ </subnets>
+ <subnets>
+ <allocationPools>
+ <start/>
+ <end/>
+ </allocationPools>
+ <cidr>107.239.52.0/24</cidr>
+ <enableDHCP>true</enableDHCP>
+ <gatewayIp>107.239.52.1</gatewayIp>
+ <ipVersion>4</ipVersion>
+ <subnetId>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnetId>
+ <subnetName>subnetName</subnetName>
+ </subnets>
+ <skipAAI>true</skipAAI>
+ <backout>true</backout>
+ <failIfExists>false</failIfExists>
+ <msoRequest>
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <serviceInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</serviceInstanceId>
+ </msoRequest>
+ <messageId>messageId_generated</messageId>
+ <notificationUrl/>
+</createNetworkRequest>"""
+
+String createNetworkRequestAlaCarte =
+"""<createNetworkRequest>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <networkId>49c86598-f766-46f8-84f8-8d1c1b10f9b4</networkId>
+ <networkName>MNS-25180-L-01-dmz_direct_net_1</networkName>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <modelCustomizationUuid>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationUuid>
+ <networkTechnology>CONTRAIL</networkTechnology>
+ <providerVlanNetwork>
+ <physicalNetworkName>networkName</physicalNetworkName>
+ <vlans>414,415</vlans>
+ </providerVlanNetwork>
+ <contrailNetwork>
+ <shared>true</shared>
+ <external>false</external>
+ <routeTargets>13979:105757</routeTargets>
+ <routeTargets>13979:105757</routeTargets>
+ <policyFqdns>GN_EVPN_Test</policyFqdns>
+ <routeTableFqdns>refFQDN1</routeTableFqdns>
+ <routeTableFqdns>refFQDN2</routeTableFqdns>
+ </contrailNetwork>
+ <subnets>
+ <allocationPools>
+ <start/>
+ <end/>
+ </allocationPools>
+ <cidr>107.239.52.0/24</cidr>
+ <enableDHCP>true</enableDHCP>
+ <gatewayIp>107.239.52.1</gatewayIp>
+ <ipVersion>4</ipVersion>
+ <subnetId>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnetId>
+ <subnetName>subnetName</subnetName>
+ </subnets>
+ <subnets>
+ <allocationPools>
+ <start/>
+ <end/>
+ </allocationPools>
+ <cidr>107.239.52.0/24</cidr>
+ <enableDHCP>true</enableDHCP>
+ <gatewayIp>107.239.52.1</gatewayIp>
+ <ipVersion>4</ipVersion>
+ <subnetId>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnetId>
+ <subnetName>subnetName</subnetName>
+ </subnets>
+ <skipAAI>true</skipAAI>
+ <backout>true</backout>
+ <failIfExists>false</failIfExists>
+ <networkParams>
+ <some_user_param1>someValue1</some_user_param1>
+ </networkParams>
+ <msoRequest>
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <serviceInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</serviceInstanceId>
+ </msoRequest>
+ <messageId>messageId_generated</messageId>
+ <notificationUrl/>
+</createNetworkRequest>"""
+
+String createNetworkRequest_SRIOV =
+"""<createNetworkRequest>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <networkId>6cb1ae5a-d2db-4eb6-97bf-d52a506a53d8</networkId>
+ <networkName>MSO_TEST_1702_A_HnportalProviderNetwork.HNPortalPROVIDERNETWORK.SR_IOV_Provider2_1_net_17</networkName>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <modelCustomizationUuid>sn5256d1-5a33-55df-13ab-12abad84e222</modelCustomizationUuid>
+ <networkTechnology>AIC_SR_IOV</networkTechnology>
+ <providerVlanNetwork>
+ <physicalNetworkName>Physnet21</physicalNetworkName>
+ <vlans/>
+ </providerVlanNetwork>
+ <subnets>
+ <allocationPools>
+ <start>192.168.6.3</start>
+ <end>192.168.6.62</end>
+ </allocationPools>
+ <cidr>192.168.6.0/26</cidr>
+ <enableDHCP>true</enableDHCP>
+ <gatewayIp>192.168.6.1</gatewayIp>
+ <ipVersion>4</ipVersion>
+ <subnetId>10437</subnetId>
+ <subnetName>MSO_TEST_1702_A_HnportalProviderNetwork.HNPortalPROVIDERNETWORK.SR_IOV_Provider2_1_net_17_S0</subnetName>
+ </subnets>
+ <skipAAI>true</skipAAI>
+ <backout>true</backout>
+ <failIfExists>false</failIfExists>
+ <msoRequest>
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <serviceInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</serviceInstanceId>
+ </msoRequest>
+ <messageId>messageId_generated</messageId>
+ <notificationUrl/>
+</createNetworkRequest>"""
+
+ String createNetworkRequest_noPhysicalName =
+ """<createNetworkRequest>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <networkId>49c86598-f766-46f8-84f8-8d1c1b10f9b4</networkId>
+ <networkName>MNS-25180-L-01-dmz_direct_net_1</networkName>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <networkTechnology>CONTRAIL</networkTechnology>
+ <providerVlanNetwork>
+ <physicalNetworkName>networkName</physicalNetworkName>
+ <vlans>414,415</vlans>
+ </providerVlanNetwork>
+ <contrailNetwork>
+ <shared>true</shared>
+ <external>false</external>
+ <routeTargets>13979:105757</routeTargets>
+ <routeTargets>13979:105757</routeTargets>
+ <policyFqdns>GN_EVPN_Test</policyFqdns>
+ </contrailNetwork>
+ <subnets>
+ <allocationPools>
+ <start/>
+ <end/>
+ </allocationPools>
+ <cidr>107.239.52.0/24</cidr>
+ <enableDHCP>true</enableDHCP>
+ <gatewayIp>107.239.52.1</gatewayIp>
+ <ipVersion>4</ipVersion>
+ <subnetId>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnetId>
+ <subnetName>subnetName</subnetName>
+ </subnets>
+ <subnets>
+ <allocationPools>
+ <start/>
+ <end/>
+ </allocationPools>
+ <cidr>107.239.52.0/24</cidr>
+ <enableDHCP>true</enableDHCP>
+ <gatewayIp>107.239.52.1</gatewayIp>
+ <ipVersion>4</ipVersion>
+ <subnetId>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnetId>
+ <subnetName>subnetName</subnetName>
+ </subnets>
+ <skipAAI>true</skipAAI>
+ <backout>true</backout>
+ <failIfExists>false</failIfExists>
+ <networkParams>
+ <dhcp-enabled>true</dhcp-enabled>
+ <serviceId>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</serviceId>
+ <cidr-mask>true</cidr-mask>
+ <backoutOnFailure>true</backoutOnFailure>
+ <gateway-address>10.10.125.1</gateway-address>
+ </networkParams>
+ <msoRequest>
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <serviceInstanceId>null</serviceInstanceId>
+ </msoRequest>
+ <messageId>messageId_generated</messageId>
+ <notificationUrl/>
+</createNetworkRequest>"""
+
+ String createNetworkResponseREST =
+ """<ns2:createNetworkResponse xmlns:ns2="http://org.openecomp.mso/network">
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkFqdn>default-domain:MSOTest:GN_EVPN_direct_net_0_ST1</networkFqdn>
+ <networkStackId></networkStackId>
+ <networkCreated>true</networkCreated>
+ <subnetMap>
+ <entry>
+ <key>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</key>
+ <value>bd8e87c6-f4e2-41b8-b0bc-9596aa00cd73</value>
+ </entry>
+ <entry>
+ <key>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</key>
+ <value>bd8e87c6-f4e2-41b8-b0bc-9596aa00cd73</value>
+ </entry>
+ </subnetMap>
+ <rollback>
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkStackId></networkStackId>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <networkCreated>true</networkCreated>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <msoRequest>
+ <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+ <serviceInstanceId></serviceInstanceId>
+ </msoRequest>
+ </rollback>
+ <messageId>messageId_generated</messageId>
+</ns2:createNetworkResponse>"""
+
+ String createRollbackNetworkRequest =
+ """<rollbackNetworkRequest>
+ <networkRollback>
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkStackId/>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <networkCreated>true</networkCreated>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <msoRequest>
+ <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+ <serviceInstanceId/>
+ </msoRequest>
+ </networkRollback>
+</rollbackNetworkRequest>"""
+
+ String createNetworkResponse =
+ """<ns2:createNetworkResponse xmlns:ns2="http://org.openecomp.mso/network"
+ xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkStackId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkStackId>
+ <networkFqdn>default-domain:MSOTest:GN_EVPN_direct_net_0_ST1</networkFqdn>
+ <subnetIdMap>
+ <entry>
+ <key>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</key>
+ <value>bd8e87c6-f4e2-41b8-b0bc-9596aa00cd73</value>
+ </entry>
+ </subnetIdMap>
+ <rollback>
+ <cloudId>RDM2WAGPLCP</cloudId>
+ <msoRequest>
+ <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+ <serviceInstanceId/>
+ </msoRequest>
+ <networkCreated>true</networkCreated>
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <networkUpdated>false</networkUpdated>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ </rollback>
+</ns2:createNetworkResponse>"""
+
+ String updateContrailAAIPayloadRequest =
+ """<l3-network xmlns="http://org.openecomp.aai.inventory/v9">
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>Contrail</network-technology>
+ <neutron-network-id>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutron-network-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <resource-version>l3-version</resource-version>
+ <orchestration-status>Created</orchestration-status>
+ <contrail-network-fqdn>default-domain:MSOTest:GN_EVPN_direct_net_0_ST1</contrail-network-fqdn>
+ <physical-network-name>networkName</physical-network-name>
+ <is-provider-network>false</is-provider-network>
+ <is-shared-network>true</is-shared-network>
+ <is-external-network>false</is-external-network>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <neutron-subnet-id>bd8e87c6-f4e2-41b8-b0bc-9596aa00cd73</neutron-subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>Created</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ </subnet>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <neutron-subnet-id>bd8e87c6-f4e2-41b8-b0bc-9596aa00cd73</neutron-subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>Created</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ </subnet>
+ </subnets>
+ <segmentation-assignments>
+ <segmentation-id>414</segmentation-id>
+ <resource-version>4132176</resource-version>
+ </segmentation-assignments>
+ <segmentation-assignments>
+ <segmentation-id>415</segmentation-id>
+ <resource-version>4132176</resource-version>
+ </segmentation-assignments>
+ <ctag-assignments>
+ <ctag-assignment>
+ <vlan-id-inner>inner</vlan-id-inner>
+ <resource-version>ctag-version</resource-version>
+ <relationship-list>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/897deadc2b954a6bac6d3c197fb3525e/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>897deadc2b954a6bac6d3c197fb3525e</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>tenant.tenant-name</property-key>
+ <property-value>MSOTest1</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/a290b841-f672-44dd-b9cd-6f8c20d7d8c8/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>a290b841-f672-44dd-b9cd-6f8c20d7d8c8</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>oam_protected_net_6_MTN5_msotest2</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/24a4b507-853a-4a38-99aa-05fcc54be24d/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>24a4b507-853a-4a38-99aa-05fcc54be24d</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>oam_protected_net_6_MTN5_msotest1</property-value>
+ </related-to-property>
+ </relationship>
+ </relationship-list>
+ </ctag-assignment>
+ </ctag-assignments>
+ <relationship-list>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>85f015d0-2e32-4c30-96d2-87a1a27f8017</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>c980a6ef-3b88-49f0-9751-dbad8608d0a6</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/7dd5365547234ee8937416c65507d266/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>7dd5365547234ee8937416c65507d266</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>network-policy</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/network-policies/network-policy/cee6d136-e378-4678-a024-2cd15f0ee0cg</related-link>
+ <relationship-data>
+ <relationship-key>network-policy.network-policy-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0cg</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN1</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN2</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+</l3-network>"""
+
+String updateContrailAAIPayloadRequest_segmentation =
+"""<l3-network xmlns="http://org.openecomp.aai.inventory/v9">
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>Contrail</network-technology>
+ <neutron-network-id>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutron-network-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <resource-version>l3-version</resource-version>
+ <orchestration-status>Created</orchestration-status>
+ <contrail-network-fqdn>default-domain:MSOTest:GN_EVPN_direct_net_0_ST1</contrail-network-fqdn>
+ <physical-network-name>networkName</physical-network-name>
+ <is-provider-network>false</is-provider-network>
+ <is-shared-network>true</is-shared-network>
+ <is-external-network>false</is-external-network>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <neutron-subnet-id>bd8e87c6-f4e2-41b8-b0bc-9596aa00cd73</neutron-subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>Created</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ </subnet>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <neutron-subnet-id>bd8e87c6-f4e2-41b8-b0bc-9596aa00cd73</neutron-subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>Created</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ </subnet>
+ </subnets>
+ <segmentation-assignments>
+ <segmentation-assignment>
+ <segmentation-id>1</segmentation-id>
+ <resource-version>1498507569188</resource-version>
+ </segmentation-assignment>
+ </segmentation-assignments>
+ <ctag-assignments>
+ <ctag-assignment>
+ <vlan-id-inner>inner</vlan-id-inner>
+ <resource-version>ctag-version</resource-version>
+ <relationship-list>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/897deadc2b954a6bac6d3c197fb3525e/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>897deadc2b954a6bac6d3c197fb3525e</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>tenant.tenant-name</property-key>
+ <property-value>MSOTest1</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/a290b841-f672-44dd-b9cd-6f8c20d7d8c8/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>a290b841-f672-44dd-b9cd-6f8c20d7d8c8</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>oam_protected_net_6_MTN5_msotest2</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/24a4b507-853a-4a38-99aa-05fcc54be24d/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>24a4b507-853a-4a38-99aa-05fcc54be24d</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>oam_protected_net_6_MTN5_msotest1</property-value>
+ </related-to-property>
+ </relationship>
+ </relationship-list>
+ </ctag-assignment>
+ </ctag-assignments>
+ <relationship-list>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>85f015d0-2e32-4c30-96d2-87a1a27f8017</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>c980a6ef-3b88-49f0-9751-dbad8608d0a6</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/7dd5365547234ee8937416c65507d266/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>7dd5365547234ee8937416c65507d266</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>network-policy</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/network-policies/network-policy/cee6d136-e378-4678-a024-2cd15f0ee0cg</related-link>
+ <relationship-data>
+ <relationship-key>network-policy.network-policy-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0cg</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN1</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN2</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+</l3-network>"""
+
+ String updateContrailAAIResponse =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Content-Length" value="0"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:551-132672"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+</rest:RESTResponse>"""
+
+ String createNetworkErrorResponse =
+ """<createNetworkError>
+ <messageId>680bd458-5ec1-4a16-b77c-509022e53450</messageId><category>INTERNAL</category>
+ <message>400 Bad Request: The server could not comply with the request since it is either malformed or otherwise incorrect., error.type=StackValidationFailed, error.message=Property error: : resources.network.properties: : Unknown Property network_ipam_refs_data</message>
+ <rolledBack>true</rolledBack>
+ </createNetworkError>"""
+
+
+ String networkException500 =
+ """<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:VersionMismatch</faultcode><faultstring>"http://org.openecomp.mso/network", the namespace on the "createNetworkContrail" element, is not a valid SOAP version.</faultstring></soap:Fault></soap:Body></soap:Envelope>"""
+
+ String aaiResponse =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Sat,30 Jan 2016 20:09:24 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID"
+ value="mtcnjv9aaas01.mtcnj.aic.cip.com-20160130-20:09:24:814-165843"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v3">
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_BASIC</network-type>
+ <network-role>HSL_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <neutron-network-id>8bbd3edf-b835-4610-96a2-a5cafa029042</neutron-network-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <orchestration-status>active</orchestration-status>
+ <heat-stack-id>HSL_direct_net_2/57594a56-1c92-4a38-9caa-641c1fa3d4b6</heat-stack-id>
+ <subnets>
+ <subnet>
+ <subnet-id>ea5f2a2c-604f-47ff-a9c5-253ee4f0ef0a</subnet-id>
+ <neutron-subnet-id>5a77fdc2-7789-4649-a1b9-6eaf1db1813a</neutron-subnet-id>
+ <gateway-address>172.16.34.1</gateway-address>
+ <network-start-address>172.16.34.0</network-start-address>
+ <cidr-mask>28</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>active</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <relationship-list>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v3/cloud-infrastructure/tenants/tenant/e81d842d3e8b45c5a59f57cd76af3aaf/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>e81d842d3e8b45c5a59f57cd76af3aaf</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </l3-network>
+ </rest:payload>
+ </rest:RESTResponse>"""
+
+ String assignSDNCRequest =
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>assign</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>NetworkActivateRequest</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type>MSO-dev-service-type</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-request-information>
+ <network-id>networkId</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+String assignSDNCRequest_decodeUrlLink =
+"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>assign</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>NetworkActivateRequest</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type>VIRTUAL USP</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-request-information>
+ <network-id>networkId</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+String assignRpcSDNCRequest =
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>assign</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>CreateNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <subscription-service-type>MSO-dev-service-type</subscription-service-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</model-invariant-uuid>
+ <model-uuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</model-uuid>
+ <model-version>1.0</model-version>
+ <model-name>HNGW Protected OAM</model-name>
+ </ecomp-model-information>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <global-customer-id>globalId_45678905678</global-customer-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-information>
+ <network-id>networkId</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>sn5256d1-5a33-55df-13ab-12abad84e764</model-invariant-uuid>
+ <model-customization-uuid>sn5256d1-5a33-55df-13ab-12abad84e222</model-customization-uuid>
+ <model-uuid>sn5256d1-5a33-55df-13ab-12abad84e111</model-uuid>
+ <model-version>1</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-input>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <aic-clli/>
+ <network-input-parameters/>
+ </network-request-input>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+String activateSDNCRequest =
+"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>activate</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>CreateNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <subscription-service-type>MSO-dev-service-type</subscription-service-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</model-invariant-uuid>
+ <model-uuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</model-uuid>
+ <model-version>1.0</model-version>
+ <model-name>HNGW Protected OAM</model-name>
+ </ecomp-model-information>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <global-customer-id>globalId_45678905678</global-customer-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-information>
+ <network-id>networkId</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>sn5256d1-5a33-55df-13ab-12abad84e764</model-invariant-uuid>
+ <model-customization-uuid>sn5256d1-5a33-55df-13ab-12abad84e222</model-customization-uuid>
+ <model-uuid>sn5256d1-5a33-55df-13ab-12abad84e111</model-uuid>
+ <model-version>1</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-input>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <aic-clli/>
+ <network-input-parameters/>
+ </network-request-input>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+String assignResponse =
+"""<sdncadapterworkflow:SDNCAdapterWorkflowResponse xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" xmlns:tag0="http://org.openecomp/workflow/sdnc/adapter/schema/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <sdncadapterworkflow:response-data> <tag0:CallbackHeader> <tag0:RequestId>006927ca-f5a3-47fd-880c-dfcbcd81a093</tag0:RequestId> <tag0:ResponseCode>200</tag0:ResponseCode> <tag0:ResponseMessage>OK</tag0:ResponseMessage> </tag0:CallbackHeader> <tag0:RequestData xsi:type="xs:string"><output xmlns="com:att:sdnctl:vnf"><response-code>200</response-code><svc-request-id>006927ca-f5a3-47fd-880c-dfcbcd81a093</svc-request-id><ack-final-indicator>Y</ack-final-indicator><service-information><subscriber-name>notsurewecare</subscriber-name><service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id><service-instance-id>GN_EVPN_direct_net_0_ST_noGW</service-instance-id></service-information><network-information><network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id></network-information></output></tag0:RequestData> </sdncadapterworkflow:response-data> </sdncadapterworkflow:SDNCAdapterWorkflowResponse>"""
+
+ String sdncRollbackRequest =
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>NetworkActivateRequest</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type>MSO-dev-service-type</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-request-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+String sdncRpcRollbackRequest =
+"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>unassign</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>DeleteNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <subscription-service-type>MSO-dev-service-type</subscription-service-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</model-invariant-uuid>
+ <model-uuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</model-uuid>
+ <model-version>1.0</model-version>
+ <model-name>HNGW Protected OAM</model-name>
+ </ecomp-model-information>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <global-customer-id>globalId_45678905678</global-customer-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>sn5256d1-5a33-55df-13ab-12abad84e764</model-invariant-uuid>
+ <model-customization-uuid>sn5256d1-5a33-55df-13ab-12abad84e222</model-customization-uuid>
+ <model-uuid>sn5256d1-5a33-55df-13ab-12abad84e111</model-uuid>
+ <model-version>1</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-input>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <aic-clli/>
+ <network-input-parameters/>
+ </network-request-input>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+String sdncActivateRollbackRequest =
+"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>deactivate</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>DeleteNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <subscription-service-type>MSO-dev-service-type</subscription-service-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</model-invariant-uuid>
+ <model-uuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</model-uuid>
+ <model-version>1.0</model-version>
+ <model-name>HNGW Protected OAM</model-name>
+ </ecomp-model-information>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <global-customer-id>globalId_45678905678</global-customer-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>sn5256d1-5a33-55df-13ab-12abad84e764</model-invariant-uuid>
+ <model-customization-uuid>sn5256d1-5a33-55df-13ab-12abad84e222</model-customization-uuid>
+ <model-uuid>sn5256d1-5a33-55df-13ab-12abad84e111</model-uuid>
+ <model-version>1</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-input>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <aic-clli/>
+ <network-input-parameters/>
+ </network-request-input>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+ String sdncAdapterWorkflowResponse =
+ """<aetgt:SDNCAdapterWorkflowResponse xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1">
+ <sdncadapterworkflow:response-data>
+<tag0:CallbackHeader xmlns:tag0="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <tag0:RequestId>745b1b50-e39e-4685-9cc8-c71f0bde8bf0</tag0:RequestId>
+ <tag0:ResponseCode>200</tag0:ResponseCode>
+ <tag0:ResponseMessage>OK</tag0:ResponseMessage>
+</tag0:CallbackHeader>
+ <tag0:RequestData xmlns:tag0="http://org.openecomp/workflow/sdnc/adapter/schema/v1"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:type="xs:string"><output xmlns="com:att:sdnctl:vnf"><svc-request-id>00703dc8-71ff-442d-a4a8-3adc5beef6a9</svc-request-id><response-code>200</response-code><ack-final-indicator>Y</ack-final-indicator><network-information><network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id></network-information><service-information><service-type>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-type><service-instance-id>MNS-25180-L-01-dmz_direct_net_1</service-instance-id><subscriber-name>notsurewecare</subscriber-name></service-information></output></tag0:RequestData>
+ </sdncadapterworkflow:response-data>
+</aetgt:SDNCAdapterWorkflowResponse>"""
+
+
+ String sdncAdapterWorkflowResponse_Error =
+ """<sdncadapterworkflow:SDNCAdapterWorkflowResponse xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:tag0="http://org.openecomp/workflow/sdnc/adapter/schema/v1"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="com:att:sdnctl:vnf">
+ <sdncadapterworkflow:response-data>
+ <tag0:RequestData xsi:type="xs:string">
+ <output>
+ <response-code>400</response-code>
+ <response-message>Error writing to l3-netework</response-message>
+ <ack-final-indicator>Y</ack-final-indicator>
+ <svc-request-id>c79240d8-34b5-4853-af69-2021928dba00</svc-request-id>
+ </output>
+ </tag0:RequestData>
+ </sdncadapterworkflow:response-data>
+</sdncadapterworkflow:SDNCAdapterWorkflowResponse>"""
+
+ String expected_sdncAdapterWorkflowResponse_Error =
+ """<sdncadapterworkflow:SDNCAdapterWorkflowResponse xmlns="com:att:sdnctl:vnf"
+ xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:tag0="http://org.openecomp/workflow/sdnc/adapter/schema/v1"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <sdncadapterworkflow:response-data>
+ <tag0:RequestData xsi:type="xs:string">
+ <output>
+ <response-code>400</response-code>
+ <response-message>Error writing to l3-netework</response-message>
+ <ack-final-indicator>Y</ack-final-indicator>
+ <svc-request-id>c79240d8-34b5-4853-af69-2021928dba00</svc-request-id>
+ </output>
+ </tag0:RequestData>
+ </sdncadapterworkflow:response-data>
+</sdncadapterworkflow:SDNCAdapterWorkflowResponse>"""
+
+ String sdncAdapterWorkflowFormattedResponse =
+ """<aetgt:SDNCAdapterWorkflowResponse xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns="com:att:sdnctl:vnf">
+ <aetgt:response-data>
+ <output>
+ <svc-request-id>00703dc8-71ff-442d-a4a8-3adc5beef6a9</svc-request-id>
+ <response-code>200</response-code>
+ <ack-final-indicator>Y</ack-final-indicator>
+ <network-information>
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ </network-information>
+ <service-information>
+ <service-type>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>notsurewecare</subscriber-name>
+ </service-information>
+ </output>
+ </aetgt:response-data>
+</aetgt:SDNCAdapterWorkflowResponse>"""
+
+String sdncAdapterWorkflowAssignResponse =
+"""<sdncadapterworkflow:SDNCAdapterWorkflowResponse xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:tag0="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <sdncadapterworkflow:response-data>
+ <tag0:CallbackHeader>
+ <tag0:RequestId>79ec9006-3695-4fcc-93a8-be6f9e248beb</tag0:RequestId>
+ <tag0:ResponseCode>200</tag0:ResponseCode>
+ <tag0:ResponseMessage>OK</tag0:ResponseMessage>
+ </tag0:CallbackHeader>
+ <tag0:RequestData xsi:type="xs:string">
+ <output xmlns="com:att:sdnctl:generic-resource">
+ <response-message/>
+ <svc-request-id>79ec9006-3695-4fcc-93a8-be6f9e248beb</svc-request-id>
+ <service-response-information>
+ <instance-id>f805ec2b-b4d8-473e-8325-67f110139e5d</instance-id>
+ </service-response-information>
+ <response-code>200</response-code>
+ <network-response-information>
+ <instance-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</instance-id>
+ <object-path>restconf/config/GENERIC-RESOURCE-API:services/service/f805ec2b-b4d8-473e-8325-67f110139e5d/service-data/networks/network/f7e4db56-aab5-4065-8e65-cec1cd1de24f</object-path>
+ </network-response-information>
+ <ack-final-indicator>Y</ack-final-indicator>
+ </output>
+ </tag0:RequestData>
+ </sdncadapterworkflow:response-data>
+</sdncadapterworkflow:SDNCAdapterWorkflowResponse>"""
+
+ String rollbackNetworkRequest =
+"""<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">
+ <rollback>
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkStackId/>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <networkCreated>true</networkCreated>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <msoRequest>
+ <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+ <serviceInstanceId/>
+ </msoRequest>
+ </rollback>
+</NetworkAdapter:rollbackNetwork>"""
+
+ String rollbackActivateSDNCRequest =
+"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>CreateNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type>MSO-dev-service-type</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
+ <model-customization-uuid>customization-uuid</model-customization-uuid>
+ <model-uuid>uuid</model-uuid>
+ <model-version>version</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+ String rollbackSDNCRequest =
+"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>CreateNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type>MSO-dev-service-type</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
+ <model-customization-uuid>customization-uuid</model-customization-uuid>
+ <model-uuid>uuid</model-uuid>
+ <model-version>version</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+// - - - - - - - -
+
+ @Before
+ public void init()
+ {
+ MockitoAnnotations.initMocks(this)
+
+ }
+
+ public void initializeVariables (Execution mockExecution) {
+
+ verify(mockExecution).setVariable(Prefix + "networkRequest", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackEnabled", null)
+ verify(mockExecution).setVariable(Prefix + "networkInputs", "")
+ //verify(mockExecution).setVariable(Prefix + "requestId", "")
+ verify(mockExecution).setVariable(Prefix + "messageId", "")
+ verify(mockExecution).setVariable(Prefix + "source", "")
+ verify(mockExecution).setVariable("BasicAuthHeaderValuePO", "")
+ verify(mockExecution).setVariable("BasicAuthHeaderValueSDNC", "")
+ verify(mockExecution).setVariable(Prefix + "serviceInstanceId","")
+ verify(mockExecution).setVariable("GENGS_type","")
+ verify(mockExecution).setVariable(Prefix + "rsrc_endpoint", null)
+ verify(mockExecution).setVariable(Prefix + "networkOutputs", "")
+ verify(mockExecution).setVariable(Prefix + "networkId","")
+ verify(mockExecution).setVariable(Prefix + "networkName","")
+
+ // AAI query Name
+ verify(mockExecution).setVariable(Prefix + "queryNameAAIRequest","")
+ verify(mockExecution).setVariable(Prefix + "queryNameAAIResponse", "")
+ verify(mockExecution).setVariable(Prefix + "aaiNameReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "isAAIqueryNameGood", false)
+
+ // AAI query Cloud Region
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionRequest","")
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionReturnCode","")
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionResponse","")
+ verify(mockExecution).setVariable(Prefix + "cloudRegionPo","")
+ verify(mockExecution).setVariable(Prefix + "cloudRegionSdnc","")
+ verify(mockExecution).setVariable(Prefix + "isCloudRegionGood", false)
+
+ // AAI query Id
+ verify(mockExecution).setVariable(Prefix + "queryIdAAIRequest","")
+ verify(mockExecution).setVariable(Prefix + "queryIdAAIResponse", "")
+ verify(mockExecution).setVariable(Prefix + "aaiIdReturnCode", "")
+
+ // AAI query vpn binding
+ verify(mockExecution).setVariable(Prefix + "queryVpnBindingAAIRequest","")
+ verify(mockExecution).setVariable(Prefix + "queryVpnBindingAAIResponse", "")
+ verify(mockExecution).setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "vpnBindings", null)
+ verify(mockExecution).setVariable(Prefix + "vpnCount", 0)
+ verify(mockExecution).setVariable(Prefix + "routeCollection", "")
+
+ // AAI query network policy
+ verify(mockExecution).setVariable(Prefix + "queryNetworkPolicyAAIRequest","")
+ verify(mockExecution).setVariable(Prefix + "queryNetworkPolicyAAIResponse", "")
+ verify(mockExecution).setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "networkPolicyUriList", null)
+ verify(mockExecution).setVariable(Prefix + "networkPolicyCount", 0)
+ verify(mockExecution).setVariable(Prefix + "networkCollection", "")
+
+ // AAI query route table reference
+ verify(mockExecution).setVariable(Prefix + "queryNetworkTableRefAAIRequest","")
+ verify(mockExecution).setVariable(Prefix + "queryNetworkTableRefAAIResponse", "")
+ verify(mockExecution).setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "networkTableRefUriList", null)
+ verify(mockExecution).setVariable(Prefix + "networkTableRefCount", 0)
+ verify(mockExecution).setVariable(Prefix + "tableRefCollection", "")
+
+ // AAI requery Id
+ verify(mockExecution).setVariable(Prefix + "requeryIdAAIRequest","")
+ verify(mockExecution).setVariable(Prefix + "requeryIdAAIResponse", "")
+ verify(mockExecution).setVariable(Prefix + "aaiRequeryIdReturnCode", "")
+
+ // AAI update contrail
+ verify(mockExecution).setVariable(Prefix + "updateContrailAAIUrlRequest","")
+ verify(mockExecution).setVariable(Prefix + "updateContrailAAIPayloadRequest","")
+ verify(mockExecution).setVariable(Prefix + "updateContrailAAIResponse", "")
+ verify(mockExecution).setVariable(Prefix + "aaiUpdateContrailReturnCode", "")
+
+ verify(mockExecution).setVariable(Prefix + "createNetworkRequest", "")
+ verify(mockExecution).setVariable(Prefix + "createNetworkResponse", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", "")
+ //verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")
+ verify(mockExecution).setVariable(Prefix + "networkReturnCode", "")
+ //verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "isNetworkRollbackNeeded", false)
+
+ verify(mockExecution).setVariable(Prefix + "assignSDNCRequest", "")
+ verify(mockExecution).setVariable(Prefix + "assignSDNCResponse", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", "")
+ //verify(mockExecution).setVariable(Prefix + "rollbackSDNCResponse", "")
+ verify(mockExecution).setVariable(Prefix + "sdncReturnCode", "")
+ //verify(mockExecution).setVariable(Prefix + "rollbackSDNCReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "isSdncRollbackNeeded", false)
+ verify(mockExecution).setVariable(Prefix + "sdncResponseSuccess", false)
+
+ verify(mockExecution).setVariable(Prefix + "activateSDNCRequest", "")
+ verify(mockExecution).setVariable(Prefix + "activateSDNCResponse", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCRequest", "")
+ //verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCResponse", "")
+ verify(mockExecution).setVariable(Prefix + "sdncActivateReturnCode", "")
+ //verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "isSdncActivateRollbackNeeded", false)
+ verify(mockExecution).setVariable(Prefix + "sdncActivateResponseSuccess", false)
+
+ verify(mockExecution).setVariable(Prefix + "orchestrationStatus", "")
+ verify(mockExecution).setVariable(Prefix + "isVnfBindingPresent", false)
+ verify(mockExecution).setVariable(Prefix + "Success", false)
+
+ verify(mockExecution).setVariable(Prefix + "isException", false)
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest_vIPR_NetworkRequest() {
+
+ println "************ preProcessRequest_Payload ************* "
+
+ def networkModelInfo = """{"modelUuid": "sn5256d1-5a33-55df-13ab-12abad84e111",
+ "modelName": "CONTRAIL_EXTERNAL",
+ "modelType": "CONTRAIL_EXTERNAL",
+ "modelVersion": "1",
+ "modelCustomizationUuid": "sn5256d1-5a33-55df-13ab-12abad84e222",
+ "modelInvariantUuid": "sn5256d1-5a33-55df-13ab-12abad84e764"
+ }""".trim()
+
+ def serviceModelInfo = """{"modelUuid": "36a3a8ea-49a6-4ac8-b06c-89a54544b9b6",
+ "modelName": "HNGW Protected OAM",
+ "modelType": "service",
+ "modelVersion": "1.0",
+ "modelInvariantUuid": "fcc85cb0-ad74-45d7-a5a1-17c8744fdb71"
+ }""".trim()
+
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+
+ // Pre-defined value, testing Only
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ // Inputs:
+ when(mockExecution.getVariable("msoRequestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("disableRollback")).thenReturn("true")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("networkId")).thenReturn("networkId") // optional
+ when(mockExecution.getVariable("networkName")).thenReturn("MNS-25180-L-01-dmz_direct_net_1") // optional
+ when(mockExecution.getVariable("productFamilyId")).thenReturn("a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb")
+ when(mockExecution.getVariable("networkModelInfo")).thenReturn("CONTRAIL_EXTERNAL")
+ when(mockExecution.getVariable("lcpCloudRegionId")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable("tenantId")).thenReturn("7dd5365547234ee8937416c65507d266")
+ when(mockExecution.getVariable("failIfExists")).thenReturn("false")
+ when(mockExecution.getVariable("networkModelInfo")).thenReturn(networkModelInfo)
+ when(mockExecution.getVariable("serviceModelInfo")).thenReturn(serviceModelInfo)
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1702")
+ when(mockExecution.getVariable("action")).thenReturn("CREATE")
+ when(mockExecution.getVariable("subscriptionServiceType")).thenReturn("MSO-dev-service-type")
+ when(mockExecution.getVariable("globalSubscriberId")).thenReturn("globalId_45678905678")
+
+ when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+
+ when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:8090/SDNCAdapter")
+ when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter")
+ when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:8090/SDNCAdapterRpc")
+
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.preProcessRequest(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+ verify(mockExecution).setVariable("action", "CREATE")
+ verify(mockExecution).setVariable(Prefix + "networkId","")
+ verify(mockExecution).setVariable(Prefix + "networkRequest", expectedvIPRNetworkRequest)
+ verify(mockExecution, atLeast(1)).setVariable(Prefix + "rollbackEnabled", false)
+ verify(mockExecution).setVariable(Prefix + "networkInputs", expectedvIPRNetworkInputs)
+ //verify(mockExecution).setVariable(Prefix + "requestId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //verify(mockExecution).setVariable("mso-service-instance-id", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ verify(mockExecution).setVariable(Prefix + "messageId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ verify(mockExecution).setVariable(Prefix + "source", "VID")
+ verify(mockExecution).setVariable("BasicAuthHeaderValuePO", "Basic cGFzc3dvcmQ=")
+ verify(mockExecution).setVariable("BasicAuthHeaderValueSDNC", "Basic cGFzc3dvcmQ=")
+ verify(mockExecution).setVariable(Prefix + "serviceInstanceId","f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ verify(mockExecution, atLeast(1)).setVariable("GENGS_type", "service-instance")
+ //verify(mockExecution, atLeast(1)).setVariable("mso-request-id", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //verify(mockExecution, atLeast(1)).setVariable("msoRequestId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //verify(mockExecution).setVariable("mso-service-instance-id","88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ verify(mockExecution).setVariable(Prefix + "networkId","")
+ verify(mockExecution).setVariable(Prefix + "networkOutputs", networkvIPROutputs)
+ verify(mockExecution).setVariable(Prefix + "networkName","")
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest_JSON_NetworkRequest() {
+
+ println "************ preProcessRequest_Payload ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+
+ // Pre-defined value, testing Only
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ // Inputs:
+ // when(mockExecution.getVariable("requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("requestAction")).thenReturn("CREATE")
+ when(mockExecution.getVariable("networkId")).thenReturn("networkId") // optional
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest) // JSON format
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1610") // 1610 default
+ when(mockExecution.getVariable("disableRollback")).thenReturn(true)
+
+ when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+
+ when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:8090/SDNCAdapter")
+ when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter")
+ when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:8090/SDNCAdapterRpc")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.preProcessRequest(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+ verify(mockExecution).setVariable("action", "CREATE")
+ verify(mockExecution).setVariable(Prefix + "networkRequest", expectedJSONNetworkRequest)
+ verify(mockExecution).setVariable(Prefix + "rollbackEnabled", false)
+ verify(mockExecution).setVariable(Prefix + "networkInputs", expectedJSONNetworkInputs)
+ //verify(mockExecution).setVariable(Prefix + "requestId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //verify(mockExecution).setVariable(Prefix + "messageId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ verify(mockExecution).setVariable(Prefix + "source", "VID")
+ verify(mockExecution).setVariable("BasicAuthHeaderValuePO", "Basic cGFzc3dvcmQ=")
+ verify(mockExecution).setVariable("BasicAuthHeaderValueSDNC", "Basic cGFzc3dvcmQ=")
+ verify(mockExecution).setVariable(Prefix + "serviceInstanceId","f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ verify(mockExecution, atLeast(1)).setVariable("GENGS_type", "service-instance")
+ //verify(mockExecution, atLeast(1)).setVariable("msoRequestId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //verify(mockExecution).setVariable("mso-service-instance-id","88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ verify(mockExecution).setVariable(Prefix + "networkId","")
+ verify(mockExecution).setVariable(Prefix + "networkOutputs", networkJSONOutputs)
+ verify(mockExecution).setVariable(Prefix + "networkName","")
+
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest_XML_NetworkRequest() {
+
+ println "************ preProcessRequest_Payload ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+
+ // Pre-defined value, testing Only
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ // Inputs:
+ // when(mockExecution.getVariable("msoRequestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("bpmnRequest")).thenReturn(xmlIncomingRequest) // XML format
+
+ when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+
+ when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:8090/SDNCAdapter")
+ when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter")
+ when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:8090/SDNCAdapterRpc")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.preProcessRequest(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+ verify(mockExecution).setVariable(Prefix + "networkRequest", expectedXMLNetworkRequest)
+ verify(mockExecution).setVariable("action", "CREATE")
+ verify(mockExecution).setVariable(Prefix + "rollbackEnabled", true)
+ verify(mockExecution).setVariable(Prefix + "networkInputs", expectedXMLNetworkInputs)
+ //verify(mockExecution).setVariable(Prefix + "requestId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ verify(mockExecution).setVariable(Prefix + "messageId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ verify(mockExecution).setVariable(Prefix + "source", "PORTAL")
+ verify(mockExecution).setVariable("BasicAuthHeaderValuePO", "Basic cGFzc3dvcmQ=")
+ verify(mockExecution).setVariable("BasicAuthHeaderValueSDNC", "Basic cGFzc3dvcmQ=")
+ verify(mockExecution).setVariable(Prefix + "serviceInstanceId","MNS-25180-L-01-dmz_direct_net_1")
+ verify(mockExecution, atLeast(1)).setVariable("GENGS_type", "service-instance")
+ //verify(mockExecution).setVariable("mso-service-instance-id","88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ verify(mockExecution, atLeast(1)).setVariable(Prefix + "networkId","")
+ verify(mockExecution).setVariable(Prefix + "networkOutputs", networkXMLOutputs)
+ verify(mockExecution).setVariable(Prefix + "networkName","")
+
+ }
+
+
+
+ @Test
+ //@Ignore
+ public void prepareCreateNetworkRequest() {
+
+ println "************ prepareNetworkRequest ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedvIPRNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "queryIdAAIResponse")).thenReturn(queryIdAIIResponse)
+ when(mockExecution.getVariable(Prefix + "cloudRegionPo")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("messageId_generated")
+ when(mockExecution.getVariable(Prefix + "source")).thenReturn("VID")
+ //when(mockExecution.getVariable(Prefix + "queryVpnBindingAAIResponse")).thenReturn(queryVpnBindingAAIResponse)
+ when(mockExecution.getVariable(Prefix + "routeCollection")).thenReturn("<routeTargets>13979:105757</routeTargets><routeTargets>13979:105757</routeTargets>")
+ when(mockExecution.getVariable(Prefix + "networkCollection")).thenReturn("<policyFqdns>GN_EVPN_Test</policyFqdns>")
+ when(mockExecution.getVariable(Prefix + "tableRefCollection")).thenReturn("<routeTableFqdns>refFQDN1</routeTableFqdns><routeTableFqdns>refFQDN2</routeTableFqdns>")
+ when(mockExecution.getVariable(Prefix + "requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //when(mockExecution.getVariable("URN_?????")).thenReturn("") // notificationUrl, //TODO - is this coming from URN? What variable/value to use?
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.prepareCreateNetworkRequest(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ verify(mockExecution).setVariable(Prefix + "createNetworkRequest", createNetworkRequest)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void prepareCreateNetworkRequest_Ipv4() {
+
+ println "************ prepareNetworkRequest ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedvIPRNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "queryIdAAIResponse")).thenReturn(queryIdAIIResponse_Ipv4)
+ when(mockExecution.getVariable(Prefix + "cloudRegionPo")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("messageId_generated")
+ when(mockExecution.getVariable(Prefix + "source")).thenReturn("VID")
+ //when(mockExecution.getVariable(Prefix + "queryVpnBindingAAIResponse")).thenReturn(queryVpnBindingAAIResponse)
+ when(mockExecution.getVariable(Prefix + "routeCollection")).thenReturn("<routeTargets>13979:105757</routeTargets><routeTargets>13979:105757</routeTargets>")
+ when(mockExecution.getVariable(Prefix + "networkCollection")).thenReturn("<policyFqdns>GN_EVPN_Test</policyFqdns>")
+ when(mockExecution.getVariable(Prefix + "tableRefCollection")).thenReturn("<routeTableFqdns>refFQDN1</routeTableFqdns><routeTableFqdns>refFQDN2</routeTableFqdns>")
+ when(mockExecution.getVariable(Prefix + "requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //when(mockExecution.getVariable("URN_?????")).thenReturn("") // notificationUrl, //TODO - is this coming from URN? What variable/value to use?
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.prepareCreateNetworkRequest(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ verify(mockExecution).setVariable(Prefix + "createNetworkRequest", createNetworkRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareCreateNetworkRequest_AlaCarte() {
+
+ println "************ prepareNetworkRequest ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedJSONNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "queryIdAAIResponse")).thenReturn(queryIdAIIResponse)
+ when(mockExecution.getVariable(Prefix + "cloudRegionPo")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("messageId_generated")
+ when(mockExecution.getVariable(Prefix + "source")).thenReturn("VID")
+ //when(mockExecution.getVariable(Prefix + "queryVpnBindingAAIResponse")).thenReturn(queryVpnBindingAAIResponse)
+ when(mockExecution.getVariable(Prefix + "routeCollection")).thenReturn("<routeTargets>13979:105757</routeTargets><routeTargets>13979:105757</routeTargets>")
+ when(mockExecution.getVariable(Prefix + "networkCollection")).thenReturn("<policyFqdns>GN_EVPN_Test</policyFqdns>")
+ when(mockExecution.getVariable(Prefix + "tableRefCollection")).thenReturn("<routeTableFqdns>refFQDN1</routeTableFqdns><routeTableFqdns>refFQDN2</routeTableFqdns>")
+ when(mockExecution.getVariable(Prefix + "requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //when(mockExecution.getVariable("URN_?????")).thenReturn("") // notificationUrl, //TODO - is this coming from URN? What variable/value to use?
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.prepareCreateNetworkRequest(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ verify(mockExecution).setVariable(Prefix + "createNetworkRequest", createNetworkRequestAlaCarte)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareCreateNetworkRequest_SRIOV() {
+
+ println "************ prepareNetworkRequest ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedvIPRNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "queryIdAAIResponse")).thenReturn(queryIdAIIResponse_SRIOV)
+ when(mockExecution.getVariable(Prefix + "cloudRegionPo")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("messageId_generated")
+ when(mockExecution.getVariable(Prefix + "source")).thenReturn("VID")
+ //when(mockExecution.getVariable(Prefix + "queryVpnBindingAAIResponse")).thenReturn(queryVpnBindingAAIResponse)
+ when(mockExecution.getVariable(Prefix + "routeCollection")).thenReturn("<routeTargets>13979:105757</routeTargets><routeTargets>13979:105757</routeTargets>")
+ when(mockExecution.getVariable(Prefix + "networkCollection")).thenReturn("<policyFqdns>GN_EVPN_Test</policyFqdns>")
+ when(mockExecution.getVariable(Prefix + "tableRefCollection")).thenReturn("<routeTableFqdns>refFQDN1</routeTableFqdns><routeTableFqdns>refFQDN2</routeTableFqdns>")
+ when(mockExecution.getVariable(Prefix + "requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //when(mockExecution.getVariable("URN_?????")).thenReturn("") // notificationUrl, //TODO - is this coming from URN? What variable/value to use?
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.prepareCreateNetworkRequest(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ verify(mockExecution).setVariable(Prefix + "createNetworkRequest", createNetworkRequest_SRIOV)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void prepareSDNCRequest() {
+
+ println "************ prepareSDNCRequest ************* "
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedvIPRNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "cloudRegionSdnc")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable(Prefix + "networkId")).thenReturn("networkId")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("URN_mso_workflow_sdncadapter_callback")).thenReturn("http://localhost:8090/SDNCAdapterCallback")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
+
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.prepareSDNCRequest(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "assignSDNCRequest", assignSDNCRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareSDNCRequest_decodeUrlLink() {
+
+ println "************ prepareSDNCRequest ************* "
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedvIPRNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "cloudRegionSdnc")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable(Prefix + "networkId")).thenReturn("networkId")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("URN_mso_workflow_sdncadapter_callback")).thenReturn("http://localhost:8090/SDNCAdapterCallback")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/VIRTUAL%20USP/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
+
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.prepareSDNCRequest(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "assignSDNCRequest", assignSDNCRequest_decodeUrlLink)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareRpcSDNCRequest() {
+
+ println "************ prepareRpcSDNCRequest ************* "
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedvIPRNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "cloudRegionSdnc")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("msoRequestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56") // test ONLY
+ when(mockExecution.getVariable(Prefix + "networkId")).thenReturn("networkId")
+ when(mockExecution.getVariable("URN_mso_workflow_sdncadapter_callback")).thenReturn("http://localhost:8090/SDNCAdapterCallback")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.prepareRpcSDNCRequest(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "assignSDNCRequest", assignRpcSDNCRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareSDNCRollbackRequest() {
+
+ println "************ prepareSDNCRollbackRequest ************* "
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedvIPRNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "cloudRegionSdnc")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable(Prefix + "assignSDNCResponse")).thenReturn(assignResponse)
+ when(mockExecution.getVariable(Prefix + "networkId")).thenReturn("8abc633a-810b-4ca5-8b3a-09511d13a2ce")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("URN_mso_workflow_sdncadapter_callback")).thenReturn("http://localhost:8090/SDNCAdapterCallback")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.prepareSDNCRollbackRequest(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", sdncRollbackRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareRpcSDNCActivateRequest() {
+
+ println "************ prepareRpcSDNCActivateRequest ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedvIPRNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "cloudRegionSdnc")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable(Prefix + "networkId")).thenReturn("networkId")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("msoRequestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56") // test ONLY
+ when(mockExecution.getVariable("URN_mso_workflow_sdncadapter_callback")).thenReturn("http://localhost:8090/SDNCAdapterCallback")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.prepareRpcSDNCActivateRequest(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "activateSDNCRequest", activateSDNCRequest)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void prepareRpcSDNCRollbackRequest() {
+
+ println "************ prepareRpcSDNCRollbackRequest ************* "
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedvIPRNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "cloudRegionSdnc")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable(Prefix + "assignSDNCResponse")).thenReturn(assignResponse)
+ when(mockExecution.getVariable(Prefix + "networkId")).thenReturn("8abc633a-810b-4ca5-8b3a-09511d13a2ce")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56") // test ONLY
+ when(mockExecution.getVariable("msoRequestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("URN_mso_workflow_sdncadapter_callback")).thenReturn("http://localhost:8090/SDNCAdapterCallback")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.prepareRpcSDNCRollbackRequest(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", sdncRpcRollbackRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareRpcSDNCActivateRollback() {
+
+ println "************ prepareRpcSDNCActivateRollback ************* "
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedvIPRNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "cloudRegionSdnc")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable(Prefix + "activateSDNCResponse")).thenReturn(assignResponse)
+ when(mockExecution.getVariable(Prefix + "networkId")).thenReturn("8abc633a-810b-4ca5-8b3a-09511d13a2ce")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("msoRequestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56") // test ONLY
+ when(mockExecution.getVariable("URN_mso_workflow_sdncadapter_callback")).thenReturn("http://localhost:8090/SDNCAdapterCallback")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.prepareRpcSDNCActivateRollback(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix)
+ //verify(mockExecution).setVariable("mso-request-id", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //verify(mockExecution).setVariable(Prefix + "requestId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //verify(mockExecution).setVariable("mso-service-instance-id", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCRequest", sdncActivateRollbackRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkName_200() {
+
+ println "************ callRESTQueryAAINetworkName ************* "
+
+ WireMock.reset();
+ MockGetNetworkByName("MNS-25180-L-01-dmz_direct_net_1", "CreateNetworkV2/createNetwork_queryName_AAIResponse_Success.xml");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(networkInputs)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_network_l3_network_uri")).thenReturn("/aai/v8/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_l3_network_uri")).thenReturn("/aai/v8/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTQueryAAINetworkName(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "queryNameAAIRequest", "http://localhost:8090/aai/v8/network/l3-networks/l3-network?network-name=MNS-25180-L-01-dmz_direct_net_1")
+
+ verify(mockExecution).setVariable(Prefix + "aaiNameReturnCode", "200")
+ verify(mockExecution).setVariable(Prefix + "orchestrationStatus", "PENDING-CREATE")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkName_404() {
+
+ println "************ callRESTQueryAAINetworkName ************* "
+
+ WireMock.reset();
+ MockGetNetworkByName_404("CreateNetworkV2/createNetwork_queryName_AAIResponse_Success.xml", "myOwn_Network");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(networkInputs_404)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_network_l3_network_uri")).thenReturn("/aai/v8/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_l3_network_uri")).thenReturn("/aai/v8/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTQueryAAINetworkName(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "queryNameAAIRequest", "http://localhost:8090/aai/v8/network/l3-networks/l3-network?network-name=myOwn_Network")
+ verify(mockExecution).setVariable(Prefix + "aaiNameReturnCode", "404")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkId_200() {
+
+ println "************ callRESTQueryAAINetworkId ************* "
+
+ WireMock.reset();
+ MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "assignSDNCResponse")).thenReturn(sdncAdapterWorkflowAssignResponse)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_network_l3_network_uri")).thenReturn("/aai/v8/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_l3_network_uri")).thenReturn("/aai/v9/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1702")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTQueryAAINetworkId(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "queryIdAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=1")
+ verify(mockExecution).setVariable(Prefix + "aaiIdReturnCode", "200")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAICloudRegion30_200() {
+
+ println "************ callRESTQueryAAICloudRegion30_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix)
+ when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(expectedvIPRNetworkRequest)
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_default_aai_cloud_infrastructure_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ //
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionRequest", "http://localhost:8090/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/RDM2WAGPLCP")
+ verify(mockExecution, atLeast(2)).setVariable(Prefix + "queryCloudRegionReturnCode", "200")
+ verify(mockExecution).setVariable(Prefix + "isCloudRegionGood", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAICloudRegion25_200() {
+
+ println "************ callRESTQueryAAICloudRegion25_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix)
+ when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(expectedvIPRNetworkRequest)
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_default_aai_cloud_infrastructure_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ //
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionRequest", "http://localhost:8090/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/RDM2WAGPLCP")
+ verify(mockExecution, atLeast(2)).setVariable(Prefix + "queryCloudRegionReturnCode", "200")
+ verify(mockExecution).setVariable(Prefix + "isCloudRegionGood", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAICloudRegion_NotFound() {
+
+ println "************ callRESTQueryAAICloudRegionFake ************* "
+
+ WireMock.reset();
+ MockGetNetworkCloudRegion_404("MDTWNJ21")
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix)
+ when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(vnfRequestFakeRegion)
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ //old: when(mockExecution.getVariable("URN_mso_workflow_default_aai_cloud_infrastructure_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ //
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionRequest", "http://localhost:8090/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/MDTWNJ21")
+ verify(mockExecution, atLeast(1)).setVariable(Prefix + "queryCloudRegionReturnCode", "404")
+ verify(mockExecution).setVariable(Prefix + "cloudRegionPo", "MDTWNJ21")
+ verify(mockExecution).setVariable(Prefix + "cloudRegionSdnc", "AAIAIC25")
+ verify(mockExecution).setVariable(Prefix + "isCloudRegionGood", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkVpnBinding_200() {
+
+ println "************ callRESTQueryAAINetworkVpnBinding_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
+ MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "queryIdAAIResponse")).thenReturn(queryIdAIIResponse) // v6
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_default_aai_network_vpn-binding_uri")).thenReturn("")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_network_vpn-binding_uri")).thenReturn("")
+ when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_vpn_binding_uri")).thenReturn("/aai/v8/network/vpn-bindings/vpn-binding")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "vpnCount", 2)
+ verify(mockExecution).setVariable(Prefix + "vpnBindings", ['/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/', '/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/'])
+ // the last vpnBinding value is saved.
+ verify(mockExecution).setVariable(Prefix + "queryVpnBindingAAIRequest", "http://localhost:8090/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017?depth=all")
+ verify(mockExecution, atLeast(2)).setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkVpnBinding_TestScenario01_200() {
+
+ println "************ callRESTQueryAAINetworkVpnBinding_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "queryIdAAIResponse")).thenReturn(queryIdAIIResponseTestScenario01)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_default_aai_network_vpn-binding_uri")).thenReturn("")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_network_vpn-binding_uri")).thenReturn("")
+ when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_vpn_binding_uri")).thenReturn("/aai/v8/network/vpn-bindings/vpn-binding")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "vpnCount", 1)
+ verify(mockExecution).setVariable(Prefix + "vpnBindings", ['/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/'])
+ // the last vpnBinding value is saved.
+ verify(mockExecution).setVariable(Prefix + "queryVpnBindingAAIRequest", "http://localhost:8090/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017?depth=all")
+ verify(mockExecution).setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkVpnBinding_200_URN_Uri() {
+
+ println "************ callRESTQueryAAINetworkVpnBinding_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
+ MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "queryIdAAIResponse")).thenReturn(queryIdAIIResponse)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ //when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_network_vpn_binding_uri")).thenReturn("/aai/v8/network/vpn-bindings/vpn-binding")
+ //when(mockExecution.getVariable("URN_mso_workflow_default_aai_network_vpn_binding_uri")).thenReturn("/aai/v8/network/vpn-bindings/vpn-binding")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_vpn_binding_uri")).thenReturn("/aai/v8/network/vpn-bindings/vpn-binding")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "vpnCount", 2)
+ verify(mockExecution).setVariable(Prefix + "vpnBindings", ['/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/', '/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/'])
+ // the last vpnBinding value is saved.
+ verify(mockExecution).setVariable(Prefix + "queryVpnBindingAAIRequest", "http://localhost:8090/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017?depth=all")
+ verify(mockExecution, atLeast(2)).setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkVpnBinding_NotPresent() {
+
+ println "************ callRESTQueryAAINetworkVpnBinding_NotPresent ************* "
+
+ WireMock.reset();
+ MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+
+ when(mockExecution.getVariable(Prefix + "queryIdAAIResponse")).thenReturn(queryIdAIIResponseVpnNotPresent)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ //when(mockExecution.getVariable("URN_mso_workflow_default_aai_network_l3_network_uri")).thenReturn("/aai/v8/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_l3_network_uri")).thenReturn("/aai/v8/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200")
+ verify(mockExecution).setVariable(Prefix + "vpnCount", 0)
+ verify(mockExecution).setVariable(Prefix + "queryVpnBindingAAIResponse", aaiVpnResponseStub)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkPolicy_200() {
+
+ println "************ callRESTQueryAAINetworkPolicy_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkPolicy("CreateNetworkV2/createNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "queryIdAAIResponse")).thenReturn(queryIdAIIResponse)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ //when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_network_policy_uri")).thenReturn("")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_default_aai_network_policy_uri")).thenReturn("/aai/v8/network/network-policies/network-policy")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_network_policy_uri")).thenReturn("/aai/v8/network/network-policies/network-policy")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTQueryAAINetworkPolicy(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "networkPolicyCount", 1)
+ verify(mockExecution).setVariable(Prefix + "networkPolicyUriList", ['/aai/v8/network/network-policies/network-policy/cee6d136-e378-4678-a024-2cd15f0ee0cg'])
+ // the last vpnBinding value is saved.
+ verify(mockExecution).setVariable(Prefix + "queryNetworkPolicyAAIRequest", "http://localhost:8090/aai/v8/network/network-policies/network-policy/cee6d136-e378-4678-a024-2cd15f0ee0cg?depth=all")
+ verify(mockExecution).setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "200")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkTableRef_200() {
+
+ println "************ callRESTQueryAAINetworkTableRef_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1");
+ MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef2_AAIResponse_Success.xml", "refFQDN2");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "queryIdAAIResponse")).thenReturn(queryIdAIIResponse)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_network_table_reference_uri")).thenReturn("")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_network_table_reference_uri")).thenReturn("")
+ when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_route_table_reference_uri")).thenReturn("/aai/v8/network/route-table-references/route-table-reference")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTQueryAAINetworkTableRef(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "networkTableRefCount", 2)
+ verify(mockExecution).setVariable(Prefix + "networkTableRefUriList", ['/aai/v8/network/route-table-references/route-table-reference/refFQDN1','/aai/v8/network/route-table-references/route-table-reference/refFQDN2'])
+ // the last vpnBinding value is saved.
+ verify(mockExecution).setVariable(Prefix + "queryNetworkTableRefAAIRequest", "http://localhost:8090/aai/v8/network/route-table-references/route-table-reference/refFQDN1?depth=all")
+ verify(mockExecution, atLeast(2)).setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", "200")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTReQueryAAINetworkId_200() {
+
+ println "************ callRESTReQueryAAINetworkId ************* "
+
+ WireMock.reset();
+ MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "networkId")).thenReturn("49c86598-f766-46f8-84f8-8d1c1b10f9b4")
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ //when(mockExecution.getVariable("URN_mso_workflow_default_aai_l3_network_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_l3_network_uri")).thenReturn("/aai/v9/network/l3-networks/l3-network")
+ //old: when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_network_l3_network_uri")).thenReturn("/aai/v8/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1702")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTReQueryAAINetworkId(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "requeryIdAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=1")
+ verify(mockExecution).setVariable(Prefix + "aaiRequeryIdReturnCode", "200")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTUpdateContrailAAINetworkREST_200() {
+
+ println "************ callRESTUpdateContrailAAINetwork ************* "
+
+ WireMock.reset();
+ MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "networkId")).thenReturn("49c86598-f766-46f8-84f8-8d1c1b10f9b4")
+ when(mockExecution.getVariable(Prefix + "requeryIdAAIResponse")).thenReturn(queryIdAIIResponse)
+ when(mockExecution.getVariable(Prefix + "createNetworkResponse")).thenReturn(createNetworkResponseREST)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_network_l3_network_uri")).thenReturn("/aai/v8/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_l3_network_uri")).thenReturn("/aai/v9/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("false")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTUpdateContrailAAINetwork(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "updateContrailAAIUrlRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=1")
+ verify(mockExecution).setVariable(Prefix + "updateContrailAAIPayloadRequest", updateContrailAAIPayloadRequest)
+ verify(mockExecution).setVariable(Prefix + "aaiUpdateContrailReturnCode", "200")
+ //verify(mockExecution).setVariable(Prefix + "updateContrailAAIResponse", updateContrailAAIResponse)
+ verify(mockExecution).setVariable(Prefix + "isPONR", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTUpdateContrailAAINetworkREST_200_segmentation() {
+
+ println "************ callRESTUpdateContrailAAINetwork ************* "
+
+ WireMock.reset();
+ MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "networkId")).thenReturn("49c86598-f766-46f8-84f8-8d1c1b10f9b4")
+ when(mockExecution.getVariable(Prefix + "requeryIdAAIResponse")).thenReturn(queryIdAIIResponse_segmentation)
+ when(mockExecution.getVariable(Prefix + "createNetworkResponse")).thenReturn(createNetworkResponseREST)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_network_l3_network_uri")).thenReturn("/aai/v8/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_l3_network_uri")).thenReturn("/aai/v9/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("false")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.callRESTUpdateContrailAAINetwork(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "updateContrailAAIUrlRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=1")
+ verify(mockExecution).setVariable(Prefix + "updateContrailAAIPayloadRequest", updateContrailAAIPayloadRequest_segmentation)
+ verify(mockExecution).setVariable(Prefix + "aaiUpdateContrailReturnCode", "200")
+ //verify(mockExecution).setVariable(Prefix + "updateContrailAAIResponse", updateContrailAAIResponse)
+ verify(mockExecution).setVariable(Prefix + "isPONR", true)
+
+ }
+
+
+
+ @Test
+ //@Ignore
+ public void validateCreateNetworkResponseREST() {
+
+ println "************ validateNetworkResponse ************* "
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "createNetworkResponse")).thenReturn(createNetworkResponseREST)
+ when(mockExecution.getVariable(Prefix + "networkReturnCode")).thenReturn('200')
+
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.validateCreateNetworkResponse(mockExecution)
+
+ //MockitoDebuggerImpl debugger = new MockitoDebuggerImpl()
+ //debugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "createNetworkResponse", createNetworkResponseREST)
+ verify(mockExecution).setVariable(Prefix + "isNetworkRollbackNeeded", true)
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", createRollbackNetworkRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void validateCreateNetworkResponseREST_Error() {
+
+ println "************ validateNetworkResponse ************* "
+
+ WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstance", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "createNetworkResponse")).thenReturn(networkException500)
+ when(mockExecution.getVariable(Prefix + "networkReturnCode")).thenReturn('500')
+
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ try {
+ DoCreateNetworkInstance.validateCreateNetworkResponse(mockExecution)
+ } catch (Exception ex) {
+ println " Test End - Handle catch-throw BpmnError()! "
+ }
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution, atLeast(1)).setVariable("WorkflowException", refEq(workflowException, any(WorkflowException.class)))
+
+ }
+
+ @Test
+ //@Ignore
+ public void validateSDNCResponse() {
+
+ println "************ validateSDNCResponse ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "assignSDNCResponse")).thenReturn(sdncAdapterWorkflowResponse)
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable("SDNCA_SuccessIndicator")).thenReturn(true)
+ when(mockExecution.getVariable(Prefix + "sdncReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "isResponseGood")).thenReturn(true)
+
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ try {
+ DoCreateNetworkInstance.validateSDNCResponse(mockExecution)
+ verify(mockExecution).setVariable(Prefix + "isSdncRollbackNeeded", true)
+
+ } catch (Exception ex) {
+ println " Graceful Exit - " + ex.getMessage()
+ }
+ //MockitoDebuggerImpl debugger = new MockitoDebuggerImpl()
+ //debugger.printInvocations(mockExecution)
+
+ //verify(mockExecution).setVariable(Prefix + "isSdncRollbackNeeded", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void validateSDNCResponse_Error() {
+
+ println "************ validateSDNCResponse ************* "
+
+ WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstance", 2500, "Received error from SNDC Adapter: HTTP Status 500.")
+
+ //ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "assignSDNCResponse")).thenReturn(sdncAdapterWorkflowResponse_Error)
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable("SDNCA_SuccessIndicator")).thenReturn(false)
+ when(mockExecution.getVariable(Prefix + "sdncReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
+
+
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ try {
+ DoCreateNetworkInstance.validateSDNCResponse(mockExecution)
+ } catch (Exception ex) {
+ println " Graceful Exit! - " + ex.getMessage()
+ }
+ //MockitoDebuggerImpl debugger = new MockitoDebuggerImpl()
+ //debugger.printInvocations(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ //verify(mockExecution).setVariable(Prefix + "sdncResponseSuccess", false)
+
+ }
+
+ @Test
+ //@Ignore
+ public void validateRpcSDNCActivateResponse() {
+
+ println "************ validateRpcSDNCActivateResponse ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "activateSDNCResponse")).thenReturn(sdncAdapterWorkflowResponse)
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable("SDNCA_SuccessIndicator")).thenReturn(true)
+ when(mockExecution.getVariable(Prefix + "sdncActivateReturnCode")).thenReturn("200")
+
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ try {
+ DoCreateNetworkInstance.validateRpcSDNCActivateResponse(mockExecution)
+ verify(mockExecution).setVariable(Prefix + "isSdncActivateRollbackNeeded", true)
+
+ } catch (Exception ex) {
+ println " Graceful Exit - " + ex.getMessage()
+ }
+ //MockitoDebuggerImpl debugger = new MockitoDebuggerImpl()
+ //debugger.printInvocations(mockExecution)
+
+ //verify(mockExecution).setVariable(Prefix + "isSdncRollbackNeeded", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareRollbackData() {
+
+ println "************ prepareRollbackData() ************* "
+
+
+
+ WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstance", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn(rollbackSDNCRequest)
+ when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCRequest")).thenReturn(rollbackActivateSDNCRequest)
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn(rollbackNetworkRequest)
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.prepareRollbackData(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ }
+
+ @Test
+ @Ignore
+ public void postProcessResponse() {
+
+ println "************ postProcessResponse() ************* "
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "isException")).thenReturn(false)
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1702")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn(sdncRpcRollbackRequest)
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn(rollbackSDNCRequest)
+ when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCRequest")).thenReturn(sdncActivateRollbackRequest)
+
+
+ // preProcessRequest(Execution execution)
+ DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+ DoCreateNetworkInstance.postProcessResponse(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "Success", true)
+
+ }
+
+ private ExecutionEntity setupMock() {
+
+ ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
+ when(mockProcessDefinition.getKey()).thenReturn("DoCreateNetworkInstance")
+ RepositoryService mockRepositoryService = mock(RepositoryService.class)
+ when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
+ when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoCreateNetworkInstance")
+ when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
+ ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
+ when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+
+ when(mockExecution.getId()).thenReturn("100")
+ when(mockExecution.getProcessDefinitionId()).thenReturn("DoCreateNetworkInstance")
+ when(mockExecution.getProcessInstanceId()).thenReturn("DoCreateNetworkInstance")
+ when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
+ when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
+
+ return mockExecution
+ }
+}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV1Test.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV1Test.groovy deleted file mode 100644 index e9c27b040a..0000000000 --- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV1Test.groovy +++ /dev/null @@ -1,218 +0,0 @@ -/*-
- * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
- * ================================================================================
- * 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.mso.bpmn.infrastructure.scripts;
-
-import static org.junit.Assert.*
-import static org.mockito.Mockito.*
-
-import org.apache.commons.lang3.*
-import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
-import org.junit.Assert
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.ArgumentCaptor
-import org.mockito.MockitoAnnotations
-import org.mockito.runners.MockitoJUnitRunner
-import org.openecomp.mso.bpmn.common.scripts.MsoGroovyTest
-
-
-@RunWith(MockitoJUnitRunner.class)
-class DoCreateVfModuleVolumeV1Test extends MsoGroovyTest {
-
- def volumeRequest =
-"""<volume-request xmlns="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
- <request-info>
- <test-data-only>123abc</test-data-only> <!-- don't remove this tag. Its used for junit test -->
- <request-id>d8d4fcfa-fd7e-4413-b19d-c95aa67291b8</request-id>
- <action>CREATE_VF_MODULE_VOL</action>
- <source>SoapUI-bns-create-base-vol-1001-1</source>
- </request-info>
- <volume-inputs>
- <vnf-type>Test/vSAMP12</vnf-type>
- <vf-module-model-name>vSAMP12::base::module-0</vf-module-model-name>
- <backout-on-failure>true</backout-on-failure>
- <asdc-service-model-version>2.0</asdc-service-model-version>
- <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
- <aic-cloud-region>MDTWNJ21</aic-cloud-region>
- <tenant-id>897deadc2b954a6bac6d3c197fb3525e</tenant-id>
- <volume-group-name>MSOTESTVOL101a-vSAMP12_base_vol_module-0</volume-group-name>
- <volume-group-id/>
- </volume-inputs>
- <volume-params>
- <param name="param1">value1</param>"
- <param name="param2">value2</param>"
- <param name="param3">value3</param>"
- </volume-params>
-</volume-request>"""
-
- def genericVnfResponseXml = """
-<generic-vnf xmlns="http://org.openecomp.aai.inventory/v8">
- <vnf-id>TEST-VNF-ID-0123</vnf-id>
- <vnf-name>STMTN5MMSC20</vnf-name>
- <vnf-type>pcrf-capacity</vnf-type>
- <service-id>SDN-MOBILITY</service-id>
- <equipment-role>vPCRF</equipment-role>
- <orchestration-status>pending-create</orchestration-status>
- <in-maint>false</in-maint>
- <is-closed-loop-disabled>false</is-closed-loop-disabled>
- <persona-model-id>introvert</persona-model-id>
- <persona-model-version>2.0</persona-model-version>
- <resource-version>0000020</resource-version>
- <vf-modules>
- <vf-module>
- <vf-module-id>lukewarm</vf-module-id>
- <vf-module-name>PCRF::module-0-0</vf-module-name>
- <persona-model-id>introvert</persona-model-id>
- <persona-model-version>2.0</persona-model-version>
- <is-base-vf-module>true</is-base-vf-module>
- <heat-stack-id>fastburn</heat-stack-id>
- <orchestration-status>pending-create</orchestration-status>
- <resource-version>0000074</resource-version>
- </vf-module>
- <vf-module>
- <vf-module-id>supercool</vf-module-id>
- <vf-module-name>PCRF::module-1-0</vf-module-name>
- <persona-model-id>extrovert</persona-model-id>
- <persona-model-version>2.0</persona-model-version>
- <is-base-vf-module>false</is-base-vf-module>
- <heat-stack-id>slowburn</heat-stack-id>
- <orchestration-status>pending-create</orchestration-status>
- <resource-version>0000075</resource-version>
- </vf-module>
- </vf-modules>
- <relationship-list/>
- <l-interfaces/>
- <lag-interfaces/>
-</generic-vnf>
-"""
- def String expectedCreateVnfRequestXml = """<createVolumeGroupRequest>
- <cloudSiteId>MDTWNJ21</cloudSiteId>
- <tenantId>897deadc2b954a6bac6d3c197fb3525e</tenantId>
- <vnfId>TEST-VNF-ID-0123</vnfId>
- <vnfName>STMTN5MMSC20</vnfName>
- <volumeGroupId>test-vol-group-id-123</volumeGroupId>
- <volumeGroupName>MSOTESTVOL101a-vSAMP12_base_vol_module-0</volumeGroupName>
- <vnfType>Test/vSAMP12</vnfType>
- <vnfVersion>2.0</vnfVersion>
- <vfModuleType>vSAMP12::base::module-0</vfModuleType>
- <modelCustomizationUuid/>
- <volumeGroupParams>
- <entry>
- <key>vnf_id</key>
- <value>TEST-VNF-ID-0123</value>
- </entry>
- <entry>
- <key>vnf_name</key>
- <value>STMTN5MMSC20</value>
- </entry>
- <entry>
- <key>vf_module_id</key>
- <value>test-vol-group-id-123</value>
- </entry>
- <entry>
- <key>vf_module_name</key>
- <value>MSOTESTVOL101a-vSAMP12_base_vol_module-0</value>
- </entry>
- <entry>
- <key>param1</key>
- <value>value1</value>
- </entry>
- <entry>
- <key>param2</key>
- <value>value2</value>
- </entry>
- <entry>
- <key>param3</key>
- <value>value3</value>
- </entry>
- </volumeGroupParams>
- <skipAAI>true</skipAAI>
- <backout>true</backout>
- <failIfExists>true</failIfExists>
- <msoRequest>
- <requestId>d8d4fcfa-fd7e-4413-b19d-c95aa67291b8</requestId>
- <serviceInstanceId>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</serviceInstanceId>
- </msoRequest>
- <messageId>111</messageId>
- <notificationUrl>http://localhost:28080/mso/WorkflowMessage/12345678</notificationUrl>
-</createVolumeGroupRequest>
-"""
-
- @Before
- public void init()
- {
- MockitoAnnotations.initMocks(this)
-
- }
-
- @Test
- public void TestPreProcessRequest() {
-
- ExecutionEntity mockExecution = setupMock('DoCreateVfModuleVolumeV1')
-
- when(mockExecution.getVariable("DoCreateVfModuleVolumeV1Request")).thenReturn(volumeRequest)
- when(mockExecution.getVariable("vnf-id")).thenReturn('test-vnf-id-123')
- when(mockExecution.getVariable("volume-group-id")).thenReturn('test-volume-group-id-123')
- when(mockExecution.getVariable("mso-request-id")).thenReturn('test-request-id-123')
-
- DoCreateVfModuleVolumeV1 myprocess = new DoCreateVfModuleVolumeV1()
- myprocess.preProcessRequest(mockExecution, 'true')
-
- verify(mockExecution).setVariable('DCVFMODVOLV1_serviceId', 'a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb')
- verify(mockExecution).setVariable('DCVFMODVOLV1_source', 'SoapUI-bns-create-base-vol-1001-1')
- verify(mockExecution, times(7)).setVariable(anyString(), anyString())
- }
-
- @Test
- public void TestPrepareVnfAdapterCreateRequest() {
-
- ExecutionEntity mockExecution = setupMock('DoCreateVfModuleVolumeV1')
-
- when(mockExecution.getVariable("DCVFMODVOLV1_Request")).thenReturn(volumeRequest)
- when(mockExecution.getVariable("DCVFMODVOLV1_requestId")).thenReturn('d8d4fcfa-fd7e-4413-b19d-c95aa67291b8')
- when(mockExecution.getVariable("DCVFMODVOLV1_serviceId")).thenReturn('a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb')
- when(mockExecution.getVariable("DCVFMODVOLV1_AAIQueryGenericVfnResponse")).thenReturn(genericVnfResponseXml)
- when(mockExecution.getVariable("DCVFMODVOLV1_rollbackEnabled")).thenReturn(true)
- when(mockExecution.getVariable("volume-group-id")).thenReturn('test-vol-group-id-123')
- when(mockExecution.getVariable("URN_mso_workflow_message_endpoint")).thenReturn('http://localhost:28080/mso/WorkflowMessage')
- when(mockExecution.getVariable("URN_mso_use_qualified_host")).thenReturn(true)
-
- DoCreateVfModuleVolumeV1 myprocess = new DoCreateVfModuleVolumeV1()
- myprocess.prepareVnfAdapterCreateRequest(mockExecution, 'true')
-
- // Capture the arguments to setVariable
- ArgumentCaptor<String> captor1 = ArgumentCaptor.forClass(String.class);
- ArgumentCaptor<String> captor2 = ArgumentCaptor.forClass(String.class);
-
- verify(mockExecution, times(2)).setVariable(captor1.capture(), captor2.capture())
-
- List<String> arg2List = captor2.getAllValues()
- String createVnfRequestXml = arg2List.get(0)
-
- //replace messageID value because it is random generated
- createVnfRequestXml = createVnfRequestXml.replaceAll("<messageId>(.+?)</messageId>", "<messageId>111</messageId>")
- .replaceAll("<notificationUrl>(.+?)</notificationUrl>", "<notificationUrl>http://localhost:28080/mso/WorkflowMessage/12345678</notificationUrl>")
-
- Assert.assertEquals(expectedCreateVnfRequestXml.trim(), createVnfRequestXml.trim())
- }
-
-}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollbackTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollbackTest.groovy new file mode 100644 index 0000000000..96a84deb26 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollbackTest.groovy @@ -0,0 +1,323 @@ +package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import static org.mockito.Mockito.*
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.ProcessEngineServices
+import org.camunda.bpm.engine.RepositoryService
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.camunda.bpm.engine.impl.pvm.process.ProcessDefinitionImpl
+import org.camunda.bpm.engine.repository.ProcessDefinition
+import org.camunda.bpm.engine.runtime.Execution;
+import org.mockito.MockitoAnnotations
+import org.mockito.runners.MockitoJUnitRunner
+import org.mockito.internal.debugging.MockitoDebuggerImpl
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.junit.Before
+import org.junit.Rule;
+import org.junit.Test
+import org.junit.Ignore
+import org.junit.runner.RunWith
+
+import static org.junit.Assert.*;
+
+import com.github.tomakehurst.wiremock.client.WireMock;
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.commons.lang3.*
+
+
+@RunWith(MockitoJUnitRunner.class)
+class DoDeleteNetworkInstanceRollbackTest {
+
+ @Rule
+ public WireMockRule wireMockRule = new WireMockRule(8090);
+
+ def utils = new MsoUtils()
+ String Prefix="DELNWKIR_"
+
+
+ String rollbackNetworkRequest =
+ """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">
+ <rollback>
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkStackId/>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <networkCreated>true</networkCreated>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <msoRequest>
+ <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+ <serviceInstanceId/>
+ </msoRequest>
+ </rollback>
+</NetworkAdapter:rollbackNetwork>"""
+
+ String rollbackDeActivateSDNCRequest =
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>activate</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>CreateNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type>MSO-dev-service-type</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
+ <model-customization-uuid>customization-uuid</model-customization-uuid>
+ <model-uuid>uuid</model-uuid>
+ <model-version>version</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+ String rollbackSDNCRequest =
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>CreateNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type>MSO-dev-service-type</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
+ <model-customization-uuid>customization-uuid</model-customization-uuid>
+ <model-uuid>uuid</model-uuid>
+ <model-version>version</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+// - - - - - - - -
+
+
+ @Before
+ public void init()
+ {
+ MockitoAnnotations.initMocks(this)
+
+ }
+
+ public void initializeVariables (Execution mockExecution) {
+
+ verify(mockExecution).setVariable(Prefix + "WorkflowException", null)
+
+ verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCRequest", null)
+ verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCResponse", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCReturnCode", "")
+
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", null)
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")
+
+ verify(mockExecution).setVariable(Prefix + "Success", false)
+ verify(mockExecution).setVariable(Prefix + "fullRollback", false)
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest() {
+
+ println "************ preProcessRequest ************* "
+
+ WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstance", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")
+ Map<String, String> rollbackData = new HashMap<String, String>();
+ rollbackData.put("rollbackDeactivateSDNCRequest", rollbackDeActivateSDNCRequest)
+ rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
+ rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
+ when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1702")
+
+ when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+
+ when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:8090/SDNCAdapter")
+ when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter")
+ when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:8090/SDNCAdapterRpc")
+
+
+ // preProcessRequest(Execution execution)
+ DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
+ DoDeleteNetworkInstanceRollback.preProcessRequest(mockExecution)
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void validateRollbackResponses_Good() {
+
+ WorkflowException workflowException = new WorkflowException("DoDeleteNetworkInstanceRollback", 2500, "AAI Update Contrail Failed. Error 404.")
+ WorkflowException expectedWorkflowException = new WorkflowException("DoDeleteNetworkInstanceRollback", 2500, "AAI Update Contrail Failed. Error 404. + SNDC deactivate rollback completed. + PO Network rollback completed. + SNDC unassign rollback completed.")
+
+ println "************ validateRollbackResponses_Good() ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+
+ when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(workflowException)
+ when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(false)
+
+ DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
+ DoDeleteNetworkInstanceRollback.validateRollbackResponses(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution, atLeast(1)).setVariable("rolledBack", true)
+ verify(mockExecution, atLeast(1)).setVariable("wasDeleted", true)
+ verify(mockExecution).setVariable("WorkflowException", refEq(expectedWorkflowException, any(WorkflowException.class)))
+ //verify(mockExecution).setVariable("WorkflowException", expectedWorkflowException)
+ }
+
+ @Test
+ //@Ignore
+ public void validateRollbackResponses_FullRollback() {
+
+ Map<String, String> rollbackData = new HashMap<String, String>();
+ rollbackData.put("rollbackDeactivateSDNCRequest", rollbackDeActivateSDNCRequest)
+ rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
+ rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
+
+ println "************ validateRollbackResponses_FullRollback() ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+
+ when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(null)
+ when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(true)
+ when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
+
+ DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
+ DoDeleteNetworkInstanceRollback.validateRollbackResponses(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution, atLeast(1)).setVariable("rollbackSuccessful", true)
+ verify(mockExecution, atLeast(1)).setVariable("rollbackError", false)
+
+ }
+
+
+ private ExecutionEntity setupMock() {
+
+ ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
+ when(mockProcessDefinition.getKey()).thenReturn("DoDeleteNetworkInstanceRollback")
+ RepositoryService mockRepositoryService = mock(RepositoryService.class)
+ when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
+ when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoDeleteNetworkInstanceRollback")
+ when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
+ ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
+ when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+
+ when(mockExecution.getId()).thenReturn("100")
+ when(mockExecution.getProcessDefinitionId()).thenReturn("DoDeleteNetworkInstanceRollback")
+ when(mockExecution.getProcessInstanceId()).thenReturn("DoDeleteNetworkInstanceRollback")
+ when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
+ when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
+
+ return mockExecution
+ }
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceTest.groovy new file mode 100644 index 0000000000..0f87b6400e --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceTest.groovy @@ -0,0 +1,1929 @@ +package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import static org.mockito.Mockito.*
+
+import static org.openecomp.mso.bpmn.mock.StubResponseNetworkAdapter.MockNetworkAdapter;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkByIdWithDepth;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkCloudRegion;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkCloudRegion_404;
+import org.camunda.bpm.engine.ProcessEngineServices
+import org.camunda.bpm.engine.RepositoryService
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.camunda.bpm.engine.repository.ProcessDefinition
+import org.camunda.bpm.engine.runtime.Execution
+import org.junit.Before
+import org.junit.Ignore
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.MockitoAnnotations
+import org.mockito.runners.MockitoJUnitRunner
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.core.WorkflowException
+
+import com.github.tomakehurst.wiremock.client.WireMock
+import com.github.tomakehurst.wiremock.junit.WireMockRule
+import org.apache.commons.lang3.*
+
+
+@RunWith(MockitoJUnitRunner.class)
+class DoDeleteNetworkInstanceTest {
+
+ @Rule
+ public WireMockRule wireMockRule = new WireMockRule(8090);
+
+ def utils = new MsoUtils()
+ String Prefix="DELNWKI_"
+
+ String incomingJsonRequest =
+ """{ "requestDetails": {
+ "modelInfo": {
+ "modelType": "network",
+ "modelCustomizationId": "f21df226-8093-48c3-be7e-0408fcda0422",
+ "modelName": "CONTRAIL_EXTERNAL",
+ "modelVersion": "1.0"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "RDM2WAGPLCP",
+ "tenantId": "7dd5365547234ee8937416c65507d266"
+ },
+ "requestInfo": {
+ "instanceName": "HSL_direct_net_2",
+ "source": "VID",
+ "callbackUrl": "",
+ "suppressRollback": true,
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": "f70e927b-6087-4974-9ef8-c5e4d5847ca4",
+ "modelInfo": {
+ "modelType": "serviceT",
+ "modelId": "modelI",
+ "modelNameVersionId": "modelNameVersionI",
+ "modelName": "modleNam",
+ "modelVersion": "1"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "userParams": []
+ }
+ }"""
+
+ String expectedDoDeleteNetworkInstanceRequest =
+ """{ "requestDetails": {
+ "modelInfo": {
+ "modelType": "networkTyp",
+ "modelId": "modelId",
+ "modelNameVersionId": "modelNameVersionId",
+ "modelName": "CONTRAIL_EXTERNAL",
+ "modelVersion": "1"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "RDM2WAGPLCP",
+ "tenantId": "7dd5365547234ee8937416c65507d266"
+ },
+ "requestInfo": {
+ "instanceName": "HSL_direct_net_2",
+ "source": "VID",
+ "callbackUrl": "",
+ "suppressRollback": true,
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": "f70e927b-6087-4974-9ef8-c5e4d5847ca4",
+ "modelInfo": {
+ "modelType": "serviceT",
+ "modelId": "modelI",
+ "modelNameVersionId": "modelNameVersionI",
+ "modelName": "modleNam",
+ "modelVersion": "1"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "userParams": []
+ }
+ }"""
+
+ // expectedVnfRequest
+ String expectedNetworkRequest =
+"""<network-request xmlns="http://www.w3.org/2001/XMLSchema">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>DELETE</action>
+ <source>VID</source>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ </request-info>
+ <network-inputs>
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <modelCustomizationId>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationId>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <sdncVersion>1610</sdncVersion>
+ </network-inputs>
+ <network-params/>
+</network-request>"""
+
+ String expectedVperNetworkRequest =
+"""<network-request xmlns="http://www.w3.org/2001/XMLSchema">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>DELETE</action>
+ <source>VID</source>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ </request-info>
+ <network-inputs>
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <subscription-service-type>MSO-dev-service-type</subscription-service-type>
+ <global-customer-id>globalId_45678905678</global-customer-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <failIfExist>false</failIfExist>
+ <networkModelInfo>
+ <modelName>CONTRAIL_EXTERNAL</modelName>
+ <modelUuid>sn5256d1-5a33-55df-13ab-12abad84e111</modelUuid>
+ <modelInvariantUuid>sn5256d1-5a33-55df-13ab-12abad84e764</modelInvariantUuid>
+ <modelVersion>1</modelVersion>
+ <modelCustomizationUuid>sn5256d1-5a33-55df-13ab-12abad84e222</modelCustomizationUuid>
+ </networkModelInfo>
+ <serviceModelInfo>
+ <modelName/>
+ <modelUuid/>
+ <modelInvariantUuid/>
+ <modelVersion/>
+ <modelCustomizationUuid/>
+ </serviceModelInfo>
+ <sdncVersion>1702</sdncVersion>
+ </network-inputs>
+ <network-params/>
+</network-request>"""
+
+ String expected_networkInput =
+ """<network-inputs xmlns="http://www.w3.org/2001/XMLSchema">
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <modelCustomizationId>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationId>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <sdncVersion>1610</sdncVersion>
+</network-inputs>"""
+
+ String expectedVper_networkInput =
+"""<network-inputs xmlns="http://www.w3.org/2001/XMLSchema">
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <subscription-service-type>MSO-dev-service-type</subscription-service-type>
+ <global-customer-id>globalId_45678905678</global-customer-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <failIfExist>false</failIfExist>
+ <networkModelInfo>
+ <modelName>CONTRAIL_EXTERNAL</modelName>
+ <modelUuid>sn5256d1-5a33-55df-13ab-12abad84e111</modelUuid>
+ <modelInvariantUuid>sn5256d1-5a33-55df-13ab-12abad84e764</modelInvariantUuid>
+ <modelVersion>1</modelVersion>
+ <modelCustomizationUuid>sn5256d1-5a33-55df-13ab-12abad84e222</modelCustomizationUuid>
+ </networkModelInfo>
+ <serviceModelInfo>
+ <modelName/>
+ <modelUuid/>
+ <modelInvariantUuid/>
+ <modelVersion/>
+ <modelCustomizationUuid/>
+ </serviceModelInfo>
+ <sdncVersion>1702</sdncVersion>
+</network-inputs>"""
+
+// emptyRegionVnfRequest
+String emptyRegionVnfRequest =
+"""<network-request xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>DELETE</action>
+ <source>PORTAL</source>
+ </request-info>
+ <network-inputs>
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_BASIC</network-type>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <aic-cloud-region/>
+ <tenant-id>e81d842d3e8b45c5a59f57cd76af3aaf</tenant-id>
+ </network-inputs>
+ <network-params>
+ <param name="shared">0</param>
+ </network-params>
+</network-request>"""
+
+String vnfRequestCloudRegionNotFound =
+"""<network-request xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>DELETE</action>
+ <source>PORTAL</source>
+ </request-info>
+ <network-inputs>
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_BASIC</network-type>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <aic-cloud-region>MDTWNJ21</aic-cloud-region>
+ <tenant-id>e81d842d3e8b45c5a59f57cd76af3aaf</tenant-id>
+ </network-inputs>
+ <network-params>
+ <param name="shared">0</param>
+ </network-params>
+</network-request>"""
+
+ String vnfPayload =
+ """<rest:payload xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ contentType="text/xml">
+ <network-request xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>DELETE</action>
+ <source>PORTAL</source>
+ </request-info>
+ <network-inputs>
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_BASIC</network-type>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>e81d842d3e8b45c5a59f57cd76af3aaf</tenant-id>
+ </network-inputs>
+ <network-params>
+ <param name="shared">0</param>
+ </network-params>
+ </network-request>
+</rest:payload>"""
+
+ String vnfPayload_MissingId =
+"""<rest:payload xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ contentType="text/xml">
+ <network-request xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>DELETE</action>
+ <source>PORTAL</source>
+ </request-info>
+ <network-inputs>
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name/>
+ <network-type>CONTRAIL_BASIC</network-type>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>e81d842d3e8b45c5a59f57cd76af3aaf</tenant-id>
+ </network-inputs>
+ <network-params>
+ <param name="shared">0</param>
+ </network-params>
+ </network-request>
+</rest:payload>"""
+
+ String vnfRequestRESTPayload =
+"""<network-request xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>DELETE</action>
+ <source>PORTAL</source>
+ </request-info>
+ <network-inputs>
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_BASIC</network-type>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>e81d842d3e8b45c5a59f57cd76af3aaf</tenant-id>
+ </network-inputs>
+ <network-outputs>
+ <network-id>id</network-id>
+ <network-name>name</network-name>
+ </network-outputs>
+ <network-params>
+ <param name="shared">0</param>
+ </network-params>
+ </network-request>"""
+
+
+String incomingRequestMissingCloudRegion =
+"""{ "requestDetails": {
+ "modelInfo": {
+ "modelType": "network",
+ "modelCustomizationId": "f21df226-8093-48c3-be7e-0408fcda0422",
+ "modelName": "CONTRAIL_EXTERNAL",
+ "modelVersion": "1.0"
+ },
+ "cloudConfiguration": {
+ "tenantId": "7dd5365547234ee8937416c65507d266"
+ },
+ "requestInfo": {
+ "instanceName": "HSL_direct_net_2",
+ "source": "VID",
+ "callbackUrl": "",
+ "suppressRollback": true,
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": "f70e927b-6087-4974-9ef8-c5e4d5847ca4",
+ "modelInfo": {
+ "modelType": "serviceT",
+ "modelId": "modelI",
+ "modelNameVersionId": "modelNameVersionI",
+ "modelName": "modleNam",
+ "modelVersion": "1"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "userParams": []
+ }
+ }"""
+
+ String expectedNetworkRequestMissingId =
+ """<network-request xmlns="http://www.w3.org/2001/XMLSchema">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>DELETE</action>
+ <source>VID</source>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ </request-info>
+ <network-inputs>
+ <network-id/>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <modelCustomizationId>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationId>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <sdncVersion>1610</sdncVersion>
+ </network-inputs>
+ <network-params/>
+</network-request>"""
+
+String expectedNetworkRequestMissingCloudRegion =
+"""<network-request xmlns="http://www.w3.org/2001/XMLSchema">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>DELETE</action>
+ <source>VID</source>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ </request-info>
+ <network-inputs>
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <modelCustomizationId>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationId>
+ <aic-cloud-region>null</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <sdncVersion>1610</sdncVersion>
+ </network-inputs>
+ <network-params/>
+</network-request>"""
+
+ // vnfRESTRequest
+ String vnfRESTRequest =
+"""<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ statusCode="200">
+ <rest:payload contentType="text/xml">
+ <network-request>
+ <request-info>
+ <action>DELETE</action>
+ <source>VID</source>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ </request-info>
+ <network-inputs>
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>true</backout-on-failure>
+ </network-inputs>
+ <network-params>
+ <userParams/>
+ </network-params>
+ </network-request>
+ </rest:payload>
+</rest:RESTResponse>"""
+
+ String networkInputs =
+ """<network-inputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_BASIC</network-type>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>e81d842d3e8b45c5a59f57cd76af3aaf</tenant-id>
+</network-inputs>"""
+
+String networkInputsNoType =
+"""<network-inputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <network-id></network-id>
+ <network-name></network-name>
+ <network-type></network-type>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>e81d842d3e8b45c5a59f57cd76af3aaf</tenant-id>
+</network-inputs>"""
+
+ String networkInputsMissingId =
+ """<network-inputs xmlns="http://www.w3.org/2001/XMLSchema">
+ <network-id/>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <modelCustomizationId>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationId>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <sdncVersion>1610</sdncVersion>
+</network-inputs>"""
+
+String networkInputsMissingCloudRegion =
+"""<network-inputs xmlns="http://www.w3.org/2001/XMLSchema">
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <modelCustomizationId>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationId>
+ <aic-cloud-region>null</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <sdncVersion>1610</sdncVersion>
+</network-inputs>"""
+
+ String MissingIdFault = "Invalid value or missing network-id element"
+ String MissingRegionFault = "Invalid value or missing 'aic-cloud-region' element"
+
+ String invalidWorkflowException = """<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ <aetgt:ErrorMessage>Invalid value of network-id element</aetgt:ErrorMessage>
+ <aetgt:ErrorCode>2500</aetgt:ErrorCode>
+ </aetgt:WorkflowException>"""
+
+
+ String queryAAIResponse =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Sat,30 Jan 2016 20:09:24 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID"
+ value="mtcnjv9aaas01.mtcnj.aic.cip.com-20160130-20:09:24:814-165843"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v3">
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_BASIC</network-type>
+ <network-role>HSL_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <neutron-network-id>8bbd3edf-b835-4610-96a2-a5cafa029042</neutron-network-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <orchestration-status>active</orchestration-status>
+ <heat-stack-id>HSL_direct_net_2/57594a56-1c92-4a38-9caa-641c1fa3d4b6</heat-stack-id>
+ <subnets>
+ <subnet>
+ <subnet-id>ea5f2a2c-604f-47ff-a9c5-253ee4f0ef0a</subnet-id>
+ <neutron-subnet-id>5a77fdc2-7789-4649-a1b9-6eaf1db1813a</neutron-subnet-id>
+ <gateway-address>172.16.34.1</gateway-address>
+ <network-start-address>172.16.34.0</network-start-address>
+ <cidr-mask>28</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>active</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <relationship-list>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v3/cloud-infrastructure/tenants/tenant/e81d842d3e8b45c5a59f57cd76af3aaf/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>e81d842d3e8b45c5a59f57cd76af3aaf</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </l3-network>
+ </rest:payload>
+</rest:RESTResponse>"""
+
+ String deleteNetworkRequest =
+ """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <NetworkAdapter:deleteNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <tenantId>e81d842d3e8b45c5a59f57cd76af3aaf</tenantId>
+ <networkType>CONTRAIL_BASIC</networkType>
+ <networkId>HSL_direct_net_2/57594a56-1c92-4a38-9caa-641c1fa3d4b6</networkId>
+ <request>
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <serviceInstanceId>0</serviceInstanceId>
+ </request>
+ </NetworkAdapter:deleteNetwork>
+ </soapenv:Body>
+</soapenv:Envelope>"""
+
+String deleteNetworkRESTRequest =
+"""<deleteNetworkRequest>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <tenantId>e81d842d3e8b45c5a59f57cd76af3aaf</tenantId>
+ <networkId>bdc5efe8-404a-409b-85f6-0dcc9eebae30</networkId>
+ <networkStackId>HSL_direct_net_2/57594a56-1c92-4a38-9caa-641c1fa3d4b6</networkStackId>
+ <networkType>CONTRAIL_BASIC</networkType>
+ <modelCustomizationUuid>sn5256d1-5a33-55df-13ab-12abad84e222</modelCustomizationUuid>
+ <skipAAI>true</skipAAI>
+ <msoRequest>
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <serviceInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</serviceInstanceId>
+ </msoRequest>
+ <messageId>messageId_value</messageId>
+ <notificationUrl/>
+</deleteNetworkRequest>"""
+
+String deleteNetworkRESTRequestAlaCarte =
+"""<deleteNetworkRequest>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <tenantId>e81d842d3e8b45c5a59f57cd76af3aaf</tenantId>
+ <networkId>bdc5efe8-404a-409b-85f6-0dcc9eebae30</networkId>
+ <networkStackId>HSL_direct_net_2/57594a56-1c92-4a38-9caa-641c1fa3d4b6</networkStackId>
+ <networkType>CONTRAIL_BASIC</networkType>
+ <modelCustomizationUuid>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationUuid>
+ <skipAAI>true</skipAAI>
+ <msoRequest>
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <serviceInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</serviceInstanceId>
+ </msoRequest>
+ <messageId>messageId_value</messageId>
+ <notificationUrl/>
+</deleteNetworkRequest>"""
+
+ String deleteNetworkResponse_noRollback =
+"""<ns2:deleteNetworkResponse xmlns:ns2="http://org.openecomp.mso/network">
+ <networkDeleted>true</networkDeleted>
+</ns2:deleteNetworkResponse>
+"""
+
+ String deleteNetworkResponse =
+ """<ns2:deleteNetworkResponse xmlns:ns2="http://org.openecomp.mso/network">
+ <networkDeleted>true</networkDeleted>
+ <rollback>
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkStackId></networkStackId>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <networkCreated>true</networkCreated>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <msoRequest>
+ <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+ <serviceInstanceId></serviceInstanceId>
+ </msoRequest>
+ </rollback>
+ </ns2:deleteNetworkResponse>"""
+
+ String deleteRollbackNetworkRequest =
+ """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">
+ <rollback>
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkStackId/>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <networkCreated>true</networkCreated>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <msoRequest>
+ <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+ <serviceInstanceId/>
+ </msoRequest>
+ </rollback>
+</NetworkAdapter:rollbackNetwork>"""
+
+ String deleteNetworkResponseFalseCompletion =
+ """<ns2:deleteNetworkResponse xmlns:ns2="http://org.openecomp.mso/network"
+ xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+ <networkDeleted>false</networkDeleted>
+ </ns2:deleteNetworkResponse>"""
+
+ String deleteNetworkErrorResponse =
+ """<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<deleteNetworkError>
+<messageId>680bd458-5ec1-4a16-b77c-509022e53450</messageId><category>INTERNAL</category>
+<message>400 Bad Request: The server could not comply with the request since it is either malformed or otherwise incorrect., error.type=StackValidationFailed, error.message=Property error: : resources.network.properties: : Unknown Property network_ipam_refs_data</message>
+<rolledBack>true</rolledBack>
+</deleteNetworkError>
+"""
+
+ String deleteNetworkWorkflowException =
+ """<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ <aetgt:ErrorMessage>Received error from Network Adapter: 400 Bad Request: The server could not comply with the request since it is either malformed or otherwise incorrect., error.type=StackValidationFailed, error.message=Property error: : resources.network.properties: : Unknown Property network_ipam_refs_data</aetgt:ErrorMessage>
+ <aetgt:ErrorCode>7020</aetgt:ErrorCode>
+ </aetgt:WorkflowException>"""
+
+String aaiWorkflowException =
+"""<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ <aetgt:ErrorMessage>Bpmn error encountered in DoDeleteNetworkInstance flow. Unexpected Response from AAI Adapter - org.apache.http.conn.HttpHostConnectException: Connect to localhost:8090 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect</aetgt:ErrorMessage>
+ <aetgt:ErrorCode>2500</aetgt:ErrorCode>
+ </aetgt:WorkflowException>"""
+
+ String aaiResponse =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Sat,30 Jan 2016 20:09:24 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID"
+ value="mtcnjv9aaas01.mtcnj.aic.cip.com-20160130-20:09:24:814-165843"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v8">
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_BASIC</network-type>
+ <network-role>HSL_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <neutron-network-id>8bbd3edf-b835-4610-96a2-a5cafa029042</neutron-network-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <orchestration-status>active</orchestration-status>
+ <heat-stack-id>HSL_direct_net_2/57594a56-1c92-4a38-9caa-641c1fa3d4b6</heat-stack-id>
+ <subnets>
+ <subnet>
+ <subnet-id>ea5f2a2c-604f-47ff-a9c5-253ee4f0ef0a</subnet-id>
+ <neutron-subnet-id>5a77fdc2-7789-4649-a1b9-6eaf1db1813a</neutron-subnet-id>
+ <gateway-address>172.16.34.1</gateway-address>
+ <network-start-address>172.16.34.0</network-start-address>
+ <cidr-mask>28</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>active</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <relationship-list>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/e81d842d3e8b45c5a59f57cd76af3aaf/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>e81d842d3e8b45c5a59f57cd76af3aaf</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>cloud-region</related-to>
+ <related-link>cloud-infrastructure/cloud-regions/cloud-region/att-aic/RDM2WAGPLCP/</related-link>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-owner</relationship-key>
+ <relationship-value>att-aic</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-region-id</relationship-key>
+ <relationship-value>RDM2WAGPLCP</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </l3-network>
+ </rest:payload>
+</rest:RESTResponse>"""
+
+String aaiResponseWithRelationship =
+"""<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Sat,30 Jan 2016 20:09:24 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID"
+ value="mtcnjv9aaas01.mtcnj.aic.cip.com-20160130-20:09:24:814-165843"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v8">
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_BASIC</network-type>
+ <network-role>HSL_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <neutron-network-id>8bbd3edf-b835-4610-96a2-a5cafa029042</neutron-network-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <orchestration-status>active</orchestration-status>
+ <heat-stack-id>HSL_direct_net_2/57594a56-1c92-4a38-9caa-641c1fa3d4b6</heat-stack-id>
+ <subnets>
+ <subnet>
+ <subnet-id>ea5f2a2c-604f-47ff-a9c5-253ee4f0ef0a</subnet-id>
+ <neutron-subnet-id>5a77fdc2-7789-4649-a1b9-6eaf1db1813a</neutron-subnet-id>
+ <gateway-address>172.16.34.1</gateway-address>
+ <network-start-address>172.16.34.0</network-start-address>
+ <cidr-mask>28</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>active</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <relationship-list>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/e81d842d3e8b45c5a59f57cd76af3aaf/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>e81d842d3e8b45c5a59f57cd76af3aaf</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>vf-module</related-to>
+ <related-link>https://aai-app-e2e.ecomp.cci.com:8443/aai/v8/network/generic-vnfs/generic-vnf/105df7e5-0b3b-49f7-a837-4864b62827c4/vf-modules/vf-module/d9217058-95a0-49ee-b9a9-949259e89349/</related-link>
+ <relationship-data>
+ <relationship-key>generic-vnf.vnf-id</relationship-key>
+ <relationship-value>105df7e5-0b3b-49f7-a837-4864b62827c4</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>vf-module.vf-module-id</relationship-key>
+ <relationship-value>d9217058-95a0-49ee-b9a9-949259e89349</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>generic-vnf</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/generic-vnfs/generic-vnf/45f822d9-73ca-4255-9844-7cef401bbf47/</related-link>
+ <relationship-data>
+ <relationship-key>generic-vnf.vnf-id</relationship-key>
+ <relationship-value>45f822d9-73ca-4255-9844-7cef401bbf47</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>generic-vnf.vnf-name</property-key>
+ <property-value>zrdm1scpx05</property-value>
+ </related-to-property>
+ </relationship>
+ </relationship-list>
+ </l3-network>
+ </rest:payload>
+</rest:RESTResponse>"""
+
+ String deleteSDNCRequest =
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>delete</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>DisconnectNetworkRequest</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type/>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name/>
+ </service-information>
+ <network-request-information>
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-type>CONTRAIL_BASIC</network-type>
+ <network-name>HSL_direct_net_2</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+ String deleteRpcSDNCRequest =
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>unassign</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>DeleteNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <subscription-service-type>MSO-dev-service-type</subscription-service-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</model-invariant-uuid>
+ <model-uuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</model-uuid>
+ <model-version>1.0</model-version>
+ <model-name>HNGW Protected OAM</model-name>
+ </ecomp-model-information>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <global-customer-id>globalId_45678905678</global-customer-id>
+ <subscriber-name/>
+ </service-information>
+ <network-information>
+ <network-id>networkId</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>sn5256d1-5a33-55df-13ab-12abad84e764</model-invariant-uuid>
+ <model-customization-uuid>sn5256d1-5a33-55df-13ab-12abad84e222</model-customization-uuid>
+ <model-uuid>sn5256d1-5a33-55df-13ab-12abad84e111</model-uuid>
+ <model-version>1</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-input>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <aic-clli/>
+ <network-input-parameters/>
+ </network-request-input>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+ String sdncAdapaterDeactivateRollback =
+"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>activate</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>CreateNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <subscription-service-type>MSO-dev-service-type</subscription-service-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</model-invariant-uuid>
+ <model-uuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</model-uuid>
+ <model-version>1.0</model-version>
+ <model-name>HNGW Protected OAM</model-name>
+ </ecomp-model-information>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <global-customer-id>globalId_45678905678</global-customer-id>
+ <subscriber-name/>
+ </service-information>
+ <network-information>
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>sn5256d1-5a33-55df-13ab-12abad84e764</model-invariant-uuid>
+ <model-customization-uuid>sn5256d1-5a33-55df-13ab-12abad84e222</model-customization-uuid>
+ <model-uuid>sn5256d1-5a33-55df-13ab-12abad84e111</model-uuid>
+ <model-version>1</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-input>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <aic-clli/>
+ <network-input-parameters/>
+ </network-request-input>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+ String sdncAdapterWorkflowResponse =
+ """<aetgt:SDNCAdapterWorkflowResponse xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1">
+ <sdncadapterworkflow:response-data>
+<tag0:CallbackHeader xmlns:tag0="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <tag0:RequestId>745b1b50-e39e-4685-9cc8-c71f0bde8bf0</tag0:RequestId>
+ <tag0:ResponseCode>200</tag0:ResponseCode>
+ <tag0:ResponseMessage>OK</tag0:ResponseMessage>
+</tag0:CallbackHeader>
+ <tag0:RequestData xmlns:tag0="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1"><?xml version="1.0" encoding="UTF-8"?><output xmlns="com:att:sdnctl:vnf"><svc-request-id>19174929-3809-49ca-89eb-17f84a035389</svc-request-id><response-code>200</response-code><ack-final-indicator>Y</ack-final-indicator><network-information><network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id></network-information><service-information><service-type>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-type><service-instance-id>HSL_direct_net_2</service-instance-id><subscriber-name>notsurewecare</subscriber-name></service-information></output></tag0:RequestData>
+ </sdncadapterworkflow:response-data>
+ </aetgt:SDNCAdapterWorkflowResponse>"""
+
+ String sdncAdapterWorkflowResponse_404 =
+ """<aetgt:SDNCAdapterWorkflowResponse xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1">
+ <sdncadapterworkflow:response-data><?xml version="1.0" encoding="UTF-8"?><output xmlns="com:att:sdnctl:vnf"><svc-request-id>00703dc8-71ff-442d-a4a8-3adc5beef6a9</svc-request-id><response-code>404</response-code><response-message>Service instance not found in config tree</response-message><ack-final-indicator>Y</ack-final-indicator><network-information><network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id></network-information><service-information><service-type>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-type><service-instance-id>MNS-25180-L-01-dmz_direct_net_1</service-instance-id><subscriber-name>notsurewecare</subscriber-name></service-information></output></sdncadapterworkflow:response-data>
+</aetgt:SDNCAdapterWorkflowResponse>"""
+
+ String expected_sdncAdapterWorkflowFormattedResponse_404 =
+"""<aetgt:SDNCAdapterWorkflowResponse xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns="com:att:sdnctl:vnf">
+ <aetgt:response-data>
+ <output>
+ <svc-request-id>00703dc8-71ff-442d-a4a8-3adc5beef6a9</svc-request-id>
+ <response-code>404</response-code>
+ <response-message>Service instance not found in config tree</response-message>
+ <ack-final-indicator>Y</ack-final-indicator>
+ <network-information>
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ </network-information>
+ <service-information>
+ <service-type>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-type>
+ <service-instance-id>MNS-25180-L-01-dmz_direct_net_1</service-instance-id>
+ <subscriber-name>notsurewecare</subscriber-name>
+ </service-information>
+ </output>
+ </aetgt:response-data>
+</aetgt:SDNCAdapterWorkflowResponse>"""
+
+ String sdncAdapterWorkflowFormattedResponse =
+ """<aetgt:SDNCAdapterWorkflowResponse xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns="com:att:sdnctl:vnf">
+ <aetgt:response-data>
+ <output>
+ <svc-request-id>19174929-3809-49ca-89eb-17f84a035389</svc-request-id>
+ <response-code>200</response-code>
+ <ack-final-indicator>Y</ack-final-indicator>
+ <network-information>
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ </network-information>
+ <service-information>
+ <service-type>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-type>
+ <service-instance-id>HSL_direct_net_2</service-instance-id>
+ <subscriber-name>notsurewecare</subscriber-name>
+ </service-information>
+ </output>
+ </aetgt:response-data>
+</aetgt:SDNCAdapterWorkflowResponse>"""
+
+String sdncAdapterWorkflowFormattedResponse_404 =
+"""<aetgt:SDNCAdapterWorkflowResponse xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns="com:att:sdnctl:vnf">
+ <aetgt:response-data>
+ <output>
+ <svc-request-id>00703dc8-71ff-442d-a4a8-3adc5beef6a9</svc-request-id>
+ <response-code>404</response-code>
+ <response-message>Service instance not found in config tree</response-message>
+ <ack-final-indicator>Y</ack-final-indicator>
+ <network-information>
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ </network-information>
+ <service-information>
+ <service-type>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-type>
+ <service-instance-id>MNS-25180-L-01-dmz_direct_net_1</service-instance-id>
+ <subscriber-name>notsurewecare</subscriber-name>
+ </service-information>
+ </output>
+ </aetgt:response-data>
+</aetgt:SDNCAdapterWorkflowResponse>"""
+
+ String invalidRequest = "Invalid value of network-id element"
+
+
+
+ String sndcWorkflowException =
+ """<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ <aetgt:ErrorMessage>Received error from SDN-C: No availability zone available</aetgt:ErrorMessage>
+ <aetgt:ErrorCode>5300</aetgt:ErrorCode>
+ <aetgt:SourceSystemErrorCode>200</aetgt:SourceSystemErrorCode>
+</aetgt:WorkflowException>"""
+
+ String sndcWorkflowErrorResponse =
+ """<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ <aetgt:ErrorMessage>Received error from SDN-C: <aetgt:SDNCAdapterWorkflowResponse xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1">
+ <sdncadapterworkflow:response-data><?xml version="1.0" encoding="UTF-8"?><output xmlns="com:att:sdnctl:vnf"><svc-request-id>00703dc8-71ff-442d-a4a8-3adc5beef6a9</svc-request-id><response-code>404</response-code><response-message>Service instance not found in config tree</response-message><ack-final-indicator>Y</ack-final-indicator><network-information><network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id></network-information><service-information><service-type>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-type><service-instance-id>MNS-25180-L-01-dmz_direct_net_1</service-instance-id><subscriber-name>notsurewecare</subscriber-name></service-information></output></sdncadapterworkflow:response-data>
+</aetgt:SDNCAdapterWorkflowResponse></aetgt:ErrorMessage>
+ <aetgt:ErrorCode>5300</aetgt:ErrorCode>
+ </aetgt:WorkflowException>"""
+
+ String unexpectedErrorEncountered =
+ """<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ <aetgt:ErrorMessage>bpel error deleting network</aetgt:ErrorMessage>
+ <aetgt:ErrorCode>5300</aetgt:ErrorCode>
+ </aetgt:WorkflowException>"""
+
+
+ // expectedVnfRequest
+ String inputViprSDC_NetworkRequest =
+ """<network-request xmlns="http://www.w3.org/2001/XMLSchema">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>DELETE</action>
+ <source>VID</source>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ </request-info>
+ <network-inputs>
+ <network-id>networkId</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <subscription-service-type>MSO-dev-service-type</subscription-service-type>
+ <global-customer-id>globalId_45678905678</global-customer-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <failIfExist>false</failIfExist>
+ <networkModelInfo>
+ <modelName>CONTRAIL_EXTERNAL</modelName>
+ <modelUuid>sn5256d1-5a33-55df-13ab-12abad84e111</modelUuid>
+ <modelInvariantUuid>sn5256d1-5a33-55df-13ab-12abad84e764</modelInvariantUuid>
+ <modelVersion>1</modelVersion>
+ <modelCustomizationUuid>sn5256d1-5a33-55df-13ab-12abad84e222</modelCustomizationUuid>
+ <modelType>CONTRAIL_EXTERNAL</modelType>
+ </networkModelInfo>
+ <serviceModelInfo>
+ <modelName>HNGW Protected OAM</modelName>
+ <modelUuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</modelUuid>
+ <modelInvariantUuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</modelInvariantUuid>
+ <modelVersion>1.0</modelVersion>
+ <modelCustomizationUuid/>
+ <modelType>service</modelType>
+ </serviceModelInfo>
+ <sdncVersion>1702</sdncVersion>
+ </network-inputs>
+ <network-params/>
+</network-request>"""
+// - - - - - - - -
+
+
+ @Before
+ public void init()
+ {
+ MockitoAnnotations.initMocks(this)
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest_Json() {
+
+ println "************ preProcessRequest_Payload ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("isBaseVfModule")).thenReturn(true)
+ when(mockExecution.getVariable("recipeTimeout")).thenReturn(0)
+ when(mockExecution.getVariable("requestAction")).thenReturn("DELETE")
+ when(mockExecution.getVariable("networkId")).thenReturn("bdc5efe8-404a-409b-85f6-0dcc9eebae30")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("vnfId")).thenReturn("")
+ when(mockExecution.getVariable("volumeGroupId")).thenReturn("")
+ //when(mockExecution.getVariable("networkId")).thenReturn("")
+ when(mockExecution.getVariable("serviceType")).thenReturn("MOG")
+ when(mockExecution.getVariable("networkType")).thenReturn("modelName")
+ when(mockExecution.getVariable("bpmnRequest")).thenReturn(incomingJsonRequest)
+ when(mockExecution.getVariable("disableRollback")).thenReturn(true)
+ when(mockExecution.getVariable("testMessageId")).thenReturn("7df689f9-7b93-430b-9b9e-28140d70cc7ad")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("mso-service-instance-id")).thenReturn("FH/VLXM/003717//SW_INTERNET")
+ when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1610")
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.preProcessRequest(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+ verify(mockExecution).setVariable("action", "DELETE")
+ verify(mockExecution).setVariable(Prefix + "networkRequest", expectedNetworkRequest)
+
+ verify(mockExecution).setVariable(Prefix + "rollbackEnabled", false)
+
+ verify(mockExecution).setVariable(Prefix + "networkInputs", expected_networkInput)
+ verify(mockExecution).setVariable(Prefix + "messageId", "7df689f9-7b93-430b-9b9e-28140d70cc7ad")
+ verify(mockExecution).setVariable(Prefix + "source", "VID")
+
+ // Authentications
+ verify(mockExecution).setVariable("BasicAuthHeaderValuePO", "Basic cGFzc3dvcmQ=")
+ verify(mockExecution).setVariable("BasicAuthHeaderValueSDNC", "Basic cGFzc3dvcmQ=")
+
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest_vPER() {
+
+ def networkModelInfo = """{"modelUuid": "sn5256d1-5a33-55df-13ab-12abad84e111",
+ "modelName": "CONTRAIL_EXTERNAL",
+ "modelType": "CONTRAIL_EXTERNAL",
+ "modelVersion": "1",
+ "modelCustomizationUuid": "sn5256d1-5a33-55df-13ab-12abad84e222",
+ "modelInvariantUuid": "sn5256d1-5a33-55df-13ab-12abad84e764"
+ }""".trim()
+
+ println "************ preProcessRequest_Payload ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ // Inputs:
+ when(mockExecution.getVariable("msoRequestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("disableRollback")).thenReturn("true")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("networkId")).thenReturn("bdc5efe8-404a-409b-85f6-0dcc9eebae30") // optional
+ when(mockExecution.getVariable("networkName")).thenReturn("MNS-25180-L-01-dmz_direct_net_1") // optional
+ when(mockExecution.getVariable("productFamilyId")).thenReturn("a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb")
+ when(mockExecution.getVariable("networkModelInfo")).thenReturn("CONTRAIL_EXTERNAL")
+ when(mockExecution.getVariable("lcpCloudRegionId")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable("tenantId")).thenReturn("7dd5365547234ee8937416c65507d266")
+ when(mockExecution.getVariable("failIfExists")).thenReturn("false")
+ when(mockExecution.getVariable("networkModelInfo")).thenReturn(networkModelInfo)
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1702")
+ when(mockExecution.getVariable("action")).thenReturn("DELETE")
+ when(mockExecution.getVariable("subscriptionServiceType")).thenReturn("MSO-dev-service-type")
+ when(mockExecution.getVariable("globalSubscriberId")).thenReturn("globalId_45678905678")
+ when(mockExecution.getVariable("testMessageId")).thenReturn("7df689f9-7b93-430b-9b9e-28140d70cc7ad")
+
+ when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.preProcessRequest(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+ verify(mockExecution).setVariable("action", "DELETE")
+ verify(mockExecution).setVariable(Prefix + "networkRequest", expectedVperNetworkRequest)
+
+ verify(mockExecution).setVariable(Prefix + "rollbackEnabled", false)
+
+ verify(mockExecution).setVariable(Prefix + "networkInputs", expectedVper_networkInput)
+ verify(mockExecution).setVariable(Prefix + "messageId", "7df689f9-7b93-430b-9b9e-28140d70cc7ad")
+ verify(mockExecution).setVariable(Prefix + "source", "VID")
+
+ // Authentications
+ verify(mockExecution).setVariable("BasicAuthHeaderValuePO", "Basic cGFzc3dvcmQ=")
+ verify(mockExecution).setVariable("BasicAuthHeaderValueSDNC", "Basic cGFzc3dvcmQ=")
+
+
+ }
+
+ public void initializeVariables (Execution mockExecution) {
+
+ verify(mockExecution).setVariable(Prefix + "networkRequest", "")
+ verify(mockExecution).setVariable(Prefix + "isSilentSuccess", false)
+ verify(mockExecution).setVariable(Prefix + "Success", false)
+
+ verify(mockExecution).setVariable(Prefix + "requestId", "")
+ verify(mockExecution).setVariable(Prefix + "source", "")
+ verify(mockExecution).setVariable(Prefix + "lcpCloudRegion", "")
+ verify(mockExecution).setVariable(Prefix + "networkInputs", "")
+ verify(mockExecution).setVariable(Prefix + "tenantId", "")
+
+ verify(mockExecution).setVariable(Prefix + "queryAAIRequest","")
+ verify(mockExecution).setVariable(Prefix + "queryAAIResponse", "")
+ verify(mockExecution).setVariable(Prefix + "aaiReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "isAAIGood", false)
+ verify(mockExecution).setVariable(Prefix + "isVfRelationshipExist", false)
+
+ // AAI query Cloud Region
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionRequest","")
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionReturnCode","")
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionResponse","")
+ verify(mockExecution).setVariable(Prefix + "cloudRegionPo","")
+ verify(mockExecution).setVariable(Prefix + "cloudRegionSdnc","")
+
+ verify(mockExecution).setVariable(Prefix + "deleteNetworkRequest", "")
+ verify(mockExecution).setVariable(Prefix + "deleteNetworkResponse", "")
+ verify(mockExecution).setVariable(Prefix + "networkReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", "")
+
+ verify(mockExecution).setVariable(Prefix + "deleteSDNCRequest", "")
+ verify(mockExecution).setVariable(Prefix + "deleteSDNCResponse", "")
+ verify(mockExecution).setVariable(Prefix + "sdncReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "sdncResponseSuccess", false)
+
+ verify(mockExecution).setVariable(Prefix + "deactivateSDNCRequest", "")
+ verify(mockExecution).setVariable(Prefix + "deactivateSDNCResponse", "")
+ verify(mockExecution).setVariable(Prefix + "deactivateSdncReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "isSdncDeactivateRollbackNeeded", "")
+
+ verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCRequest", "")
+ verify(mockExecution).setVariable(Prefix + "isException", false)
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest_Json_MissingId() {
+
+ println "************ preProcessRequest_MissingId() ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("isBaseVfModule")).thenReturn(true)
+ when(mockExecution.getVariable("recipeTimeout")).thenReturn(0)
+ when(mockExecution.getVariable("requestAction")).thenReturn("DELETE")
+ //when(mockExecution.getVariable("networkId")).thenReturn("") // missing Id
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("vnfId")).thenReturn("")
+ when(mockExecution.getVariable("volumeGroupId")).thenReturn("")
+ //when(mockExecution.getVariable("networkId")).thenReturn("")
+ when(mockExecution.getVariable("serviceType")).thenReturn("MOG")
+ when(mockExecution.getVariable("networkType")).thenReturn("modelName")
+ when(mockExecution.getVariable("bpmnRequest")).thenReturn(incomingJsonRequest)
+ when(mockExecution.getVariable("disableRollback")).thenReturn(true)
+
+ when(mockExecution.getVariable("testMessageId")).thenReturn("7df689f9-7b93-430b-9b9e-28140d70cc7ad")
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("mso-service-instance-id")).thenReturn("FH/VLXM/003717//SW_INTERNET")
+ when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1610")
+
+ // preProcessRequest(Execution execution)
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ try {
+ DoDeleteNetworkInstance.preProcessRequest(mockExecution)
+ } catch (Exception ex) {
+ println " Test End - Handle catch-throw BpmnError()! "
+ }
+
+ //verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+ verify(mockExecution).setVariable("action", "DELETE")
+ verify(mockExecution).setVariable(Prefix + "networkRequest", expectedNetworkRequestMissingId)
+ verify(mockExecution).setVariable(Prefix + "rollbackEnabled", false)
+
+ verify(mockExecution).setVariable(Prefix + "networkInputs", networkInputsMissingId)
+ verify(mockExecution).setVariable(Prefix + "messageId", "7df689f9-7b93-430b-9b9e-28140d70cc7ad")
+ verify(mockExecution).setVariable(Prefix + "source", "VID")
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest_Json_MissingCloudRegion() {
+
+ def networkModelInfo = """{"modelVersionId": "sn5256d1-5a33-55df-13ab-12abad84e111",
+ "modelName": "CONTRAIL_EXTERNAL",
+ "modelType": "CONTRAIL_EXTERNAL",
+ "modelVersion": "1",
+ "modelCustomizationId": "sn5256d1-5a33-55df-13ab-12abad84e222",
+ "modelInvariantId": "sn5256d1-5a33-55df-13ab-12abad84e764"
+ }""".trim()
+
+ println "************ preProcessRequest_MissingCloudRegion() ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("networkModelInfo")).thenReturn(networkModelInfo)
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("isBaseVfModule")).thenReturn(true)
+ when(mockExecution.getVariable("recipeTimeout")).thenReturn(0)
+ when(mockExecution.getVariable("requestAction")).thenReturn("DELETE")
+ when(mockExecution.getVariable("networkId")).thenReturn("bdc5efe8-404a-409b-85f6-0dcc9eebae30")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("vnfId")).thenReturn("")
+ when(mockExecution.getVariable("volumeGroupId")).thenReturn("")
+ //when(mockExecution.getVariable("networkId")).thenReturn("")
+ when(mockExecution.getVariable("serviceType")).thenReturn("MOG")
+ when(mockExecution.getVariable("networkType")).thenReturn("modelName")
+ when(mockExecution.getVariable("bpmnRequest")).thenReturn(incomingRequestMissingCloudRegion)
+ when(mockExecution.getVariable("disableRollback")).thenReturn(true)
+
+ when(mockExecution.getVariable("testMessageId")).thenReturn("7df689f9-7b93-430b-9b9e-28140d70cc7ad")
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("mso-service-instance-id")).thenReturn("FH/VLXM/003717//SW_INTERNET")
+ when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1610")
+
+ // preProcessRequest(Execution execution)
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.preProcessRequest(mockExecution)
+
+ //verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+ verify(mockExecution).setVariable("action", "DELETE")
+ verify(mockExecution).setVariable(Prefix + "networkRequest", expectedNetworkRequestMissingCloudRegion)
+ verify(mockExecution).setVariable(Prefix + "rollbackEnabled", false)
+
+ verify(mockExecution).setVariable(Prefix + "networkInputs", networkInputsMissingCloudRegion)
+ verify(mockExecution).setVariable(Prefix + "messageId", "7df689f9-7b93-430b-9b9e-28140d70cc7ad")
+ verify(mockExecution).setVariable(Prefix + "lcpCloudRegion", null)
+
+ verify(mockExecution).setVariable("BasicAuthHeaderValuePO","Basic cGFzc3dvcmQ=")
+ verify(mockExecution).setVariable("BasicAuthHeaderValueSDNC", "Basic cGFzc3dvcmQ=")
+
+ }
+
+
+
+ @Test
+ //@Ignore
+ public void prepareNetworkRequest() {
+
+ println "************ prepareNetworkRequest ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedVperNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "queryAAIResponse")).thenReturn(queryAAIResponse)
+ when(mockExecution.getVariable(Prefix + "cloudRegionPo")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "tenantId")).thenReturn("e81d842d3e8b45c5a59f57cd76af3aaf")
+
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter")
+ when(mockExecution.getVariable("msoRequestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("messageId_value")
+ //when(mockExecution.getVariable("URN_?????")).thenReturn("") // notificationUrl, //TODO - is this coming from URN? What variable/value to use?
+ when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.prepareNetworkRequest(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable("URN_mso_adapters_network_rest_endpoint", "http://localhost:8090/networks/NetworkAdapter/bdc5efe8-404a-409b-85f6-0dcc9eebae30")
+ //verify(mockExecution).setVariable(Prefix + "deleteNetworkRequest", deleteNetworkRequest)
+ verify(mockExecution).setVariable(Prefix + "deleteNetworkRequest", deleteNetworkRESTRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareNetworkRequest_AlaCarte() {
+
+ println "************ prepareNetworkRequest ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "queryAAIResponse")).thenReturn(queryAAIResponse)
+ when(mockExecution.getVariable(Prefix + "cloudRegionPo")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "tenantId")).thenReturn("e81d842d3e8b45c5a59f57cd76af3aaf")
+
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter")
+ when(mockExecution.getVariable("msoRequestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("messageId_value")
+ //when(mockExecution.getVariable("URN_?????")).thenReturn("") // notificationUrl, //TODO - is this coming from URN? What variable/value to use?
+ when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.prepareNetworkRequest(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable("URN_mso_adapters_network_rest_endpoint", "http://localhost:8090/networks/NetworkAdapter/bdc5efe8-404a-409b-85f6-0dcc9eebae30")
+ //verify(mockExecution).setVariable(Prefix + "deleteNetworkRequest", deleteNetworkRequest)
+ verify(mockExecution).setVariable("mso-request-id", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ verify(mockExecution).setVariable(Prefix + "deleteNetworkRequest", deleteNetworkRESTRequestAlaCarte)
+
+ }
+
+ @Test
+ //@Ignore
+ public void sendRequestToVnfAdapter() {
+
+ println "************ sendRequestToVnfAdapter ************* "
+
+ WireMock.reset();
+ MockNetworkAdapter("bdc5efe8-404a-409b-85f6-0dcc9eebae30", 200, "deleteNetworkResponse_Success.xml");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "deleteNetworkRequest")).thenReturn(deleteNetworkRESTRequest)
+ when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter/bdc5efe8-404a-409b-85f6-0dcc9eebae30")
+ when(mockExecution.getVariable("BasicAuthHeaderValuePO")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.sendRequestToVnfAdapter(mockExecution)
+
+ verify(mockExecution).setVariable(Prefix + "networkReturnCode", 200)
+ //verify(mockExecution).setVariable(Prefix + "deleteNetworkResponse", deleteNetworkResponse_noRollback)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void prepareSDNCRequest() {
+
+ println "************ prepareSDNCRequest ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "cloudRegionSdnc")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "queryAAIResponse")).thenReturn(aaiResponse)
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("URN_mso_workflow_sdncadapter_callback")).thenReturn("http://localhost:8090/SDNCAdapterCallback")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.prepareSDNCRequest(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "deleteSDNCRequest", deleteSDNCRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareRpcSDNCRequest() {
+
+ println "************ prepareRpcSDNCRequest ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(inputViprSDC_NetworkRequest)
+ when(mockExecution.getVariable(Prefix + "cloudRegionSdnc")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("msoRequestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56") // test ONLY
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("URN_mso_workflow_sdncadapter_callback")).thenReturn("http://localhost:8090/SDNCAdapterCallback")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.prepareRpcSDNCRequest(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "deleteSDNCRequest", deleteRpcSDNCRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareRpcSDNCActivateRollback() {
+
+ println "************ prepareRpcSDNCActivateRollback ************* "
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(inputViprSDC_NetworkRequest)
+ when(mockExecution.getVariable(Prefix + "cloudRegionSdnc")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable(Prefix + "networkId")).thenReturn("8abc633a-810b-4ca5-8b3a-09511d13a2ce")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("msoRequestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56") // test ONLY
+ when(mockExecution.getVariable("URN_mso_workflow_sdncadapter_callback")).thenReturn("http://localhost:8090/SDNCAdapterCallback")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn(null)
+ when(mockExecution.getVariable(Prefix + "deactivateSDNCResponse")).thenReturn(sdncAdapterWorkflowFormattedResponse)
+
+ // preProcessRequest(Execution execution)
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.prepareRpcSDNCDeactivateRollback(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix)
+ //verify(mockExecution).setVariable("mso-request-id", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //verify(mockExecution).setVariable(Prefix + "requestId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //verify(mockExecution).setVariable("mso-service-instance-id", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCRequest", sdncAdapaterDeactivateRollback)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAI_200() {
+
+ println "************ callRESTQueryAAI ************* "
+
+ WireMock.reset();
+ MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "1");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_network_l3_network_uri")).thenReturn("")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_DoDeleteNetworkInstance_aai_network_l3_network_uri")).thenReturn("/aai/v8/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("URN_mso_workflow_DoDeleteNetworkInstance_aai_l3_network_uri")).thenReturn("/aai/v9/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.callRESTQueryAAI(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "queryAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/bdc5efe8-404a-409b-85f6-0dcc9eebae30"+"?depth=1")
+
+ verify(mockExecution).setVariable(Prefix + "aaiReturnCode", "200")
+ //verify(mockExecution).setVariable(Prefix + "queryAAIResponse", aaiResponse)
+ verify(mockExecution).setVariable(Prefix + "isAAIGood", true)
+ verify(mockExecution).setVariable(Prefix + "isVfRelationshipExist", false)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAI_withRelationship_200() {
+
+ println "************ callRESTQueryAAI ************* "
+
+ WireMock.reset();
+ MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_withRelationship_Success.xml", "1");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_network_l3_network_uri")).thenReturn("")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_DoDeleteNetworkInstance_aai_network_l3_network_uri")).thenReturn("/aai/v8/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("URN_mso_workflow_DoDeleteNetworkInstance_aai_l3_network_uri")).thenReturn("/aai/v9/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.callRESTQueryAAI(mockExecution)
+
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "queryAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/bdc5efe8-404a-409b-85f6-0dcc9eebae30"+"?depth=1")
+
+ verify(mockExecution).setVariable(Prefix + "aaiReturnCode", "200")
+ //verify(mockExecution).setVariable(Prefix + "queryAAIResponse", aaiResponseWithRelationship)
+ verify(mockExecution).setVariable(Prefix + "isAAIGood", true)
+ verify(mockExecution).setVariable(Prefix + "isVfRelationshipExist", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAI_200_DefaultUri() {
+
+ println "************ callRESTQueryAAI ************* "
+
+ WireMock.reset();
+ MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "1");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_default_aai_network_l3_network_uri")).thenReturn("/aai/v8/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_l3_network_uri")).thenReturn("/aai/v9/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.callRESTQueryAAI(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "queryAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/bdc5efe8-404a-409b-85f6-0dcc9eebae30"+ "?depth=1")
+
+ verify(mockExecution).setVariable(Prefix + "aaiReturnCode", "200")
+ //verify(mockExecution).setVariable(Prefix + "queryAAIResponse", aaiResponse)
+ verify(mockExecution).setVariable(Prefix + "isAAIGood", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAICloudRegion30_200() {
+
+ println "************ callRESTQueryAAICloudRegion30_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkCloudRegion("DeleteNetworkV2/cloudRegion30_AAIResponse_Success.xml", "RDM2WAGPLCP");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix)
+ when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "lcpCloudRegion")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_default_aai_cloud_infrastructure_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
+
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionRequest", "http://localhost:8090/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/RDM2WAGPLCP")
+ verify(mockExecution, atLeast(2)).setVariable(Prefix + "queryCloudRegionReturnCode", "200")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAICloudRegion_NotFound() {
+
+ println "************ callRESTQueryAAICloudRegion_NotFound ************* "
+
+ WireMock.reset();
+ MockGetNetworkCloudRegion_404("MDTWNJ21");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix)
+ when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(vnfRequestCloudRegionNotFound)
+ when(mockExecution.getVariable(Prefix + "lcpCloudRegion")).thenReturn("MDTWNJ21")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_default_aai_cloud_infrastructure_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
+
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "cloudRegionPo", "MDTWNJ21")
+ verify(mockExecution).setVariable(Prefix + "cloudRegionSdnc", "AAIAIC25")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAICloudRegion25_200() {
+
+ println "************ callRESTQueryAAICloudRegion25_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkCloudRegion("DeleteNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix)
+ when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "lcpCloudRegion")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ // old: when(mockExecution.getVariable("URN_mso_workflow_default_aai_cloud_infrastructure_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ //
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
+
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionRequest", "http://localhost:8090/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/RDM2WAGPLCP")
+ verify(mockExecution, atLeast(2)).setVariable(Prefix + "queryCloudRegionReturnCode", "200")
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void validateNetworkResponse() {
+
+ println "************ validateNetworkResponse ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "deleteNetworkResponse")).thenReturn(deleteNetworkResponse)
+ when(mockExecution.getVariable(Prefix + "networkReturnCode")).thenReturn('200')
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.validateNetworkResponse(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ //verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", null)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void validateSDNCResponse_200() {
+
+ println "************ validateSDNCResponse ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "sdncReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable("SDNCA_SuccessIndicator")).thenReturn(true)
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ try {
+ DoDeleteNetworkInstance.validateSDNCResponse(mockExecution, sdncAdapterWorkflowResponse)
+ } catch (Exception ex) {
+ println " Graceful Exit - " + ex.getMessage()
+ }
+
+ }
+
+ @Test
+ //@Ignore
+ public void validateSDNCResponse_404() {
+
+ println "************ validateSDNCResponse ************* "
+
+ WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstance", 2500, "Received error from SNDC Adapter: HTTP Status 404.")
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "sdncReturnCode")).thenReturn("404")
+ when(mockExecution.getVariable("SDNCA_SuccessIndicator")).thenReturn(false)
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ try {
+ DoDeleteNetworkInstance.validateSDNCResponse(mockExecution)
+ } catch (Exception ex) {
+ println " Graceful Exit - " + ex.getMessage()
+ }
+
+ }
+
+ @Test
+ //@Ignore
+ public void validateRpcSDNCDeactivateResponse() {
+
+ println "************ validateRpcSDNCDeactivateResponse ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "deactivateSDNCResponse")).thenReturn(sdncAdapterWorkflowResponse)
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable("SDNCA_SuccessIndicator")).thenReturn(true)
+ when(mockExecution.getVariable(Prefix + "deactivateSDNCReturnCode")).thenReturn("200")
+
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ try {
+ DoDeleteNetworkInstance.validateRpcSDNCDeactivateResponse(mockExecution)
+ verify(mockExecution).setVariable(Prefix + "isSdncDeactivateRollbackNeeded", true)
+
+ } catch (Exception ex) {
+ println " Graceful Exit - " + ex.getMessage()
+ }
+ //MockitoDebuggerImpl debugger = new MockitoDebuggerImpl()
+ //debugger.printInvocations(mockExecution)
+
+ //verify(mockExecution).setVariable(Prefix + "isSdncRollbackNeeded", true)
+
+ }
+
+ @Test
+ @Ignore
+ public void postProcessResponse() {
+
+ println "************ postProcessResponse ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "source")).thenReturn("PORTAL")
+ when(mockExecution.getVariable(Prefix + "isException")).thenReturn(false)
+
+ // postProcessResponse(Execution execution)
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.postProcessResponse(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "Success", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareRollbackData() {
+
+ println "************ prepareRollbackData() ************* "
+
+
+
+ WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstance", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn(deleteRollbackNetworkRequest)
+ //when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn(null)
+ //when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("")
+ when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")).thenReturn(sdncAdapaterDeactivateRollback)
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
+
+ // preProcessRequest(Execution execution)
+ DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+ DoDeleteNetworkInstance.prepareRollbackData(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ }
+
+
+ private ExecutionEntity setupMock() {
+
+ ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
+ when(mockProcessDefinition.getKey()).thenReturn("DoDeleteNetworkInstance")
+ RepositoryService mockRepositoryService = mock(RepositoryService.class)
+ when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
+ when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoDeleteNetworkInstance")
+ when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
+ ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
+ when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+
+ when(mockExecution.getId()).thenReturn("100")
+ when(mockExecution.getProcessDefinitionId()).thenReturn("DoDeleteNetworkInstance")
+ when(mockExecution.getProcessInstanceId()).thenReturn("DoDeleteNetworkInstance")
+ when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
+ when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
+
+ return mockExecution
+
+ }
+
+}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollbackTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollbackTest.groovy new file mode 100644 index 0000000000..c97bedbac1 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollbackTest.groovy @@ -0,0 +1,315 @@ +package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import static org.mockito.Mockito.*
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.ProcessEngineServices
+import org.camunda.bpm.engine.RepositoryService
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.camunda.bpm.engine.impl.pvm.process.ProcessDefinitionImpl
+import org.camunda.bpm.engine.repository.ProcessDefinition
+import org.camunda.bpm.engine.runtime.Execution;
+import org.mockito.MockitoAnnotations
+import org.mockito.runners.MockitoJUnitRunner
+import org.mockito.internal.debugging.MockitoDebuggerImpl
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.junit.Before
+import org.junit.Rule;
+import org.junit.Test
+import org.junit.Ignore
+import org.junit.runner.RunWith
+
+import static org.junit.Assert.*;
+
+import com.github.tomakehurst.wiremock.client.WireMock;
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import org.apache.commons.lang3.*
+
+
+@RunWith(MockitoJUnitRunner.class)
+class DoUpdateNetworkInstanceRollbackTest {
+
+ @Rule
+ public WireMockRule wireMockRule = new WireMockRule(28090);
+
+ def utils = new MsoUtils()
+ String Prefix="UPDNETIR_"
+
+
+ String rollbackNetworkRequest =
+ """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">
+ <rollback>
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkStackId/>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <networkCreated>true</networkCreated>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <msoRequest>
+ <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+ <serviceInstanceId/>
+ </msoRequest>
+ </rollback>
+</NetworkAdapter:rollbackNetwork>"""
+
+ String rollbackActivateSDNCRequest =
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>CreateNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type>MSO-dev-service-type</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
+ <model-customization-uuid>customization-uuid</model-customization-uuid>
+ <model-uuid>uuid</model-uuid>
+ <model-version>version</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+ String rollbackSDNCRequest =
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>CreateNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type>MSO-dev-service-type</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
+ <model-customization-uuid>customization-uuid</model-customization-uuid>
+ <model-uuid>uuid</model-uuid>
+ <model-version>version</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+// - - - - - - - -
+
+
+ @Before
+ public void init()
+ {
+ MockitoAnnotations.initMocks(this)
+
+ }
+
+ public void initializeVariables (Execution mockExecution) {
+
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", null)
+ verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", null)
+ verify(mockExecution).setVariable(Prefix + "WorkflowException", null)
+
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")
+
+ verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackSDNCResponse", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackSDNCReturnCode", "")
+
+ verify(mockExecution).setVariable(Prefix + "Success", false)
+ verify(mockExecution).setVariable(Prefix + "fullRollback", false)
+
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest() {
+
+ println "************ preProcessRequest ************* "
+
+ WorkflowException workflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")
+ Map<String, String> rollbackData = new HashMap<String, String>();
+ rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
+ rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
+ when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1610")
+ when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+
+ when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:28090/SDNCAdapter")
+ when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:28090/networks/NetworkAdapter")
+ when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:28090/SDNCAdapterRpc")
+
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()
+ DoUpdateNetworkInstanceRollback.preProcessRequest(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+ }
+
+
+ @Test
+ @Ignore
+ public void validateRollbackResponses_Good() {
+
+ WorkflowException workflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed. Error 404.")
+ WorkflowException expectedWorkflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed. Error 404. + SNDC activate rollback completed. + PO Network rollback completed. + SNDC assign rollback completed.")
+
+ println "************ validateRollbackResponses_Good() ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(workflowException)
+ when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(false)
+
+ DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()
+ DoUpdateNetworkInstanceRollback.validateRollbackResponses(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution, atLeast(1)).setVariable("rolledBack", true)
+ verify(mockExecution, atLeast(1)).setVariable("wasDeleted", true)
+ verify(mockExecution).setVariable("WorkflowException", refEq(expectedWorkflowException, any(WorkflowException.class)))
+ //verify(mockExecution).setVariable("WorkflowException", expectedWorkflowException)
+ }
+
+ @Test
+ //@Ignore
+ public void validateRollbackResponses_FullRollback() {
+
+ Map<String, String> rollbackData = new HashMap<String, String>();
+ rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
+ rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
+
+ println "************ validateRollbackResponses_FullRollback() ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix)
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
+ when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(null)
+ when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(true)
+ when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
+
+ DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()
+ DoUpdateNetworkInstanceRollback.validateRollbackResponses(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution, atLeast(1)).setVariable("rollbackSuccessful", true)
+ verify(mockExecution, atLeast(1)).setVariable("rollbackError", false)
+
+ }
+
+
+ private ExecutionEntity setupMock() {
+
+ ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
+ when(mockProcessDefinition.getKey()).thenReturn("DoUpdateNetworkInstanceRollback")
+ RepositoryService mockRepositoryService = mock(RepositoryService.class)
+ when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
+ when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoUpdateNetworkInstanceRollback")
+ when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
+ ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
+ when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+
+ when(mockExecution.getId()).thenReturn("100")
+ when(mockExecution.getProcessDefinitionId()).thenReturn("DoUpdateNetworkInstanceRollback")
+ when(mockExecution.getProcessInstanceId()).thenReturn("DoUpdateNetworkInstanceRollback")
+ when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
+ when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
+
+ return mockExecution
+ }
+
+}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceTest.groovy new file mode 100644 index 0000000000..fb44067b68 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceTest.groovy @@ -0,0 +1,2625 @@ +package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import static org.mockito.Mockito.*
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkByIdWithDepth;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkCloudRegion;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkCloudRegion_404;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkVpnBinding;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkTableReference;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkPolicy;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutNetworkIdWithDepth;
+import org.camunda.bpm.engine.ProcessEngineServices
+import org.camunda.bpm.engine.RepositoryService
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.camunda.bpm.engine.repository.ProcessDefinition
+import org.camunda.bpm.engine.runtime.Execution
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.MockitoAnnotations
+import org.mockito.runners.MockitoJUnitRunner
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.core.WorkflowException
+
+import com.github.tomakehurst.wiremock.client.WireMock
+import com.github.tomakehurst.wiremock.junit.WireMockRule
+import org.apache.commons.lang3.*
+
+
+@RunWith(MockitoJUnitRunner.class)
+class DoUpdateNetworkInstanceTest {
+
+ @Rule
+ public WireMockRule wireMockRule = new WireMockRule(8090);
+
+ def utils = new MsoUtils()
+ String Prefix="UPDNETI_"
+
+ String jsonIncomingRequest =
+ """{ "requestDetails": {
+ "modelInfo": {
+ "modelType": "network",
+ "modelCustomizationId": "f21df226-8093-48c3-be7e-0408fcda0422",
+ "modelName": "CONTRAIL_EXTERNAL",
+ "modelVersion": "1.0"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "RDM2WAGPLCP",
+ "tenantId": "7dd5365547234ee8937416c65507d266"
+ },
+ "requestInfo": {
+ "instanceName": "MNS-25180-L-01-dmz_direct_net_1",
+ "source": "VID",
+ "callbackUrl": "",
+ "suppressRollback": true,
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": "f70e927b-6087-4974-9ef8-c5e4d5847ca4",
+ "modelInfo": {
+ "modelType": "serviceT",
+ "modelId": "modelI",
+ "modelNameVersionId": "modelNameVersionI",
+ "modelName": "modleNam",
+ "modelVersion": "1"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "userParams": [
+ {
+ "name": "someUserParam1",
+ "value": "someValue1"
+ }
+ ]
+ }
+ }}"""
+
+
+ String jsonIncomingRequest_MissingCloudRegion =
+ """{ "requestDetails": {
+ "modelInfo": {
+ "modelType": "network",
+ "modelCustomizationId": "f21df226-8093-48c3-be7e-0408fcda0422",
+ "modelName": "CONTRAIL_EXTERNAL",
+ "modelVersion": "1.0"
+ },
+ "cloudConfiguration": {
+ "tenantId": "7dd5365547234ee8937416c65507d266"
+ },
+ "requestInfo": {
+ "instanceName": "MNS-25180-L-01-dmz_direct_net_1",
+ "source": "VID",
+ "callbackUrl": "",
+ "suppressRollback": true,
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": "f70e927b-6087-4974-9ef8-c5e4d5847ca4",
+ "modelInfo": {
+ "modelType": "serviceT",
+ "modelId": "modelI",
+ "modelNameVersionId": "modelNameVersionI",
+ "modelName": "modleNam",
+ "modelVersion": "1"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "userParams": []
+ }
+ }}"""
+
+
+
+ String expectedNetworkRequestMissingNetworkId =
+ """<network-request xmlns="http://www.w3.org/2001/XMLSchema">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>UPDATE</action>
+ <source>VID</source>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ </request-info>
+ <network-inputs>
+ <network-id/>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <modelCustomizationId>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationId>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <sdncVersion>1610</sdncVersion>
+ </network-inputs>
+ <network-params>
+ <param name="some_user_param1">someValue1</param>
+ </network-params>
+</network-request>"""
+
+
+String expectedNetworkRequestMissingCloudRegion =
+"""<network-request xmlns="http://www.w3.org/2001/XMLSchema">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>UPDATE</action>
+ <source>VID</source>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ </request-info>
+ <network-inputs>
+ <network-id>networkId</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <modelCustomizationId>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationId>
+ <aic-cloud-region>null</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <sdncVersion>null</sdncVersion>
+ </network-inputs>
+ <network-params/>
+</network-request>"""
+
+String expectedNetworkInputMissingCloudRegion =
+"""<network-inputs xmlns="http://www.w3.org/2001/XMLSchema">
+ <network-id>networkId</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <modelCustomizationId>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationId>
+ <aic-cloud-region>null</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <sdncVersion>null</sdncVersion>
+</network-inputs>"""
+
+ String networkInputsMissingName =
+ """<network-inputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <network-name/>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>e81d842d3e8b45c5a59f57cd76af3aaf</tenant-id>
+ </network-inputs>"""
+
+String networkInputsMissingCloudRegion =
+"""<network-inputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <aic-cloud-region/>
+ <tenant-id>e81d842d3e8b45c5a59f57cd76af3aaf</tenant-id>
+</network-inputs>"""
+
+ // expectedNetworkRequest
+ String expectedNetworkRequest =
+ """<network-request xmlns="http://www.w3.org/2001/XMLSchema">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>UPDATE</action>
+ <source>VID</source>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ </request-info>
+ <network-inputs>
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <modelCustomizationId>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationId>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <sdncVersion>1610</sdncVersion>
+ </network-inputs>
+ <network-params>
+ <param name="some_user_param1">someValue1</param>
+ </network-params>
+</network-request>"""
+
+String expectedNetworkInputs =
+"""<network-inputs xmlns="http://www.w3.org/2001/XMLSchema">
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <modelCustomizationId>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationId>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <sdncVersion>1610</sdncVersion>
+</network-inputs>"""
+
+String expectedVperNetworkRequest =
+"""<network-request xmlns="http://www.w3.org/2001/XMLSchema">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>UPDATE</action>
+ <source>VID</source>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ </request-info>
+ <network-inputs>
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <subscription-service-type>MSO-dev-service-type</subscription-service-type>
+ <global-customer-id>globalId_45678905678</global-customer-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <failIfExist>false</failIfExist>
+ <networkModelInfo>
+ <modelName>CONTRAIL_EXTERNAL</modelName>
+ <modelUuid>sn5256d1-5a33-55df-13ab-12abad84e111</modelUuid>
+ <modelInvariantUuid>sn5256d1-5a33-55df-13ab-12abad84e764</modelInvariantUuid>
+ <modelVersion>1</modelVersion>
+ <modelCustomizationUuid>sn5256d1-5a33-55df-13ab-12abad84e222</modelCustomizationUuid>
+ </networkModelInfo>
+ <serviceModelInfo>
+ <modelName/>
+ <modelUuid/>
+ <modelInvariantUuid/>
+ <modelVersion/>
+ <modelCustomizationUuid/>
+ </serviceModelInfo>
+ <sdncVersion>1702</sdncVersion>
+ </network-inputs>
+ <network-params/>
+</network-request>"""
+
+String expectedVperNetworkInputs =
+"""<network-inputs xmlns="http://www.w3.org/2001/XMLSchema">
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <subscription-service-type>MSO-dev-service-type</subscription-service-type>
+ <global-customer-id>globalId_45678905678</global-customer-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <failIfExist>false</failIfExist>
+ <networkModelInfo>
+ <modelName>CONTRAIL_EXTERNAL</modelName>
+ <modelUuid>sn5256d1-5a33-55df-13ab-12abad84e111</modelUuid>
+ <modelInvariantUuid>sn5256d1-5a33-55df-13ab-12abad84e764</modelInvariantUuid>
+ <modelVersion>1</modelVersion>
+ <modelCustomizationUuid>sn5256d1-5a33-55df-13ab-12abad84e222</modelCustomizationUuid>
+ </networkModelInfo>
+ <serviceModelInfo>
+ <modelName/>
+ <modelUuid/>
+ <modelInvariantUuid/>
+ <modelVersion/>
+ <modelCustomizationUuid/>
+ </serviceModelInfo>
+ <sdncVersion>1702</sdncVersion>
+</network-inputs>"""
+
+String expectedNetworkInputsMissingNetworkId =
+"""<network-inputs xmlns="http://www.w3.org/2001/XMLSchema">
+ <network-id/>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <modelCustomizationId>f21df226-8093-48c3-be7e-0408fcda0422</modelCustomizationId>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>7dd5365547234ee8937416c65507d266</tenant-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <backout-on-failure>false</backout-on-failure>
+ <sdncVersion>1610</sdncVersion>
+</network-inputs>"""
+
+
+ String NetworkRequest_noPhysicalName =
+ """<vnfreq:network-request xmlns:vnfreq="http://org.openecomp/mso/infra/vnf-request/v1">
+ <vnfreq:request-info>
+ <vnfreq:request-id>1ef47428-cade-45bd-a103-0751e8b2deb0</vnfreq:request-id>
+ <vnfreq:action>UPDATE</vnfreq:action>
+ <vnfreq:source>PORTAL</vnfreq:source>
+ </vnfreq:request-info>
+ <vnfreq:network-inputs>
+ <vnfreq:network-name>MNS-25180-L-01-dmz_direct_net_1</vnfreq:network-name>
+ <vnfreq:network-type>CONTRAIL_EXTERNAL</vnfreq:network-type>
+ <vnfreq:modelCustomizationId></vnfreq:modelCustomizationId>
+ <vnfreq:service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</vnfreq:service-id>
+ <vnfreq:aic-cloud-region>RDM2WAGPLCP</vnfreq:aic-cloud-region>
+ <vnfreq:tenant-id>7dd5365547234ee8937416c65507d266</vnfreq:tenant-id>
+ <vnfreq:vlans>3008</vnfreq:vlans>
+ </vnfreq:network-inputs>
+ <vnfreq:network-params>
+ <network-params>
+ <param name="dhcp-enabled">true</param>
+ <param name="serviceId">a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</param>
+ <param name="cidr-mask">true</param>
+ <param name="backoutOnFailure">true</param>
+ <param name="gateway-address">10.10.125.1</param>
+ </network-params>
+ </vnfreq:network-params>
+</vnfreq:network-request>"""
+
+ String vnfRequestFakeRegion =
+ """<vnfreq:network-request xmlns:vnfreq="http://org.openecomp/mso/infra/vnf-request/v1">
+ <vnfreq:request-info>
+ <vnfreq:request-id>1ef47428-cade-45bd-a103-0751e8b2deb0</vnfreq:request-id>
+ <vnfreq:action>UPDATE</vnfreq:action>
+ <vnfreq:source>PORTAL</vnfreq:source>
+ </vnfreq:request-info>
+ <vnfreq:network-inputs>
+ <vnfreq:network-name>MNS-25180-L-01-dmz_direct_net_1</vnfreq:network-name>
+ <vnfreq:network-type>CONTRAIL_EXTERNAL</vnfreq:network-type>
+ <vnfreq:service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</vnfreq:service-id>
+ <vnfreq:aic-cloud-region>MDTWNJ21</vnfreq:aic-cloud-region>
+ <vnfreq:tenant-id>7dd5365547234ee8937416c65507d266</vnfreq:tenant-id>
+ </vnfreq:network-inputs>
+ <vnfreq:network-params>
+ <param name="shared">1</param>
+ <param name="external">0</param>
+ </vnfreq:network-params>
+</vnfreq:network-request>"""
+
+ // expectedNetworkRequest
+ String expectedNetworkRequest_Outputs =
+ """<vnfreq:network-request xmlns:vnfreq="http://org.openecomp/mso/infra/vnf-request/v1">
+ <vnfreq:request-info>
+ <vnfreq:request-id>1ef47428-cade-45bd-a103-0751e8b2deb0</vnfreq:request-id>
+ <vnfreq:action>UPDATE</vnfreq:action>
+ <vnfreq:source>PORTAL</vnfreq:source>
+ </vnfreq:request-info>
+ <vnfreq:network-inputs>
+ <vnfreq:network-name>MNS-25180-L-01-dmz_direct_net_1</vnfreq:network-name>
+ <vnfreq:network-type>CONTRAIL_EXTERNAL</vnfreq:network-type>
+ <vnfreq:service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</vnfreq:service-id>
+ <vnfreq:aic-cloud-region>RDM2WAGPLCP</vnfreq:aic-cloud-region>
+ <vnfreq:tenant-id>7dd5365547234ee8937416c65507d266</vnfreq:tenant-id>
+ </vnfreq:network-inputs>
+ <vnfreq:network-outputs>
+ <vnfreq:network-name>MNS-25180-L-01-dmz_direct_net_1</vnfreq:network-name>
+ <vnfreq:network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</vnfreq:network-id>
+ </vnfreq:network-outputs>
+ <vnfreq:network-params>
+ <param name="shared">1</param>
+ <param name="external">0</param>
+ </vnfreq:network-params>
+</vnfreq:network-request>"""
+
+
+ String networkInputs =
+ """<network-inputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ <tenant-id>e81d842d3e8b45c5a59f57cd76af3aaf</tenant-id>
+</network-inputs>"""
+
+ String networkOutputs =
+ """<network-outputs>
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ </network-outputs>"""
+
+ String queryAAIResponse =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:502-132671"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v3">
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <orchestration-status>pending-delete</orchestration-status>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-delete</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <relationship-list>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>85f015d0-2e32-4c30-96d2-87a1a27f8017</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>c980a6ef-3b88-49f0-9751-dbad8608d0a6</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/7dd5365547234ee8937416c65507d266/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>7dd5365547234ee8937416c65507d266</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </l3-network>
+ </rest:payload>
+</rest:RESTResponse>"""
+
+ String queryIdAIIResponse =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:502-132671"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v6">
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <resource-version>l3-version</resource-version>
+ <orchestration-status>pending-delete</orchestration-status>
+ <heat-stack-id>ST_2Bindings_6006/55288ef0-595c-47d3-819e-cf93aaac6326</heat-stack-id>
+ <physical-network-name>networkName</physical-network-name>
+ <is-provider-network>false</is-provider-network>
+ <is-shared-network>true</is-shared-network>
+ <is-external-network>false</is-external-network>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-update</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ <relationship-list/>
+ </subnet>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-delete</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <segmentation-assignments>
+ <segmentation-id>414</segmentation-id>
+ <resource-version>4132176</resource-version>
+ </segmentation-assignments>
+ <segmentation-assignments>
+ <segmentation-id>415</segmentation-id>
+ <resource-version>4132176</resource-version>
+ </segmentation-assignments>
+ <ctag-assignments>
+ <ctag-assignment>
+ <vlan-id-inner>inner</vlan-id-inner>
+ <resource-version>ctag-version</resource-version>
+ <relationship-list>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/897deadc2b954a6bac6d3c197fb3525e/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>897deadc2b954a6bac6d3c197fb3525e</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>tenant.tenant-name</property-key>
+ <property-value>MSOTest1</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/a290b841-f672-44dd-b9cd-6f8c20d7d8c8/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>a290b841-f672-44dd-b9cd-6f8c20d7d8c8</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>oam_protected_net_6_MTN5_msotest2</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/24a4b507-853a-4a38-99aa-05fcc54be24d/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>24a4b507-853a-4a38-99aa-05fcc54be24d</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>oam_protected_net_6_MTN5_msotest1</property-value>
+ </related-to-property>
+ </relationship>
+ </relationship-list>
+ </ctag-assignment>
+ </ctag-assignments>
+ <relationship-list>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>85f015d0-2e32-4c30-96d2-87a1a27f8017</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>c980a6ef-3b88-49f0-9751-dbad8608d0a6</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/7dd5365547234ee8937416c65507d266/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>7dd5365547234ee8937416c65507d266</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>network-policy</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/network-policies/network-policy/cee6d136-e378-4678-a024-2cd15f0ee0cg</related-link>
+ <relationship-data>
+ <relationship-key>network-policy.network-policy-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0cg</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN1</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN2</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </l3-network>
+ </rest:payload>
+</rest:RESTResponse>"""
+
+ String queryIdAIIResponseTestScenario01 =
+ """<?xml version="1.0" encoding="UTF-8"?>
+<l3-network xmlns="http://org.openecomp.aai.inventory/v7">
+ <network-id>4da55fe4-7a9e-478c-a434-8a98d62265ab</network-id>
+ <network-name>GN_EVPN_direct_net_0_ST1</network-name>
+ <network-type>CONTRAIL30_BASIC</network-type>
+ <network-role>GN_EVPN_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <is-bound-to-vpn>false</is-bound-to-vpn>
+ <service-id>9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <resource-version>1465398611</resource-version>
+ <orchestration-status>pending-delete</orchestration-status>
+ <physical-network-name>networkName</physical-network-name>
+ <is-provider-network>false</is-provider-network>
+ <is-shared-network>true</is-shared-network>
+ <is-external-network>false</is-external-network>
+ <subnets>
+ <subnet>
+ <subnet-id>cb1a7b47-5428-44c9-89c2-8b17541c3228</subnet-id>
+ <gateway-address>108.239.40.1</gateway-address>
+ <network-start-address>108.239.40.0</network-start-address>
+ <cidr-mask>28</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-delete</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <dhcp-start>108.239.40.0</dhcp-start>
+ <dhcp-end>108.239.40.0</dhcp-end>
+ <resource-version>1465398611</resource-version>
+ <subnet-name>subnetName</subnet-name>
+ <relationship-list />
+ </subnet>
+ <subnet>
+ <subnet-id>e2cc7c14-90f0-4205-840d-b4e07f04e621</subnet-id>
+ <gateway-address>2606:ae00:2e01:604::1</gateway-address>
+ <network-start-address>2606:ae00:2e01:604::</network-start-address>
+ <cidr-mask>64</cidr-mask>
+ <ip-version>6</ip-version>
+ <orchestration-status>pending-delete</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <dhcp-start>2606:ae00:2e01:604::</dhcp-start>
+ <dhcp-end>2606:ae00:2e01:604::</dhcp-end>
+ <resource-version>1465398611</resource-version>
+ <subnet-name>subnetName</subnet-name>
+ <relationship-list />
+ </subnet>
+ </subnets>
+ <ctag-assignments />
+ <segmentation-assignments>
+ <segmentation-id>416</segmentation-id>
+ <resource-version>4132176</resource-version>
+ </segmentation-assignments>
+ <relationship-list>
+ <relationship>
+ <related-to>cloud-region</related-to>
+ <related-link>https://mtanjv9aaas03.aic.cip.com:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/
+ </related-link>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-region-id</relationship-key>
+ <relationship-value>AAIAIC25</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-owner</relationship-key>
+ <relationship-value>att-aic</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>cloud-region.owner-defined-type</property-key>
+ <property-value></property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://mtanjv9aaas03.aic.cip.com:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/tenants/tenant/4ae1d3446a4c48b2bec44b6cfba06d68/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>4ae1d3446a4c48b2bec44b6cfba06d68
+ </relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-owner</relationship-key>
+ <relationship-value>att-aic</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-region-id</relationship-key>
+ <relationship-value>AAIAIC25</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>tenant.tenant-name</property-key>
+ <property-value>Ruchira Contrail 3.0 test</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://mtanjv9aaas03.aic.cip.com:8443/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>9a7b327d9-287aa00-82c4b0-100001</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>GN_EVPN_direct_net_0_ST1</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+</l3-network>"""
+
+ String queryIdAIIResponseVpnNotPresent =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:502-132671"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v6">
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <orchestration-status>pending-delete</orchestration-status>
+ <physical-network-name>networkName</physical-network-name>
+ <is-provider-network>false</is-provider-network>
+ <is-shared-network>true</is-shared-network>
+ <is-external-network>false</is-external-network>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-delete</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <relationship-list/>
+ </l3-network>
+ </rest:payload>
+</rest:RESTResponse>"""
+
+ String queryNameAIIResponse =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:502-132671"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v6">
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <orchestration-status>pending-delete</orchestration-status>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-delete</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <relationship-list>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>85f015d0-2e32-4c30-96d2-87a1a27f8017</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>c980a6ef-3b88-49f0-9751-dbad8608d0a6</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/7dd5365547234ee8937416c65507d266/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>7dd5365547234ee8937416c65507d266</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </l3-network>
+ </rest:payload>
+ </rest:RESTResponse>"""
+
+ String queryNameAIIResponseVpnNotPresent =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:502-132671"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v6>
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <orchestration-status>pending-delete</orchestration-status>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>pending-delete</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ </l3-network>
+ </rest:payload>
+ </rest:RESTResponse>"""
+
+ String aaiVpnResponseStub =
+ """<rest:payload xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ xmlns="http://org.openecomp.aai.inventory/v8"
+ contentType="text/xml">
+ <vpn-binding>
+ <global-route-target/>
+ </vpn-binding>
+</rest:payload>"""
+
+ String queryVpnBindingAAIResponse =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Mon,14 Mar 2016 20:53:33 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID"
+ value="mtcnjv9aaas01.mtcnj.aic.cip.com-20160314-20:53:33:487-134392"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <vpn-binding xmlns="http://org.openecomp.aai.inventory/v6">
+ <vpn-id>9a7b327d9-287aa00-82c4b0-105757</vpn-id>
+ <vpn-name>GN_EVPN_Test</vpn-name>
+ <global-route-target>13979:105757</global-route-target>
+ <relationship-list>
+ <relationship>
+ <related-to>l3-network</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v3/network/l3-networks/l3-network/689ec39e-c5fc-4462-8db2-4f760763ad28/</related-link>
+ <relationship-data>
+ <relationship-key>l3-network.network-id</relationship-key>
+ <relationship-value>689ec39e-c5fc-4462-8db2-4f760763ad28</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>l3-network</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v3/network/l3-networks/l3-network/1a49396b-19b3-40a4-8792-aa2fbd0f0704/</related-link>
+ <relationship-data>
+ <relationship-key>l3-network.network-id</relationship-key>
+ <relationship-value>1a49396b-19b3-40a4-8792-aa2fbd0f0704</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>l3-network</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v3/network/l3-networks/l3-network/774f3329-3c83-4771-86c7-9e6207cd50fd/</related-link>
+ <relationship-data>
+ <relationship-key>l3-network.network-id</relationship-key>
+ <relationship-value>774f3329-3c83-4771-86c7-9e6207cd50fd</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </vpn-binding>
+ </rest:payload>
+</rest:RESTResponse>"""
+
+
+ String updateNetworkRequest =
+ """<updateNetworkRequest>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <networkId>49c86598-f766-46f8-84f8-8d1c1b10f9b4</networkId>
+ <networkStackId>ST_2Bindings_6006/55288ef0-595c-47d3-819e-cf93aaac6326</networkStackId>
+ <networkName>MNS-25180-L-01-dmz_direct_net_1</networkName>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <modelCustomizationUuid>sn5256d1-5a33-55df-13ab-12abad84e222</modelCustomizationUuid>
+ <networkTypeVersion/>
+ <networkTechnology>CONTRAIL</networkTechnology>
+ <providerVlanNetwork>
+ <physicalNetworkName>networkName</physicalNetworkName>
+ <vlans>414,415</vlans>
+ </providerVlanNetwork>
+ <contrailNetwork>
+ <shared>true</shared>
+ <external>false</external>
+ <routeTargets>13979:105757</routeTargets>
+ <routeTargets>13979:105757</routeTargets>
+ <policyFqdns>GN_EVPN_Test</policyFqdns>
+ <routeTableFqdns>refFQDN1</routeTableFqdns>
+ <routeTableFqdns>refFQDN2</routeTableFqdns>
+ </contrailNetwork>
+ <subnets>
+ <allocationPools>
+ <start/>
+ <end/>
+ </allocationPools>
+ <cidr>107.239.52.0/24</cidr>
+ <enableDHCP>true</enableDHCP>
+ <gatewayIp>107.239.52.1</gatewayIp>
+ <ipVersion>4</ipVersion>
+ <subnetId>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnetId>
+ <subnetName>subnetName</subnetName>
+ </subnets>
+ <skipAAI>true</skipAAI>
+ <backout>true</backout>
+ <failIfExists>false</failIfExists>
+ <msoRequest>
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <serviceInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</serviceInstanceId>
+ </msoRequest>
+ <messageId>messageId_generated</messageId>
+ <notificationUrl/>
+</updateNetworkRequest>"""
+
+String updateNetworkRequest_noPhysicalName =
+"""<updateNetworkRequest>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <networkId>49c86598-f766-46f8-84f8-8d1c1b10f9b4</networkId>
+ <networkStackId>ST_2Bindings_6006/55288ef0-595c-47d3-819e-cf93aaac6326</networkStackId>
+ <networkName>MNS-25180-L-01-dmz_direct_net_1</networkName>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <modelCustomizationUuid/>
+ <networkTypeVersion/>
+ <networkTechnology>CONTRAIL</networkTechnology>
+ <providerVlanNetwork>
+ <physicalNetworkName>networkName</physicalNetworkName>
+ <vlans>414,415</vlans>
+ </providerVlanNetwork>
+ <contrailNetwork>
+ <shared>true</shared>
+ <external>false</external>
+ <routeTargets>13979:105757</routeTargets>
+ <routeTargets>13979:105757</routeTargets>
+ <policyFqdns>GN_EVPN_Test</policyFqdns>
+ </contrailNetwork>
+ <subnets>
+ <allocationPools>
+ <start/>
+ <end/>
+ </allocationPools>
+ <cidr>107.239.52.0/24</cidr>
+ <enableDHCP>true</enableDHCP>
+ <gatewayIp>107.239.52.1</gatewayIp>
+ <ipVersion>4</ipVersion>
+ <subnetId>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnetId>
+ <subnetName>subnetName</subnetName>
+ </subnets>
+ <skipAAI>true</skipAAI>
+ <backout>true</backout>
+ <failIfExists>false</failIfExists>
+ <networkParams>
+ <dhcp-enabled>true</dhcp-enabled>
+ <serviceId>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</serviceId>
+ <cidr-mask>true</cidr-mask>
+ <backoutOnFailure>true</backoutOnFailure>
+ <gateway-address>10.10.125.1</gateway-address>
+ </networkParams>
+ <msoRequest>
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <serviceInstanceId>null</serviceInstanceId>
+ </msoRequest>
+ <messageId>messageId_generated</messageId>
+ <notificationUrl/>
+</updateNetworkRequest>"""
+
+ String updateNetworkResponseREST =
+ """<ns2:updateNetworkContrailResponse xmlns:ns2="http://org.openecomp.mso/network">
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkFqdn>default-domain:MSOTest:GN_EVPN_direct_net_0_ST1</networkFqdn>
+ <networkStackId></networkStackId>
+ <subnetMap>
+ <entry>
+ <key>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</key>
+ <value>bd8e87c6-f4e2-41b8-b0bc-9596aa00cd73</value>
+ </entry>
+ <entry>
+ <key>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</key>
+ <value>bd8e87c6-f4e2-41b8-b0bc-9596aa00cd73</value>
+ </entry>
+ </subnetMap>
+ <rollback>
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkStackId></networkStackId>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <networkUpdated>true</networkUpdated>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <msoRequest>
+ <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+ <serviceInstanceId></serviceInstanceId>
+ </msoRequest>
+ </rollback>
+ <messageId>messageId_generated</messageId>
+</ns2:updateNetworkContrailResponse>"""
+
+ String updateRollbackNetworkRequest =
+ """<rollbackNetworkRequest>
+ <networkRollback>
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkStackId/>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <networkUpdated>true</networkUpdated>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <msoRequest>
+ <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+ <serviceInstanceId/>
+ </msoRequest>
+ </networkRollback>
+</rollbackNetworkRequest>"""
+
+ String updateNetworkResponse =
+ """<ns2:updateNetworkContrailResponse xmlns:ns2="http://org.openecomp.mso/network"
+ xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkStackId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkStackId>
+ <networkFqdn>default-domain:MSOTest:GN_EVPN_direct_net_0_ST1</networkFqdn>
+ <subnetIdMap>
+ <entry>
+ <key>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</key>
+ <value>bd8e87c6-f4e2-41b8-b0bc-9596aa00cd73</value>
+ </entry>
+ </subnetIdMap>
+ <rollback>
+ <cloudId>RDM2WAGPLCP</cloudId>
+ <msoRequest>
+ <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+ <serviceInstanceId/>
+ </msoRequest>
+ <networkUpdated>true</networkUpdated>
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <networkUpdated>false</networkUpdated>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ </rollback>
+</ns2:updateNetworkContrailResponse>"""
+
+ String updateContrailAAIPayloadRequest =
+ """<l3-network xmlns="http://org.openecomp.aai.inventory/v9">
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-role>dmz_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <neutron-network-id>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutron-network-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <network-role-instance>0</network-role-instance>
+ <resource-version>l3-version</resource-version>
+ <orchestration-status>Active</orchestration-status>
+ <heat-stack-id>ST_2Bindings_6006/55288ef0-595c-47d3-819e-cf93aaac6326</heat-stack-id>
+ <contrail-network-fqdn>default-domain:MSOTest:GN_EVPN_direct_net_0_ST1</contrail-network-fqdn>
+ <physical-network-name>networkName</physical-network-name>
+ <is-provider-network>false</is-provider-network>
+ <is-shared-network>true</is-shared-network>
+ <is-external-network>false</is-external-network>
+ <subnets>
+ <subnet>
+ <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+ <neutron-subnet-id>bd8e87c6-f4e2-41b8-b0bc-9596aa00cd73</neutron-subnet-id>
+ <gateway-address>107.239.52.1</gateway-address>
+ <network-start-address>107.239.52.0</network-start-address>
+ <cidr-mask>24</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>Active</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <subnet-name>subnetName</subnet-name>
+ </subnet>
+ </subnets>
+ <segmentation-assignments>
+ <segmentation-id>414</segmentation-id>
+ <resource-version>4132176</resource-version>
+ </segmentation-assignments>
+ <segmentation-assignments>
+ <segmentation-id>415</segmentation-id>
+ <resource-version>4132176</resource-version>
+ </segmentation-assignments>
+ <ctag-assignments>
+ <ctag-assignment>
+ <vlan-id-inner>inner</vlan-id-inner>
+ <resource-version>ctag-version</resource-version>
+ <relationship-list>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/897deadc2b954a6bac6d3c197fb3525e/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>897deadc2b954a6bac6d3c197fb3525e</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>tenant.tenant-name</property-key>
+ <property-value>MSOTest1</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/a290b841-f672-44dd-b9cd-6f8c20d7d8c8/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>a290b841-f672-44dd-b9cd-6f8c20d7d8c8</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>oam_protected_net_6_MTN5_msotest2</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/24a4b507-853a-4a38-99aa-05fcc54be24d/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>24a4b507-853a-4a38-99aa-05fcc54be24d</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vpn-binding.vpn-name</property-key>
+ <property-value>oam_protected_net_6_MTN5_msotest1</property-value>
+ </related-to-property>
+ </relationship>
+ </relationship-list>
+ </ctag-assignment>
+ </ctag-assignments>
+ <relationship-list>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>85f015d0-2e32-4c30-96d2-87a1a27f8017</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>vpn-binding</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/</related-link>
+ <relationship-data>
+ <relationship-key>vpn-binding.vpn-id</relationship-key>
+ <relationship-value>c980a6ef-3b88-49f0-9751-dbad8608d0a6</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/7dd5365547234ee8937416c65507d266/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>7dd5365547234ee8937416c65507d266</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>network-policy</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/network-policies/network-policy/cee6d136-e378-4678-a024-2cd15f0ee0cg</related-link>
+ <relationship-data>
+ <relationship-key>network-policy.network-policy-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0cg</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN1</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ <relationship>
+ <related-to>route-table-reference</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN2</related-link>
+ <relationship-data>
+ <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+ <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+</l3-network>"""
+
+
+ String updateContrailAAIResponse =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+ <rest:header name="Content-Length" value="0"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:551-132672"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+</rest:RESTResponse>"""
+
+ String updateNetworkErrorResponse =
+ """<updateNetworkError>
+ <messageId>680bd458-5ec1-4a16-b77c-509022e53450</messageId><category>INTERNAL</category>
+ <message>400 Bad Request: The server could not comply with the request since it is either malformed or otherwise incorrect., error.type=StackValidationFailed, error.message=Property error: : resources.network.properties: : Unknown Property network_ipam_refs_data</message>
+ <rolledBack>true</rolledBack>
+ </updateNetworkError>"""
+
+
+ String networkException500 =
+ """<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:VersionMismatch</faultcode><faultstring>"http://org.openecomp.mso/network", the namespace on the "updateNetworkContrail" element, is not a valid SOAP version.</faultstring></soap:Fault></soap:Body></soap:Envelope>"""
+
+ String aaiResponse =
+ """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+ statusCode="200">
+ <rest:headers>
+ <rest:header name="Transfer-Encoding" value="chunked"/>
+ <rest:header name="Date" value="Sat,30 Jan 2016 20:09:24 GMT"/>
+ <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+ <rest:header name="X-AAI-TXID"
+ value="mtcnjv9aaas01.mtcnj.aic.cip.com-20160130-20:09:24:814-165843"/>
+ <rest:header name="Content-Type" value="application/xml"/>
+ <rest:header name="Server" value="Apache-Coyote/1.1"/>
+ <rest:header name="Cache-Control" value="private"/>
+ </rest:headers>
+ <rest:payload contentType="text/xml">
+ <l3-network xmlns="http://org.openecomp.aai.inventory/v3">
+ <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
+ <network-name>HSL_direct_net_2</network-name>
+ <network-type>CONTRAIL_BASIC</network-type>
+ <network-role>HSL_direct</network-role>
+ <network-technology>contrail</network-technology>
+ <neutron-network-id>8bbd3edf-b835-4610-96a2-a5cafa029042</neutron-network-id>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <orchestration-status>active</orchestration-status>
+ <heat-stack-id>HSL_direct_net_2/57594a56-1c92-4a38-9caa-641c1fa3d4b6</heat-stack-id>
+ <subnets>
+ <subnet>
+ <subnet-id>ea5f2a2c-604f-47ff-a9c5-253ee4f0ef0a</subnet-id>
+ <neutron-subnet-id>5a77fdc2-7789-4649-a1b9-6eaf1db1813a</neutron-subnet-id>
+ <gateway-address>172.16.34.1</gateway-address>
+ <network-start-address>172.16.34.0</network-start-address>
+ <cidr-mask>28</cidr-mask>
+ <ip-version>4</ip-version>
+ <orchestration-status>active</orchestration-status>
+ <dhcp-enabled>true</dhcp-enabled>
+ <relationship-list/>
+ </subnet>
+ </subnets>
+ <relationship-list>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-app-e2e.test.com:8443/aai/v3/cloud-infrastructure/tenants/tenant/e81d842d3e8b45c5a59f57cd76af3aaf/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>e81d842d3e8b45c5a59f57cd76af3aaf</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </l3-network>
+ </rest:payload>
+ </rest:RESTResponse>"""
+
+ String changeAssignSDNCRequest =
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>changeassign</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>NetworkActivateRequest</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type>MSO-dev-service-type</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-request-information>
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+String assignResponse =
+"""<sdncadapterworkflow:SDNCAdapterWorkflowResponse xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" xmlns:tag0="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <sdncadapterworkflow:response-data> <tag0:CallbackHeader> <tag0:RequestId>006927ca-f5a3-47fd-880c-dfcbcd81a093</tag0:RequestId> <tag0:ResponseCode>200</tag0:ResponseCode> <tag0:ResponseMessage>OK</tag0:ResponseMessage> </tag0:CallbackHeader> <tag0:RequestData xsi:type="xs:string"><output xmlns="com:att:sdnctl:vnf"><response-code>200</response-code><svc-request-id>006927ca-f5a3-47fd-880c-dfcbcd81a093</svc-request-id><ack-final-indicator>Y</ack-final-indicator><service-information><subscriber-name>notsurewecare</subscriber-name><service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id><service-instance-id>GN_EVPN_direct_net_0_ST_noGW</service-instance-id></service-information><network-information><network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id></network-information></output></tag0:RequestData> </sdncadapterworkflow:response-data> </sdncadapterworkflow:SDNCAdapterWorkflowResponse>"""
+
+ String sdncRollbackRequest =
+ """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>NetworkActivateRequest</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type>MSO-dev-service-type</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-request-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+ String sdncAdapterWorkflowResponse =
+ """<aetgt:SDNCAdapterWorkflowResponse xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1">
+ <sdncadapterworkflow:response-data>
+<tag0:CallbackHeader xmlns:tag0="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <tag0:RequestId>745b1b50-e39e-4685-9cc8-c71f0bde8bf0</tag0:RequestId>
+ <tag0:ResponseCode>200</tag0:ResponseCode>
+ <tag0:ResponseMessage>OK</tag0:ResponseMessage>
+</tag0:CallbackHeader>
+ <tag0:RequestData xmlns:tag0="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:type="xs:string"><output xmlns="com:att:sdnctl:vnf"><svc-request-id>00703dc8-71ff-442d-a4a8-3adc5beef6a9</svc-request-id><response-code>200</response-code><ack-final-indicator>Y</ack-final-indicator><network-information><network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id></network-information><service-information><service-type>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-type><service-instance-id>MNS-25180-L-01-dmz_direct_net_1</service-instance-id><subscriber-name>notsurewecare</subscriber-name></service-information></output></tag0:RequestData>
+ </sdncadapterworkflow:response-data>
+</aetgt:SDNCAdapterWorkflowResponse>"""
+
+
+ String sdncAdapterWorkflowResponse_Error =
+ """<sdncadapterworkflow:SDNCAdapterWorkflowResponse xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:tag0="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="com:att:sdnctl:vnf">
+ <sdncadapterworkflow:response-data>
+ <tag0:RequestData xsi:type="xs:string">
+ <output>
+ <response-code>400</response-code>
+ <response-message>Error writing to l3-netework</response-message>
+ <ack-final-indicator>Y</ack-final-indicator>
+ <svc-request-id>c79240d8-34b5-4853-af69-2021928dba00</svc-request-id>
+ </output>
+ </tag0:RequestData>
+ </sdncadapterworkflow:response-data>
+</sdncadapterworkflow:SDNCAdapterWorkflowResponse>"""
+
+ String expected_sdncAdapterWorkflowResponse_Error =
+ """<sdncadapterworkflow:SDNCAdapterWorkflowResponse xmlns="com:att:sdnctl:vnf"
+ xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:tag0="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <sdncadapterworkflow:response-data>
+ <tag0:RequestData xsi:type="xs:string">
+ <output>
+ <response-code>400</response-code>
+ <response-message>Error writing to l3-netework</response-message>
+ <ack-final-indicator>Y</ack-final-indicator>
+ <svc-request-id>c79240d8-34b5-4853-af69-2021928dba00</svc-request-id>
+ </output>
+ </tag0:RequestData>
+ </sdncadapterworkflow:response-data>
+</sdncadapterworkflow:SDNCAdapterWorkflowResponse>"""
+
+ String sdncAdapterWorkflowFormattedResponse =
+ """<aetgt:SDNCAdapterWorkflowResponse xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns="com:att:sdnctl:vnf">
+ <aetgt:response-data>
+ <output>
+ <svc-request-id>00703dc8-71ff-442d-a4a8-3adc5beef6a9</svc-request-id>
+ <response-code>200</response-code>
+ <ack-final-indicator>Y</ack-final-indicator>
+ <network-information>
+ <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+ </network-information>
+ <service-information>
+ <service-type>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>notsurewecare</subscriber-name>
+ </service-information>
+ </output>
+ </aetgt:response-data>
+</aetgt:SDNCAdapterWorkflowResponse>"""
+
+String rollbackSDNCRequest =
+"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+ </sdncadapter:RequestHeader>
+ <aetgt:SDNCRequestData>
+ <request-information>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <request-action>CreateNetworkInstance</request-action>
+ <source>VID</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+ <service-type>MSO-dev-service-type</service-type>
+ <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+ <subscriber-name>MSO_1610_dev</subscriber-name>
+ </service-information>
+ <network-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <ecomp-model-information>
+ <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
+ <model-customization-uuid>customization-uuid</model-customization-uuid>
+ <model-uuid>uuid</model-uuid>
+ <model-version>version</model-version>
+ <model-name>CONTRAIL_EXTERNAL</model-name>
+ </ecomp-model-information>
+ </network-information>
+ <network-request-information>
+ <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+ <network-type>CONTRAIL_EXTERNAL</network-type>
+ <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+ <tenant>7dd5365547234ee8937416c65507d266</tenant>
+ <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+ </network-request-information>
+ </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+String rollbackNetworkRequest =
+"""<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">
+ <rollback>
+ <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+ <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+ <networkStackId/>
+ <networkType>CONTRAIL_EXTERNAL</networkType>
+ <networkCreated>true</networkCreated>
+ <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+ <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+ <msoRequest>
+ <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+ <serviceInstanceId/>
+ </msoRequest>
+ </rollback>
+</NetworkAdapter:rollbackNetwork>"""
+
+// - - - - - - - -
+
+
+ @Before
+ public void init()
+ {
+ MockitoAnnotations.initMocks(this)
+
+ }
+
+ public void initializeVariables (Execution mockExecution) {
+
+ verify(mockExecution).setVariable(Prefix + "messageId", "")
+ verify(mockExecution).setVariable("BasicAuthHeaderValuePO", "")
+ verify(mockExecution).setVariable("BasicAuthHeaderValueSDNC", "")
+ verify(mockExecution).setVariable(Prefix + "networkRequest", "")
+ verify(mockExecution).setVariable(Prefix + "networkInputs", "")
+ verify(mockExecution).setVariable(Prefix + "networkOutputs", "")
+ verify(mockExecution).setVariable(Prefix + "requestId", "")
+ verify(mockExecution).setVariable(Prefix + "source", "")
+ verify(mockExecution).setVariable(Prefix + "networkId", "")
+
+ verify(mockExecution).setVariable(Prefix + "isPONR", false)
+
+ // AAI query Cloud Region
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionRequest","")
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionReturnCode","")
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionResponse","")
+ verify(mockExecution).setVariable(Prefix + "cloudRegionPo","")
+ verify(mockExecution).setVariable(Prefix + "cloudRegionSdnc","")
+ verify(mockExecution).setVariable(Prefix + "isCloudRegionGood", false)
+
+ // AAI query Id
+ verify(mockExecution).setVariable(Prefix + "queryIdAAIRequest","")
+ verify(mockExecution).setVariable(Prefix + "queryIdAAIResponse", "")
+ verify(mockExecution).setVariable(Prefix + "aaiIdReturnCode", "")
+
+ // AAI query vpn binding
+ verify(mockExecution).setVariable(Prefix + "queryVpnBindingAAIRequest","")
+ verify(mockExecution).setVariable(Prefix + "queryVpnBindingAAIResponse", "")
+ verify(mockExecution).setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "vpnBindings", null)
+ verify(mockExecution).setVariable(Prefix + "vpnCount", 0)
+ verify(mockExecution).setVariable(Prefix + "routeCollection", "")
+
+ // AAI query network policy
+ verify(mockExecution).setVariable(Prefix + "queryNetworkPolicyAAIRequest","")
+ verify(mockExecution).setVariable(Prefix + "queryNetworkPolicyAAIResponse", "")
+ verify(mockExecution).setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "networkPolicyUriList", null)
+ verify(mockExecution).setVariable(Prefix + "networkPolicyCount", 0)
+ verify(mockExecution).setVariable(Prefix + "networkCollection", "")
+
+ // AAI query route table reference
+ verify(mockExecution).setVariable(Prefix + "queryNetworkTableRefAAIRequest","")
+ verify(mockExecution).setVariable(Prefix + "queryNetworkTableRefAAIResponse", "")
+ verify(mockExecution).setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "networkTableRefUriList", null)
+ verify(mockExecution).setVariable(Prefix + "networkTableRefCount", 0)
+ verify(mockExecution).setVariable(Prefix + "tableRefCollection", "")
+
+
+ // AAI requery Id
+ verify(mockExecution).setVariable(Prefix + "requeryIdAAIRequest","")
+ verify(mockExecution).setVariable(Prefix + "requeryIdAAIResponse", "")
+ verify(mockExecution).setVariable(Prefix + "aaiRequeryIdReturnCode", "")
+
+ // AAI update contrail
+ verify(mockExecution).setVariable(Prefix + "updateContrailAAIUrlRequest","")
+ verify(mockExecution).setVariable(Prefix + "updateContrailAAIPayloadRequest","")
+ verify(mockExecution).setVariable(Prefix + "updateContrailAAIResponse", "")
+ verify(mockExecution).setVariable(Prefix + "aaiUpdateContrailReturnCode", "")
+
+ verify(mockExecution).setVariable(Prefix + "updateNetworkRequest", "")
+ verify(mockExecution).setVariable(Prefix + "updateNetworkResponse", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", "")
+ //verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")
+ verify(mockExecution).setVariable(Prefix + "networkReturnCode", "")
+ //verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "isNetworkRollbackNeeded", false)
+
+ verify(mockExecution).setVariable(Prefix + "changeAssignSDNCRequest", "")
+ verify(mockExecution).setVariable(Prefix + "changeAssignSDNCResponse", "")
+ verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", "")
+ //verify(mockExecution).setVariable(Prefix + "rollbackSDNCResponse", "")
+ verify(mockExecution).setVariable(Prefix + "sdncReturnCode", "")
+ //verify(mockExecution).setVariable(Prefix + "rollbackSDNCReturnCode", "")
+ verify(mockExecution).setVariable(Prefix + "isSdncRollbackNeeded", false)
+ verify(mockExecution).setVariable(Prefix + "sdncResponseSuccess", false)
+
+ verify(mockExecution).setVariable(Prefix + "isVnfBindingPresent", false)
+ verify(mockExecution).setVariable(Prefix + "Success", false)
+ verify(mockExecution).setVariable(Prefix + "serviceInstanceId", "")
+
+ verify(mockExecution).setVariable(Prefix + "isException", false)
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest_NetworkRequest() {
+
+ println "************ preProcessRequest_Payload ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("isBaseVfModule")).thenReturn(true)
+ when(mockExecution.getVariable("recipeTimeout")).thenReturn(0)
+ when(mockExecution.getVariable("requestAction")).thenReturn("UPDATE")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("vnfId")).thenReturn("")
+ when(mockExecution.getVariable("volumeGroupId")).thenReturn("")
+ when(mockExecution.getVariable("networkId")).thenReturn("49c86598-f766-46f8-84f8-8d1c1b10f9b4")
+ when(mockExecution.getVariable("serviceType")).thenReturn("MOG")
+ when(mockExecution.getVariable("networkType")).thenReturn("modelName")
+ when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest)
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1610")
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
+ when(mockExecution.getVariable("disableRollback")).thenReturn("true")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.preProcessRequest(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+ // Authentications
+ verify(mockExecution).setVariable("action", "UPDATE")
+ verify(mockExecution).setVariable(Prefix + "networkRequest", expectedNetworkRequest)
+ verify(mockExecution).setVariable(Prefix + "rollbackEnabled", false)
+ verify(mockExecution).setVariable(Prefix + "networkInputs", expectedNetworkInputs)
+ verify(mockExecution).setVariable("BasicAuthHeaderValuePO", "Basic cGFzc3dvcmQ=")
+ verify(mockExecution).setVariable("BasicAuthHeaderValueSDNC", "Basic cGFzc3dvcmQ=")
+ verify(mockExecution).setVariable(Prefix + "networkOutputs", "")
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest_vPERNetworkRequest() {
+
+ def networkModelInfo = """{"modelUuid": "sn5256d1-5a33-55df-13ab-12abad84e111",
+ "modelName": "CONTRAIL_EXTERNAL",
+ "modelType": "CONTRAIL_EXTERNAL",
+ "modelVersion": "1",
+ "modelCustomizationUuid": "sn5256d1-5a33-55df-13ab-12abad84e222",
+ "modelInvariantUuid": "sn5256d1-5a33-55df-13ab-12abad84e764"
+ }""".trim()
+
+ println "************ preProcessRequest_Payload ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("msoRequestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("disableRollback")).thenReturn("true")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("networkId")).thenReturn("49c86598-f766-46f8-84f8-8d1c1b10f9b4") // optional
+ when(mockExecution.getVariable("networkName")).thenReturn("MNS-25180-L-01-dmz_direct_net_1") // optional
+ when(mockExecution.getVariable("productFamilyId")).thenReturn("a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb")
+ when(mockExecution.getVariable("networkModelInfo")).thenReturn("CONTRAIL_EXTERNAL")
+ when(mockExecution.getVariable("lcpCloudRegionId")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable("tenantId")).thenReturn("7dd5365547234ee8937416c65507d266")
+ when(mockExecution.getVariable("failIfExists")).thenReturn("false")
+ when(mockExecution.getVariable("networkModelInfo")).thenReturn(networkModelInfo)
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1702")
+ when(mockExecution.getVariable("action")).thenReturn("UPDATE")
+ when(mockExecution.getVariable("subscriptionServiceType")).thenReturn("MSO-dev-service-type")
+ when(mockExecution.getVariable("globalSubscriberId")).thenReturn("globalId_45678905678")
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+
+ when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+
+ when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:8090/SDNCAdapter")
+ when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter")
+ when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:8090/SDNCAdapterRpc")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.preProcessRequest(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+ // Authentications
+ verify(mockExecution).setVariable("action", "UPDATE")
+ verify(mockExecution).setVariable(Prefix + "networkRequest", expectedVperNetworkRequest)
+ verify(mockExecution).setVariable(Prefix + "rollbackEnabled", false)
+ verify(mockExecution).setVariable(Prefix + "networkInputs", expectedVperNetworkInputs)
+ verify(mockExecution).setVariable("BasicAuthHeaderValuePO", "Basic cGFzc3dvcmQ=")
+ verify(mockExecution).setVariable("BasicAuthHeaderValueSDNC", "Basic cGFzc3dvcmQ=")
+ verify(mockExecution).setVariable(Prefix + "networkOutputs", "")
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest_MissingNetworkId() {
+
+ println "************ preProcessRequest_MissingName() ************* "
+
+ WorkflowException missingNameWorkflowException = new WorkflowException("DoUpdateNetworkInstance", 2500, "Variable 'network-id' value/element is missing.")
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("isBaseVfModule")).thenReturn(true)
+ when(mockExecution.getVariable("recipeTimeout")).thenReturn(0)
+ when(mockExecution.getVariable("requestAction")).thenReturn("UPDATE")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("vnfId")).thenReturn("")
+ when(mockExecution.getVariable("volumeGroupId")).thenReturn("")
+ //when(mockExecution.getVariable("networkId")).thenReturn("49c86598-f766-46f8-84f8-8d1c1b10f9b4")
+ when(mockExecution.getVariable("serviceType")).thenReturn("MOG")
+ when(mockExecution.getVariable("networkType")).thenReturn("modelName")
+ when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest)
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1610")
+
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
+ when(mockExecution.getVariable("disableRollback")).thenReturn("true")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ try {
+ DoUpdateNetworkInstance.preProcessRequest(mockExecution)
+ } catch (Exception ex) {
+ println " Test End - Handle catch-throw BpmnError()! "
+ }
+
+ verify(mockExecution, atLeast(1)).getVariable("isDebugLogEnabled")
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix + "")
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+ verify(mockExecution).setVariable("action", "UPDATE")
+ verify(mockExecution).setVariable(Prefix + "networkRequest", expectedNetworkRequestMissingNetworkId)
+ verify(mockExecution).setVariable(Prefix + "rollbackEnabled", false)
+ verify(mockExecution).setVariable(Prefix + "networkInputs", expectedNetworkInputsMissingNetworkId)
+ verify(mockExecution).setVariable(Prefix + "messageId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ verify(mockExecution).setVariable(Prefix + "source", "VID")
+ verify(mockExecution).setVariable(Prefix + "networkOutputs", "")
+
+ verify(mockExecution).setVariable(eq("WorkflowException"), refEq(missingNameWorkflowException))
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest_MissingCloudRegion() {
+
+ println "************ preProcessRequest_MissingCloudRegion() ************* "
+
+ WorkflowException missingCloudRegionWorkflowException = new WorkflowException("DoUpdateNetworkInstance", 2500, "requestDetails has missing 'aic-cloud-region' value/element.")
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("isBaseVfModule")).thenReturn(true)
+ when(mockExecution.getVariable("recipeTimeout")).thenReturn(0)
+ when(mockExecution.getVariable("requestAction")).thenReturn("UPDATE")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("vnfId")).thenReturn("")
+ when(mockExecution.getVariable("volumeGroupId")).thenReturn("")
+ when(mockExecution.getVariable("networkId")).thenReturn("networkId")
+ when(mockExecution.getVariable("serviceType")).thenReturn("MOG")
+ when(mockExecution.getVariable("networkType")).thenReturn("modelName")
+
+ when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest_MissingCloudRegion)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
+ when(mockExecution.getVariable("disableRollback")).thenReturn("true")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ try {
+ DoUpdateNetworkInstance.preProcessRequest(mockExecution)
+ } catch (Exception ex) {
+ println " Test End - Handle catch-throw BpmnError()! "
+ }
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution, atLeast(1)).getVariable("isDebugLogEnabled")
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix + "")
+
+ //verify variable initialization
+ initializeVariables(mockExecution)
+
+ verify(mockExecution).setVariable("action", "UPDATE")
+ verify(mockExecution).setVariable(Prefix + "networkRequest", expectedNetworkRequestMissingCloudRegion)
+ verify(mockExecution).setVariable(Prefix + "rollbackEnabled", false)
+ verify(mockExecution).setVariable(Prefix + "networkInputs", expectedNetworkInputMissingCloudRegion)
+ verify(mockExecution).setVariable(Prefix + "messageId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ verify(mockExecution).setVariable(Prefix + "source", "VID")
+
+ verify(mockExecution).setVariable(eq("WorkflowException"), refEq(missingCloudRegionWorkflowException))
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareUpdateNetworkRequest() {
+
+ println "************ prepareNetworkRequest ************* "
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedVperNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "requeryIdAAIResponse")).thenReturn(queryIdAIIResponse)
+ when(mockExecution.getVariable(Prefix + "cloudRegionPo")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("messageId_generated")
+ when(mockExecution.getVariable(Prefix + "source")).thenReturn("VID")
+ //when(mockExecution.getVariable(Prefix + "queryVpnBindingAAIResponse")).thenReturn(queryVpnBindingAAIResponse)
+ when(mockExecution.getVariable(Prefix + "routeCollection")).thenReturn("<routeTargets>13979:105757</routeTargets><routeTargets>13979:105757</routeTargets>")
+ when(mockExecution.getVariable(Prefix + "networkCollection")).thenReturn("<policyFqdns>GN_EVPN_Test</policyFqdns>")
+ when(mockExecution.getVariable(Prefix + "tableRefCollection")).thenReturn("<routeTableFqdns>refFQDN1</routeTableFqdns><routeTableFqdns>refFQDN2</routeTableFqdns>")
+ when(mockExecution.getVariable(Prefix + "requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //when(mockExecution.getVariable("URN_?????")).thenReturn("") // notificationUrl, //TODO - is this coming from URN? What variable/value to use?
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("true")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.prepareUpdateNetworkRequest(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+
+ verify(mockExecution).setVariable(Prefix + "updateNetworkRequest", updateNetworkRequest)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void prepareUpdateNetworkRequest_NoPhysicalname() {
+
+ println "************ prepareNetworkRequest ************* "
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(NetworkRequest_noPhysicalName)
+ when(mockExecution.getVariable(Prefix + "requeryIdAAIResponse")).thenReturn(queryIdAIIResponse)
+ when(mockExecution.getVariable(Prefix + "cloudRegionPo")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("messageId_generated")
+ when(mockExecution.getVariable(Prefix + "source")).thenReturn("VID")
+ //when(mockExecution.getVariable(Prefix + "queryVpnBindingAAIResponse")).thenReturn(queryVpnBindingAAIResponse)
+ when(mockExecution.getVariable(Prefix + "routeCollection")).thenReturn("<routeTargets>13979:105757</routeTargets><routeTargets>13979:105757</routeTargets>")
+ when(mockExecution.getVariable(Prefix + "networkCollection")).thenReturn("<policyFqdns>GN_EVPN_Test</policyFqdns>")
+ when(mockExecution.getVariable(Prefix + "tableRefCollection")).thenReturn("")
+ when(mockExecution.getVariable(Prefix + "requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ //when(mockExecution.getVariable("URN_?????")).thenReturn("") // notificationUrl, //TODO - is this coming from URN? What variable/value to use?
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("true")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.prepareUpdateNetworkRequest(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+
+ verify(mockExecution).setVariable(Prefix + "updateNetworkRequest", updateNetworkRequest_noPhysicalName)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareSDNCRequest() {
+
+ println "************ prepareSDNCRequest ************* "
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "cloudRegionSdnc")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("URN_mso_workflow_sdncadapter_callback")).thenReturn("http://localhost:8090/SDNCAdapterCallback")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
+
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.prepareSDNCRequest(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "changeAssignSDNCRequest", changeAssignSDNCRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareSDNCRollbackRequest() {
+
+ println "************ prepareSDNCRollbackRequest ************* "
+
+
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "cloudRegionSdnc")).thenReturn("RDM2WAGPLCP")
+ when(mockExecution.getVariable(Prefix + "serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+ when(mockExecution.getVariable(Prefix + "changeAssignSDNCResponse")).thenReturn(assignResponse)
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("testMessageId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("URN_mso_workflow_sdncadapter_callback")).thenReturn("http://localhost:8090/SDNCAdapterCallback")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.prepareSDNCRollbackRequest(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", sdncRollbackRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkId_200() {
+
+ println "************ callRESTQueryAAINetworkId ************* "
+
+ WireMock.reset();
+ MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "UpdateNetworkV2/updateNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_DoUpdateNetworkInstance_aai_l3_network_uri")).thenReturn("/aai/v9/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.callRESTQueryAAINetworkId(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "queryIdAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=1")
+ verify(mockExecution).setVariable(Prefix + "aaiIdReturnCode", "200")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAICloudRegion30_200() {
+
+ println "************ callRESTQueryAAICloudRegion30_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion30_AAIResponse_Success.xml", "RDM2WAGPLCP");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionRequest", "http://localhost:8090/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/RDM2WAGPLCP")
+ verify(mockExecution, atLeast(2)).setVariable(Prefix + "queryCloudRegionReturnCode", "200")
+ verify(mockExecution).setVariable(Prefix + "isCloudRegionGood", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAICloudRegion25_200() {
+
+ println "************ callRESTQueryAAICloudRegion25_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionRequest", "http://localhost:8090/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/RDM2WAGPLCP")
+ verify(mockExecution, atLeast(2)).setVariable(Prefix + "queryCloudRegionReturnCode", "200")
+ verify(mockExecution).setVariable(Prefix + "isCloudRegionGood", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAICloudRegion_NotFound() {
+
+ println "************ callRESTQueryAAICloudRegionFake ************* "
+
+ WireMock.reset();
+ MockGetNetworkCloudRegion_404("MDTWNJ21");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(vnfRequestFakeRegion)
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_cloud_region_uri")).thenReturn("/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "queryCloudRegionRequest", "http://localhost:8090/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/MDTWNJ21")
+ verify(mockExecution, atLeast(1)).setVariable(Prefix + "queryCloudRegionReturnCode", "404")
+ verify(mockExecution).setVariable(Prefix + "cloudRegionPo", "MDTWNJ21")
+ verify(mockExecution).setVariable(Prefix + "cloudRegionSdnc", "AAIAIC25")
+ verify(mockExecution).setVariable(Prefix + "isCloudRegionGood", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkVpnBinding_200() {
+
+ println "************ callRESTQueryAAINetworkVpnBinding_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
+ MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "requeryIdAAIResponse")).thenReturn(queryIdAIIResponse) // v6
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_vpn_binding_uri")).thenReturn("/aai/v8/network/vpn-bindings/vpn-binding")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "vpnCount", 2)
+ verify(mockExecution).setVariable(Prefix + "vpnBindings", ['/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/', '/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/'])
+ // the last vpnBinding value is saved.
+ verify(mockExecution).setVariable(Prefix + "queryVpnBindingAAIRequest", "http://localhost:8090/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017?depth=all")
+ verify(mockExecution, atLeast(2)).setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkVpnBinding_TestScenario01_200() {
+
+ println "************ callRESTQueryAAINetworkVpnBinding_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "requeryIdAAIResponse")).thenReturn(queryIdAIIResponseTestScenario01)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_vpn_binding_uri")).thenReturn("/aai/v8/network/vpn-bindings/vpn-binding")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "vpnCount", 1)
+ verify(mockExecution).setVariable(Prefix + "vpnBindings", ['/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/'])
+ // the last vpnBinding value is saved.
+ verify(mockExecution).setVariable(Prefix + "queryVpnBindingAAIRequest", "http://localhost:8090/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017?depth=all")
+ verify(mockExecution).setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkVpnBinding_200_URN_Uri() {
+
+ println "************ callRESTQueryAAINetworkVpnBinding_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
+ MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "requeryIdAAIResponse")).thenReturn(queryIdAIIResponse)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_vpn_binding_uri")).thenReturn("/aai/v8/network/vpn-bindings/vpn-binding")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "vpnCount", 2)
+ verify(mockExecution).setVariable(Prefix + "vpnBindings", ['/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/', '/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/'])
+ // the last vpnBinding value is saved.
+ verify(mockExecution).setVariable(Prefix + "queryVpnBindingAAIRequest", "http://localhost:8090/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017?depth=all")
+ verify(mockExecution, atLeast(2)).setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkVpnBinding_NotPresent() {
+
+ println "************ callRESTQueryAAINetworkVpnBinding_NotPresent ************* "
+
+ WireMock.reset();
+ MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+
+ when(mockExecution.getVariable(Prefix + "requeryIdAAIResponse")).thenReturn(queryIdAIIResponseVpnNotPresent)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_l3_network_uri")).thenReturn("/aai/v8/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200")
+ verify(mockExecution).setVariable(Prefix + "vpnCount", 0)
+ verify(mockExecution).setVariable(Prefix + "queryVpnBindingAAIResponse", aaiVpnResponseStub)
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkTableRef_200() {
+
+ println "************ callRESTQueryAAINetworkTableRef_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkTableReference("UpdateNetworkV2/updateNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1");
+ MockGetNetworkTableReference("UpdateNetworkV2/updateNetwork_queryNetworkTableRef2_AAIResponse_Success.xml", "refFQDN2");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "requeryIdAAIResponse")).thenReturn(queryIdAIIResponse)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_network_table_reference_uri")).thenReturn("")
+ when(mockExecution.getVariable("URN_mso_workflow_DoUpdateNetworkInstance_aai_route_table_reference_uri")).thenReturn("/aai/v8/network/route-table-references/route-table-reference")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.callRESTQueryAAINetworkTableRef(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "networkTableRefCount", 2)
+ verify(mockExecution).setVariable(Prefix + "networkTableRefUriList", ['/aai/v8/network/route-table-references/route-table-reference/refFQDN1','/aai/v8/network/route-table-references/route-table-reference/refFQDN2'])
+ // the last vpnBinding value is saved.
+ verify(mockExecution).setVariable(Prefix + "queryNetworkTableRefAAIRequest", "http://localhost:8090/aai/v8/network/route-table-references/route-table-reference/refFQDN1?depth=all")
+ verify(mockExecution, atLeast(2)).setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", "200")
+
+ }
+
+ @Test
+ //@Ignore
+ public void callRESTQueryAAINetworkPolicy_200() {
+
+ println "************ callRESTQueryAAINetworkPolicy_200 ************* "
+
+ WireMock.reset();
+ MockGetNetworkPolicy("UpdateNetworkV2/updateNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "requeryIdAAIResponse")).thenReturn(queryIdAIIResponse)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+ when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_network_policy_uri")).thenReturn("/aai/v8/network/network-policies/network-policy")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.callRESTQueryAAINetworkPolicy(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "networkPolicyCount", 1)
+ verify(mockExecution).setVariable(Prefix + "networkPolicyUriList", ['/aai/v8/network/network-policies/network-policy/cee6d136-e378-4678-a024-2cd15f0ee0cg'])
+ // the last vpnBinding value is saved.
+ verify(mockExecution).setVariable(Prefix + "queryNetworkPolicyAAIRequest", "http://localhost:8090/aai/v8/network/network-policies/network-policy/cee6d136-e378-4678-a024-2cd15f0ee0cg?depth=all")
+ verify(mockExecution).setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "200")
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void callRESTReQueryAAINetworkId_200() {
+
+ println "************ callRESTReQueryAAINetworkId ************* "
+
+ WireMock.reset();
+ MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "UpdateNetworkV2/updateNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "changeAssignSDNCResponse")).thenReturn(sdncAdapterWorkflowFormattedResponse)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_DoUpdateNetworkInstance_aai_l3_network_uri")).thenReturn("/aai/v9/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.callRESTReQueryAAINetworkId(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "requeryIdAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=1")
+ verify(mockExecution).setVariable(Prefix + "aaiRequeryIdReturnCode", "200")
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void callRESTUpdateContrailAAINetworkREST_200() {
+
+ println "************ callRESTUpdateContrailAAINetwork ************* "
+
+ WireMock.reset();
+ MockPutNetworkIdWithDepth("UpdateNetworkV2/updateNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1");
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable(Prefix + "changeAssignSDNCResponse")).thenReturn(sdncAdapterWorkflowFormattedResponse)
+ when(mockExecution.getVariable(Prefix + "requeryIdAAIResponse")).thenReturn(queryIdAIIResponse)
+ when(mockExecution.getVariable(Prefix + "updateNetworkResponse")).thenReturn(updateNetworkResponseREST)
+ when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+ when(mockExecution.getVariable("URN_mso_workflow_DoUpdateNetworkInstance_aai_l3_network_uri")).thenReturn("/aai/v9/network/l3-networks/l3-network")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+ when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.callRESTUpdateContrailAAINetwork(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "updateContrailAAIUrlRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=1")
+ verify(mockExecution).setVariable(Prefix + "updateContrailAAIPayloadRequest", updateContrailAAIPayloadRequest)
+ verify(mockExecution).setVariable(Prefix + "aaiUpdateContrailReturnCode", "200")
+ //verify(mockExecution).setVariable(Prefix + "updateContrailAAIResponse", updateContrailAAIResponse)
+ verify(mockExecution).setVariable(Prefix + "isPONR", true)
+
+ }
+
+
+
+ @Test
+ //@Ignore
+ public void validateUpdateNetworkResponseREST() {
+
+ println "************ validateNetworkResponse ************* "
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "updateNetworkResponse")).thenReturn(updateNetworkResponseREST)
+ when(mockExecution.getVariable(Prefix + "networkReturnCode")).thenReturn('200')
+
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.validateUpdateNetworkResponse(mockExecution)
+
+ //MockitoDebuggerImpl debugger = new MockitoDebuggerImpl()
+ //debugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+ verify(mockExecution).setVariable(Prefix + "updateNetworkResponse", updateNetworkResponseREST)
+ verify(mockExecution).setVariable(Prefix + "isNetworkRollbackNeeded", true)
+ verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", updateRollbackNetworkRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void validateUpdateNetworkResponseREST_Error() {
+
+ println "************ validateNetworkResponse ************* "
+
+ WorkflowException workflowException = new WorkflowException("DoUpdateNetworkInstance", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "updateNetworkResponse")).thenReturn(networkException500)
+ when(mockExecution.getVariable(Prefix + "networkReturnCode")).thenReturn('500')
+
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ try {
+ DoUpdateNetworkInstance.validateUpdateNetworkResponse(mockExecution)
+ } catch (Exception ex) {
+ println " Test End - Handle catch-throw BpmnError()! "
+ }
+
+ verify(mockExecution).setVariable("prefix", Prefix + "")
+ verify(mockExecution, atLeast(1)).setVariable("WorkflowException", refEq(workflowException, any(WorkflowException.class)))
+
+ }
+
+ @Test
+ //@Ignore
+ public void validateSDNCResponse() {
+
+ println "************ validateSDNCResponse ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "changeAssignSDNCResponse")).thenReturn(sdncAdapterWorkflowResponse)
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable("SDNCA_SuccessIndicator")).thenReturn(true)
+ when(mockExecution.getVariable(Prefix + "sdncReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "isResponseGood")).thenReturn(true)
+
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ try {
+ DoUpdateNetworkInstance.validateSDNCResponse(mockExecution)
+ verify(mockExecution).setVariable(Prefix + "isSdncRollbackNeeded", true)
+ verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", "")
+
+ } catch (Exception ex) {
+ println " Graceful Exit - " + ex.getMessage()
+ }
+ //MockitoDebuggerImpl debugger = new MockitoDebuggerImpl()
+ //debugger.printInvocations(mockExecution)
+
+ //verify(mockExecution).setVariable(Prefix + "isSdncRollbackNeeded", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void validateSDNCResponse_Error() {
+
+ println "************ validateSDNCResponse ************* "
+ //ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "changeAssignSDNCResponse")).thenReturn(sdncAdapterWorkflowResponse_Error)
+ when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+ when(mockExecution.getVariable("SDNCA_SuccessIndicator")).thenReturn(false)
+ when(mockExecution.getVariable(Prefix + "sdncReturnCode")).thenReturn("200")
+ when(mockExecution.getVariable(Prefix + "isResponseGood")).thenReturn(true)
+
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ try {
+ DoUpdateNetworkInstance.validateSDNCResponse(mockExecution)
+ } catch (Exception ex) {
+ println " Graceful Exit! - " + ex.getMessage()
+ }
+ //MockitoDebuggerImpl debugger = new MockitoDebuggerImpl()
+ //debugger.printInvocations(mockExecution)
+
+ // verify set prefix = Prefix + ""
+ //verify(mockExecution).setVariable(Prefix + "sdncResponseSuccess", false)
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareRollbackData() {
+
+ println "************ prepareRollbackData() ************* "
+
+
+
+ WorkflowException workflowException = new WorkflowException("DoUpdateNetworkInstance", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn(rollbackSDNCRequest)
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn(rollbackNetworkRequest)
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.prepareRollbackData(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ }
+
+ @Test
+ //@Ignore
+ public void postProcessResponse() {
+
+ println "************ postProcessResponse() ************* "
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable(Prefix + "isException")).thenReturn(false)
+ when(mockExecution.getVariable("sdncVersion")).thenReturn("1610")
+ when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn(rollbackSDNCRequest)
+ when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn(rollbackSDNCRequest)
+ when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedNetworkRequest)
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("requestId")
+
+ // preProcessRequest(Execution execution)
+ DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+ DoUpdateNetworkInstance.postProcessResponse(mockExecution)
+
+ verify(mockExecution, atLeast(3)).getVariable("isDebugLogEnabled")
+ verify(mockExecution, atLeast(3)).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "Success", true)
+
+ }
+
+ private ExecutionEntity setupMock() {
+
+ ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
+ when(mockProcessDefinition.getKey()).thenReturn("DoUpdateNetworkInstance")
+ RepositoryService mockRepositoryService = mock(RepositoryService.class)
+ when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
+ when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoUpdateNetworkInstance")
+ when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
+ ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
+ when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+
+ when(mockExecution.getId()).thenReturn("100")
+ when(mockExecution.getProcessDefinitionId()).thenReturn("DoUpdateNetworkInstance")
+ when(mockExecution.getProcessInstanceId()).thenReturn("DoUpdateNetworkInstance")
+ when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
+ when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
+
+ return mockExecution
+ }
+
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstanceTest.groovy new file mode 100644 index 0000000000..e987d59805 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstanceTest.groovy @@ -0,0 +1,368 @@ +package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import static org.mockito.Mockito.*
+
+import org.camunda.bpm.engine.ProcessEngineServices
+import org.camunda.bpm.engine.RepositoryService
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.camunda.bpm.engine.repository.ProcessDefinition
+import org.camunda.bpm.engine.runtime.Execution
+import org.junit.Before
+import org.junit.Ignore
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.MockitoAnnotations
+import org.mockito.runners.MockitoJUnitRunner
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.core.WorkflowException
+
+import com.github.tomakehurst.wiremock.junit.WireMockRule
+import org.apache.commons.lang3.*
+
+
+@RunWith(MockitoJUnitRunner.class)
+class UpdateNetworkInstanceTest {
+
+ @Rule
+ public WireMockRule wireMockRule = new WireMockRule(8090);
+
+ String Prefix="UPDNI_"
+ def utils = new MsoUtils()
+
+ String createDBRequestError =
+"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">
+ <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+ <lastModifiedBy>BPMN</lastModifiedBy>
+ <statusMessage>Received error from SDN-C: No availability zone available</statusMessage>
+ <responseBody></responseBody>
+ <requestStatus>FAILED</requestStatus>
+ <vnfOutputs><network-id></network-id><network-name></network-names></vnfOutputs>
+ </ns:updateInfraRequest>
+ </soapenv:Body>
+ </soapenv:Envelope>"""
+
+ String falloutHandlerRequest =
+ """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns="http://org.openecomp/mso/request/types/v1"
+ xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">
+ <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-id>b69c9054-da09-4a2c-adf5-51042b62bfac</request-id>
+ <action>UPDATE</action>
+ <source>VID</source>
+ </request-info>
+ <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+ <aetgt:ErrorMessage>Received error from SDN-C: No availability zone available.</aetgt:ErrorMessage>
+ <aetgt:ErrorCode>5300</aetgt:ErrorCode>
+ </aetgt:WorkflowException>
+ </aetgt:FalloutHandlerRequest>"""
+
+ String completeMsoProcessRequest =
+ """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:ns="http://org.openecomp/mso/request/types/v1"
+ xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+ <request-info>
+ <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+ <action>UPDATE</action>
+ <source>VID</source>
+ </request-info>
+ <aetgt:status-message>Network has been updated successfully.</aetgt:status-message>
+ <aetgt:mso-bpel-name>BPMN Network action: UPDATE</aetgt:mso-bpel-name>
+</aetgt:MsoCompletionRequest>"""
+
+
+String jsonIncomingRequest =
+"""{ "requestDetails": {
+ "modelInfo": {
+ "modelType": "networkTyp",
+ "modelId": "modelId",
+ "modelNameVersionId": "modelNameVersionId",
+ "modelName": "CONTRAIL_EXTERNAL",
+ "modelVersion": "1"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "RDM2WAGPLCP",
+ "tenantId": "7dd5365547234ee8937416c65507d266"
+ },
+ "requestInfo": {
+ "instanceName": "MNS-25180-L-01-dmz_direct_net_1",
+ "source": "VID",
+ "callbackUrl": "",
+ "suppressRollback": true,
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": "f70e927b-6087-4974-9ef8-c5e4d5847ca4",
+ "modelInfo": {
+ "modelType": "serviceT",
+ "modelId": "modelI",
+ "modelNameVersionId": "modelNameVersionI",
+ "modelName": "modleNam",
+ "modelVersion": "1"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "userParams": [
+ {
+ "name": "someUserParam1",
+ "value": "someValue1"
+ }
+ ]
+ }
+ }}"""
+
+ @Before
+ public void init()
+ {
+ MockitoAnnotations.initMocks(this)
+
+ }
+
+ public void initializeVariables(Execution mockExecution) {
+
+ verify(mockExecution).setVariable(Prefix + "source", "")
+ verify(mockExecution).setVariable(Prefix + "Success", false)
+
+ verify(mockExecution).setVariable(Prefix + "CompleteMsoProcessRequest", "")
+ verify(mockExecution).setVariable(Prefix + "FalloutHandlerRequest", "")
+
+ }
+
+ @Test
+ //@Ignore
+ public void preProcessRequest() {
+
+ println "************ preProcessRequest() ************* "
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest)
+
+ when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+
+ // preProcessRequest(Execution execution)
+ UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
+ UpdateNetworkInstance.preProcessRequest(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ initializeVariables(mockExecution)
+ //verify(mockExecution).setVariable(Prefix + "Success", false)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void getNetworkModelInfo() {
+
+ println "************ getNetworkModelInfo() ************* "
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+
+ // preProcessRequest(Execution execution)
+ UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
+ UpdateNetworkInstance.getNetworkModelInfo(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ }
+
+ @Test
+ //@Ignore
+ public void sendSyncResponse() {
+
+ println "************ sendSyncResponse ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+
+ // preProcessRequest(Execution execution)
+ UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
+ UpdateNetworkInstance.sendSyncResponse(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable("UpdateNetworkInstanceResponseCode", "202")
+
+ }
+
+ @Test
+ //@Ignore
+ public void sendSyncError() {
+
+ println "************ sendSyncError ************* "
+
+ ExecutionEntity mockExecution = setupMock()
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
+
+ UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
+ UpdateNetworkInstance.sendSyncError(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable("UpdateNetworkInstanceResponseCode", "500")
+
+ }
+
+ @Test
+ //@Ignore
+ public void prepareDBRequestError() {
+
+ println "************ prepareDBRequestError ************* "
+
+ WorkflowException sndcWorkflowException = new WorkflowException("UpdateNetworkInstance", 500, "Received error from SDN-C: No availability zone available")
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowException)
+ //when(mockExecution.getVariable("msoRequestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable(Prefix + "requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable("networkId")).thenReturn("")
+ when(mockExecution.getVariable("networkName")).thenReturn("")
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+
+ when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+ when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+
+ // preProcessRequest(Execution execution)
+ UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
+ UpdateNetworkInstance.prepareDBRequestError(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "createDBRequest", createDBRequestError)
+
+ }
+
+
+ @Test
+ //@Ignore
+ public void prepareCompletion() {
+
+ println "************ postProcessResponse ************* "
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
+ when(mockExecution.getVariable(Prefix + "dbReturnCode")).thenReturn("200")
+
+ // postProcessResponse(Execution execution)
+ UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
+ UpdateNetworkInstance.prepareCompletion(mockExecution)
+
+ // check the sequence of variable invocation
+ //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
+ //preDebugger.printInvocations(mockExecution)
+
+ verify(mockExecution).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "Success", true)
+ verify(mockExecution).setVariable(Prefix + "CompleteMsoProcessRequest", completeMsoProcessRequest)
+
+ }
+
+ @Test
+ //@Ignore
+ public void buildErrorResponse() {
+
+ println "************ buildErrorResponse ************* "
+
+
+ WorkflowException sndcWorkflowException = new WorkflowException("UpdateNetworkInstance", 5300, "Received error from SDN-C: No availability zone available.")
+
+ ExecutionEntity mockExecution = setupMock()
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("b69c9054-da09-4a2c-adf5-51042b62bfac")
+ //when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowException)
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowException)
+
+ // buildErrorResponse(Execution execution)
+ UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
+ UpdateNetworkInstance.buildErrorResponse(mockExecution)
+
+ verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+ verify(mockExecution).setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequest)
+
+ //MockitoDebuggerImpl debugger = new MockitoDebuggerImpl()
+ //debugger.printInvocations(mockExecution)
+
+ }
+
+ @Test
+ //@Ignore
+ public void postProcessResponse() {
+
+ println "************ postProcessResponse() ************* "
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+ when(mockExecution.getVariable("CMSO_ResponseCode")).thenReturn("200")
+
+ // postProcessResponse(Execution execution)
+ UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
+ UpdateNetworkInstance.postProcessResponse(mockExecution)
+
+ //verify(mockExecution).getVariable("isDebugLogEnabled")
+ //verify(mockExecution).setVariable("prefix", Prefix)
+
+ verify(mockExecution).setVariable(Prefix + "Success", true)
+
+ }
+
+ @Test
+ //@Ignore
+ public void processRollbackData() {
+
+ println "************ callDBCatalog() ************* "
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+
+ // preProcessRequest(Execution execution)
+ UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
+ UpdateNetworkInstance.processRollbackData(mockExecution)
+
+ verify(mockExecution).getVariable("isDebugLogEnabled")
+ verify(mockExecution).setVariable("prefix", Prefix)
+
+ }
+
+ private ExecutionEntity setupMock() {
+
+ ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
+ when(mockProcessDefinition.getKey()).thenReturn("UpdateNetworkInstance")
+ RepositoryService mockRepositoryService = mock(RepositoryService.class)
+ when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
+ when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("UpdateNetworkInstance")
+ when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
+ ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
+ when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
+
+ ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+ // Initialize prerequisite variables
+
+ when(mockExecution.getId()).thenReturn("100")
+ when(mockExecution.getProcessDefinitionId()).thenReturn("UpdateNetworkInstance")
+ when(mockExecution.getProcessInstanceId()).thenReturn("UpdateNetworkInstance")
+ when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
+ when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
+
+ return mockExecution
+ }
+
+}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateGenericALaCarteServiceInstanceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateGenericALaCarteServiceInstanceTest.java new file mode 100644 index 0000000000..8419e19206 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateGenericALaCarteServiceInstanceTest.java @@ -0,0 +1,109 @@ +package org.openecomp.mso.bpmn.infrastructure; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.openecomp.mso.bpmn.common.BPMNUtil.executeWorkFlow; +import static org.openecomp.mso.bpmn.common.BPMNUtil.waitForWorkflowToFinish; +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetCustomer; +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance; +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById; +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceByName; +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutServiceInstance; +import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB; +import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.camunda.bpm.engine.test.Deployment; +import org.junit.Test; +import org.openecomp.mso.bpmn.common.BPMNUtil; +import org.openecomp.mso.bpmn.common.WorkflowTest; +import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse; +import org.openecomp.mso.bpmn.mock.FileUtil; + +/** + * Unit test cases for CreateGenericALaCarteServiceInstance.bpmn + */ +public class CreateGenericALaCarteServiceInstanceTest extends WorkflowTest { + + private final CallbackSet callbacks = new CallbackSet(); + + public CreateGenericALaCarteServiceInstanceTest() throws IOException { + callbacks.put("assign", FileUtil.readResourceFile("__files/VfModularity/SDNCSITopologyAssignCallback.xml")); + } + + /** + * Sunny day VID scenario. + * + * @throws Exception + */ + //@Ignore // File not found - unable to run the test. Also, Stubs need updating.. + @Test + @Deployment(resources = { + "process/CreateGenericALaCarteServiceInstance.bpmn", + "subprocess/DoCreateServiceInstance.bpmn", + "subprocess/DoCreateServiceInstanceRollback.bpmn", + "subprocess/SDNCAdapterV1.bpmn", + "subprocess/GenericPutService.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/FalloutHandler.bpmn" }) + public void sunnyDayAlaCarte() throws Exception { + + logStart(); + + //AAI + MockGetCustomer("MCBH-1610", "CreateServiceInstance/createServiceInstance_queryGlobalCustomerId_AAIResponse_Success.xml"); + MockPutServiceInstance("MCBH-1610", "viprsvc", "RaaTest-1-id", ""); + MockGetServiceInstance("MCBH-1610", "viprsvc", "RaaTest-1-id", "GenericFlows/getServiceInstance.xml"); + MockNodeQueryServiceInstanceByName("RAATest-1", ""); + MockNodeQueryServiceInstanceById("RaaTest-1-id", ""); + //SDNC + mockSDNCAdapter(200); + //DB + mockUpdateRequestDB(200, "DBUpdateResponse.xml"); + + + String businessKey = UUID.randomUUID().toString(); + + //String createVfModuleRequest = FileUtil.readResourceFile("__files/SIRequest.json"); + + Map<String, String> variables = setupVariables(); + WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "CreateGenericALaCarteServiceInstance", variables); + waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID()); + + String workflowResp = BPMNUtil.getVariable(processEngineRule, "CreateGenericALaCarteServiceInstance", "WorkflowResponse"); + //assertNotNull(workflowResp); + System.out.println("Workflow (Synch) Response:\n" + workflowResp); + String workflowException = BPMNUtil.getVariable(processEngineRule, "CreateGenericALaCarteServiceInstance", "WorkflowException"); + String completionReq = BPMNUtil.getVariable(processEngineRule, "CreateGenericALaCarteServiceInstance", "completionRequest"); + System.out.println("completionReq:\n" + completionReq); + System.out.println("workflowException:\n" + workflowException); + assertNotNull(completionReq); + assertEquals(null, workflowException); + + + //injectSDNCCallbacks(callbacks, "assign"); + + logEnd(); + } + + // Success Scenario + private Map<String, String> setupVariables() { + Map<String, String> variables = new HashMap<String, String>(); + variables.put("isDebugLogEnabled", "true"); + variables.put("bpmnRequest", getRequest()); + variables.put("mso-request-id", "RaaCSIRequestId-1"); + variables.put("serviceInstanceId","RaaTest-1-id"); + return variables; + } + + public String getRequest() { + String request = "{\"requestDetails\":{\"modelInfo\":{\"modelType\":\"service\",\"modelInvariantUuid\":\"uuid-miu-svc-011-abcdef\",\"modelVersionUuid\":\"ASDC_TOSCA_UUID\",\"modelName\":\"SIModelName1\",\"modelVersion\":\"2\"},\"subscriberInfo\":{\"globalSubscriberId\":\"MCBH-1610\",\"subscriberName\":\"Kaneohe\"},\"requestInfo\":{\"instanceName\":\"RAATest-1\",\"source\":\"VID\",\"suppressRollback\":\"true\",\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"mdt1\",\"tenantId\":\"8b1df54faa3b49078e3416e21370a3ba\"},\"requestParameters\":{\"subscriptionServiceType\":\"viprsvc\",\"aLaCarte\":\"false\",\"userParams\":[]}}}"; + return request; + } + +} diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateNetworkInstanceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateNetworkInstanceTest.java new file mode 100644 index 0000000000..30cd4a5631 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateNetworkInstanceTest.java @@ -0,0 +1,645 @@ +package org.openecomp.mso.bpmn.infrastructure; + +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.*; +import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockUpdateRequestDB; +import static org.openecomp.mso.bpmn.mock.StubResponseNetworkAdapter.MockNetworkAdapterPost; +import static org.openecomp.mso.bpmn.mock.StubResponseNetworkAdapter.MockNetworkAdapterRestRollbackDelete; +// new mock methods +import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapterTopology; +import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter_500; +import org.openecomp.mso.bpmn.mock.SDNCAdapterNetworkTopologyMockTransformer; + +import static org.openecomp.mso.bpmn.common.BPMNUtil.executeAsyncWorkflow; +import static org.openecomp.mso.bpmn.common.BPMNUtil.getVariable; +import static org.junit.Assert.assertEquals; + +import java.util.HashMap; +import java.util.Map; + +import org.camunda.bpm.engine.test.Deployment; +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; + +import org.openecomp.mso.bpmn.common.BPMNUtil; +import org.openecomp.mso.bpmn.common.WorkflowTest; +import org.openecomp.mso.bpmn.common.WorkflowTestTransformer; +import org.openecomp.mso.bpmn.common.SDNCAdapterCallbackRule; +import com.github.tomakehurst.wiremock.extension.ResponseTransformer; + +/** + * Unit test cases for CreateNetworkInstance.bpmn + * + */ +public class CreateNetworkInstanceTest extends WorkflowTest { + @WorkflowTestTransformer + public static final ResponseTransformer sdncAdapterMockTransformer = + new SDNCAdapterNetworkTopologyMockTransformer(); + + @Rule + public final SDNCAdapterCallbackRule sdncAdapterCallbackRule = + new SDNCAdapterCallbackRule(processEngineRule); + + /** + * End-to-End flow - Unit test for CreateNetworkInstance.bpmn + * - String input & String response + */ + + + @Test + //@Ignore + @Deployment(resources = {"process/CreateNetworkInstance.bpmn", + "subprocess/DoCreateNetworkInstance.bpmn", + "subprocess/DoCreateNetworkInstanceRollback.bpmn", + "subprocess/FalloutHandler.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/SDNCAdapterV1.bpmn"}) + + public void shouldInvokeServiceCreateNetworkInstance_vIPER_Success1() throws Exception { + + System.out.println("-----------------------------------------------------------------"); + System.out.println(" Success vIPER 1 - CreateNetworkInstance flow Started! "); + System.out.println("-----------------------------------------------------------------"); + + // setup simulators + mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologyRsrcAssignResponse.xml", "SvcAction>assign"); + mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologySimResponse.xml", "SvcAction>activate"); + MockNetworkAdapterPost("CreateNetworkV2/createNetworkResponse_Success.xml", "createNetworkRequest"); + MockGetNetworkByName("MNS-25180-L-01-dmz_direct_net_1", "CreateNetworkV2/createNetwork_queryName_AAIResponse_Success.xml"); + MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP"); + MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1"); + MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017"); + MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6"); + MockGetNetworkPolicy("CreateNetworkV2/createNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg"); + MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1"); + MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef2_AAIResponse_Success.xml", "refFQDN2"); + MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1"); + MockUpdateRequestDB("DBUpdateResponse.xml"); + //MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml", "v8"); + MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml"); + + Map<String, String> variables = setupVariables1(); + //WorkflowResponse workflowResponse = executeAsyncWorkflow(processEngineRule, "CreateNetworkInstance", variables); + executeAsyncWorkflow(processEngineRule, "CreateNetworkInstance", variables); + System.out.println("----------------------------------------------------------"); + System.out.println("- got workflow response -"); + System.out.println("----------------------------------------------------------"); + //waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID()); + + assertEquals("true", getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_Success")); + assertEquals("true", getVariable(processEngineRule, "DoCreateNetworkInstance", "CRENWKI_Success")); + Assert.assertNotNull("CRENI_CompleteMsoProcessRequest - ", getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_CompleteMsoProcessRequest")); + + String workflowResp = BPMNUtil.getVariable(processEngineRule, "CreateNetworkInstance", "WorkflowResponse"); + Assert.assertNotNull(workflowResp); + + System.out.println("----------------------------------------------------------"); + System.out.println(" Success vIPER 1 - CreateNetworkInstance flow Completed "); + System.out.println("----------------------------------------------------------"); + + } + + @Test + //@Ignore + @Deployment(resources = {"process/CreateNetworkInstance.bpmn", + "subprocess/DoCreateNetworkInstance.bpmn", + "subprocess/DoCreateNetworkInstanceRollback.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/FalloutHandler.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/SDNCAdapterV1.bpmn"}) + + public void shouldInvokeServiceCreateNetworkInstance_vIPER_Success2() throws Exception { + + System.out.println("----------------------------------------------------------------"); + System.out.println(" Success viPER 2 - CreateNetworkInstance flow Started! "); + System.out.println("----------------------------------------------------------------"); + + // setup simulators + mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologyRsrcAssignResponse.xml", "SvcAction>assign"); + mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologySimResponse.xml", "SvcAction>activate"); + MockNetworkAdapterPost("CreateNetworkV2/createNetworkResponse_Success.xml", "createNetworkRequest"); + MockGetNetworkByName_404("CreateNetworkV2/createNetwork_queryName_AAIResponse_Success.xml", "myOwn_Network"); + MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP"); + MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1"); + MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017"); + MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6"); + MockGetNetworkPolicy("CreateNetworkV2/createNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg"); + MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1"); + MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef2_AAIResponse_Success.xml", "refFQDN2"); + MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1"); + MockUpdateRequestDB("DBUpdateResponse.xml"); + //MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml", "v8"); + MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml"); + + Map<String, String> variables = setupVariables2(); + //WorkflowResponse workflowResponse = executeAsyncWorkflow(processEngineRule, "CreateNetworkInstance", variables); + executeAsyncWorkflow(processEngineRule, "CreateNetworkInstance", variables); + //waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID()); + + assertEquals("true", getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_Success")); + assertEquals("true", getVariable(processEngineRule, "DoCreateNetworkInstance", "CRENWKI_Success")); + Assert.assertNotNull("CRENI_CompleteMsoProcessRequest - ", getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_CompleteMsoProcessRequest")); + + String completeMsoProcessRequest = + "<aetgt:MsoCompletionRequest xmlns:aetgt=\"http://org.openecomp/mso/workflow/schema/v1\"" + '\n' + + " xmlns:ns=\"http://org.openecomp/mso/request/types/v1\"" + '\n' + + " xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">" + '\n' + + " <request-info>" + '\n' + + " <request-id>testRequestId</request-id>" + '\n' + + " <action>CREATE</action>" + '\n' + + " <source>VID</source>" + '\n' + + " </request-info>" + '\n' + + " <aetgt:status-message>Network has been created successfully.</aetgt:status-message>" + '\n' + + " <aetgt:mso-bpel-name>BPMN Network action: CREATE</aetgt:mso-bpel-name>" + '\n' + + "</aetgt:MsoCompletionRequest>"; + + Assert.assertEquals(completeMsoProcessRequest, getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_CompleteMsoProcessRequest")); + + System.out.println("---------------------------------------------------------"); + System.out.println(" Success viPER 2 - CreateNetworkInstance flow Completed "); + System.out.println("---------------------------------------------------------"); + + } + + @Test + //@Ignore + @Deployment(resources = {"process/CreateNetworkInstance.bpmn", + "subprocess/DoCreateNetworkInstance.bpmn", + "subprocess/DoCreateNetworkInstanceRollback.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/FalloutHandler.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/SDNCAdapterV1.bpmn"}) + + public void shouldInvokeServiceCreateNetworkInstance_VID_1610_Network_SDNC_Rollback() throws Exception { + + System.out.println("--------------------------------------------------------------------------"); + System.out.println(" Network and SDNC Rollback - CreateNetworkInstance flow Started! "); + System.out.println("--------------------------------------------------------------------------"); + + // setup simulators + mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologySimResponse.xml", "SvcAction>assign"); + mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologySimResponse.xml", "SvcAction>rollback"); + MockNetworkAdapterPost("CreateNetworkV2/createNetworkResponse_Success.xml", "createNetworkRequest"); + MockGetNetworkByName("MNS-25180-L-01-dmz_direct_net_1", "CreateNetworkV2/createNetwork_queryName_AAIResponse_Success.xml"); + MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP"); + MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1"); + MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017"); + MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6"); + MockGetNetworkPolicy("CreateNetworkV2/createNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg"); + MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1"); + MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef2_AAIResponse_Success.xml", "refFQDN2"); + MockUpdateRequestDB("DBUpdateResponse.xml"); + //MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml", "v8"); + MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml"); + MockNetworkAdapterRestRollbackDelete("deleteNetworkResponse_Success.xml","49c86598-f766-46f8-84f8-8d1c1b10f9b4"); + + Map<String, String> variables = setupVariablesVID1(); + executeAsyncWorkflow(processEngineRule, "CreateNetworkInstance", variables); + //WorkflowResponse workflowResponse = executeAsyncWorkflow(processEngineRule, "CreateNetworkInstance", variables); + //waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID()); + + assertEquals("false", getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_Success")); + assertEquals("false", getVariable(processEngineRule, "DoCreateNetworkInstance", "CRENWKI_Success")); + Assert.assertNotNull("CRENI_FalloutHandlerRequest - ", getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_FalloutHandlerRequest")); + + System.out.println("--------------------------------------------------------------------"); + System.out.println(" Network and SCNC Rollback - CreateNetworkInstance flow Completed "); + System.out.println("--------------------------------------------------------------------"); + + } + + @Test + //@Ignore + @Deployment(resources = {"process/CreateNetworkInstance.bpmn", + "subprocess/DoCreateNetworkInstance.bpmn", + "subprocess/DoCreateNetworkInstanceRollback.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/FalloutHandler.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/SDNCAdapterV1.bpmn"}) + + public void shouldInvokeServiceCreateNetworkInstance_vIPER_1702_Network_SDNC_Rollback() throws Exception { + + System.out.println("--------------------------------------------------------------------------"); + System.out.println(" Network and SDNC Rollback - CreateNetworkInstance flow Started! "); + System.out.println("--------------------------------------------------------------------------"); + + // setup simulators + mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologyRsrcAssignResponse.xml", "SvcAction>assign"); + mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologySimResponse.xml", "SvcAction>unassign"); + mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologySimResponse.xml", "SvcAction>activate"); + mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologySimResponse.xml", "SvcAction>deactivate"); + MockNetworkAdapterPost("CreateNetworkV2/createNetworkResponse_Success.xml", "createNetworkRequest"); + MockGetNetworkByName("MNS-25180-L-01-dmz_direct_net_1", "CreateNetworkV2/createNetwork_queryName_AAIResponse_Success.xml"); + MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP"); + MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1"); + MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017"); + MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6"); + MockGetNetworkPolicy("CreateNetworkV2/createNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg"); + MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1"); + MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef2_AAIResponse_Success.xml", "refFQDN2"); + MockUpdateRequestDB("DBUpdateResponse.xml"); + //MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml", "v8"); + MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml"); + MockNetworkAdapterRestRollbackDelete("deleteNetworkResponse_Success.xml","49c86598-f766-46f8-84f8-8d1c1b10f9b4"); + + Map<String, String> variables = setupVariables1(); + executeAsyncWorkflow(processEngineRule, "CreateNetworkInstance", variables); + //WorkflowResponse workflowResponse = executeAsyncWorkflow(processEngineRule, "CreateNetworkInstance", variables); + //waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID()); + + assertEquals("false", getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_Success")); + assertEquals("false", getVariable(processEngineRule, "DoCreateNetworkInstance", "CRENWKI_Success")); + Assert.assertNotNull("CRENI_FalloutHandlerRequest - ", getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_FalloutHandlerRequest")); + + System.out.println("--------------------------------------------------------------------"); + System.out.println(" Network and SCNC Rollback - CreateNetworkInstance flow Completed "); + System.out.println("--------------------------------------------------------------------"); + + } + + @Test + //@Ignore + @Deployment(resources = {"process/CreateNetworkInstance.bpmn", + "subprocess/DoCreateNetworkInstance.bpmn", + "subprocess/DoCreateNetworkInstanceRollback.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/FalloutHandler.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/SDNCAdapterV1.bpmn"}) + + public void shouldInvokeServiceCreateNetworkInstance_sdncFailure() throws Exception { + + System.out.println("----------------------------------------------------------------"); + System.out.println(" SNDC Failure - CreateNetworkInstance flow Started! "); + System.out.println("----------------------------------------------------------------"); + + // setup simulators + mockSDNCAdapter_500("SvcAction>query"); + MockGetNetworkByName_404("CreateNetworkV2/createNetwork_queryName_AAIResponse_Success.xml", "myOwn_Network"); + MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP"); + MockUpdateRequestDB("DBUpdateResponse.xml"); + //MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml", "v8"); + MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml"); + + Map<String, String> variables = setupVariables2(); + //WorkflowResponse workflowResponse = executeAsyncWorkflow(processEngineRule, "CreateNetworkInstance", variables); + executeAsyncWorkflow(processEngineRule, "CreateNetworkInstance", variables); + //waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID()); + + assertEquals("false", getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_Success")); + assertEquals("false", getVariable(processEngineRule, "DoCreateNetworkInstance", "CRENWKI_Success")); + Assert.assertNotNull("CRENI_FalloutHandlerRequest - ", getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_FalloutHandlerRequest")); + + System.out.println("---------------------------------------------------------"); + System.out.println(" SNDC Failure - CreateNetworkInstance flow Completed "); + System.out.println("---------------------------------------------------------"); + + } + + @Test + //@Ignore + @Deployment(resources = {"process/CreateNetworkInstance.bpmn", + "subprocess/DoCreateNetworkInstance.bpmn", + "subprocess/DoCreateNetworkInstanceRollback.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/FalloutHandler.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/SDNCAdapterV1.bpmn"}) + + public void shouldInvokeServiceCreateNetworkInstance_queryServiceInstance404() throws Exception { + + System.out.println("----------------------------------------------------------------------------------"); + System.out.println(" Query ServiceIntance Not found - CreateNetworkInstance flow Started! "); + System.out.println("----------------------------------------------------------------------------------"); + + //setup simulators + mockSDNCAdapter_500("SvcAction>query"); + MockGetNetworkByName_404("CreateNetworkV2/createNetwork_queryName_AAIResponse_Success.xml", "myOwn_Network"); + MockUpdateRequestDB("DBUpdateResponse.xml"); + MockNodeQueryServiceInstanceById_404("f70e927b-6087-4974-9ef8-c5e4d5847ca4"); + + Map<String, String> variables = setupVariables2(); + //WorkflowResponse workflowResponse = executeAsyncWorkflow(processEngineRule, "CreateNetworkInstance", variables); + executeAsyncWorkflow(processEngineRule, "CreateNetworkInstance", variables); + //waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID()); + + assertEquals("false", getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_Success")); + assertEquals("false", getVariable(processEngineRule, "DoCreateNetworkInstance", "CRENWKI_Success")); + Assert.assertNotNull("CRENI_FalloutHandlerRequest - ", getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_FalloutHandlerRequest")); + + System.out.println("---------------------------------------------------------------------------------"); + System.out.println(" Query ServiceIntance Not found - CreateNetworkInstance flow Completed "); + System.out.println("---------------------------------------------------------------------------------"); + + } + + @Test + //@Ignore + @Deployment(resources = {"process/CreateNetworkInstance.bpmn", + "subprocess/DoCreateNetworkInstance.bpmn", + "subprocess/DoCreateNetworkInstanceRollback.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/FalloutHandler.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/SDNCAdapterV1.bpmn"}) + + public void shouldInvokeServiceCreateNetworkInstance_VID_Success1() throws Exception { + + System.out.println("----------------------------------------------------------"); + System.out.println(" Success VID1 - CreateNetworkInstance flow Started! "); + System.out.println("----------------------------------------------------------"); + + // setup simulators + mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologySimResponse.xml", "SvcAction>assign"); + MockNetworkAdapterPost("CreateNetworkV2/createNetworkResponse_Success.xml", "createNetworkRequest"); + MockGetNetworkByName("MNS-25180-L-01-dmz_direct_net_1", "CreateNetworkV2/createNetwork_queryName_AAIResponse_Success.xml"); + MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP"); + MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1"); + MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017"); + MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6"); + MockGetNetworkPolicy("CreateNetworkV2/createNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg"); + MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1"); + MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef2_AAIResponse_Success.xml", "refFQDN2"); + MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1"); + MockUpdateRequestDB("DBUpdateResponse.xml"); + //MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml", "v8"); + MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml"); + + Map<String, String> variables = setupVariablesVID1(); + //WorkflowResponse workflowResponse = executeAsyncWorkflow(processEngineRule, "CreateNetworkInstance", variables); + executeAsyncWorkflow(processEngineRule, "CreateNetworkInstance", variables); + System.out.println("----------------------------------------------------------"); + System.out.println("- got workflow response -"); + System.out.println("----------------------------------------------------------"); + //waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID()); + + assertEquals("true", getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_Success")); + Assert.assertNotNull("CRENI_CompleteMsoProcessRequest - ", getVariable(processEngineRule, "CreateNetworkInstance", "CRENI_CompleteMsoProcessRequest")); + + String workflowResp = BPMNUtil.getVariable(processEngineRule, "CreateNetworkInstance", "WorkflowResponse"); + Assert.assertNotNull(workflowResp); + + System.out.println("-----------------------------------------------------------"); + System.out.println(" Success VID1 - CreateNetworkInstanceInfra flow Completed "); + System.out.println("-----------------------------------------------------------"); + + } + + // ***************** + // Utility Section + // ***************** + + String networkModelInfo = + " {\"modelUuid\": \"mod-inst-uuid-123\", " + '\n' + + " \"modelName\": \"mod_inst_z_123\", " + '\n' + + " \"modelVersion\": \"mod-inst-uuid-123\", " + '\n' + + " \"modelCustomizationUuid\": \"z_network_123\", " + '\n' + + " \"modelInvariantUuid\": \"mod-invar-uuid-123\" " + '\n' + + " }"; + + String serviceModelInfo = + " {\"modelUuid\": \"36a3a8ea-49a6-4ac8-b06c-89a54544b9b6\", " + '\n' + + " \"modelName\": \"HNGW Protected OAM\", " + '\n' + + " \"modelVersion\": \"1.0\", " + '\n' + + " \"modelInvariantUuid\": \"fcc85cb0-ad74-45d7-a5a1-17c8744fdb71\" " + '\n' + + " }"; + + // Success Scenario + private Map<String, String> setupVariables1() { + Map<String, String> variables = new HashMap<String, String>(); + variables.put("testMessageId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56"); + variables.put("msoRequestId", "testRequestId"); + variables.put("requestId", "testRequestId"); + variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4"); + variables.put("networkId", "networkId"); + variables.put("networkName", "MNS-25180-L-01-dmz_direct_net_1"); + variables.put("lcpCloudRegionId", "RDM2WAGPLCP"); + variables.put("tenantId", "7dd5365547234ee8937416c65507d266"); + variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"); + variables.put("disableRollback", "false"); // macro + variables.put("failIfExists", "false"); + variables.put("sdncVersion", "1702"); + variables.put("subscriptionServiceType", "MSO-dev-service-type"); + variables.put("globalSubscriberId", "globalId_45678905678"); + variables.put("networkModelInfo", networkModelInfo); + variables.put("serviceModelInfo", serviceModelInfo); + + + return variables; + + } + + // Success Scenario 2 + private Map<String, String> setupVariables2() { + Map<String, String> variables = new HashMap<String, String>(); + variables.put("testMessageId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56"); + variables.put("msoRequestId", "testRequestId"); + variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4"); + variables.put("networkId", "networkId"); + variables.put("networkName", "myOwn_Network"); // Name Not found in AA&I + variables.put("lcpCloudRegionId", "RDM2WAGPLCP"); + variables.put("tenantId", "7dd5365547234ee8937416c65507d266"); + variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"); + variables.put("disableRollback", "false"); // 1702 + variables.put("failIfExists", "false"); + //variables.put("sdncVersion", "1702"); + variables.put("sdncVersion", "1707"); + variables.put("subscriptionServiceType", "MSO-dev-service-type"); + variables.put("globalSubscriberId", "globalId_45678905678"); + variables.put("networkModelInfo", networkModelInfo); + variables.put("serviceModelInfo", serviceModelInfo); + + return variables; + + } + + // Active Scenario + private Map<String, String> setupVariablesActive() { + Map<String, String> variables = new HashMap<String, String>(); + variables.put("testMessageId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56"); + variables.put("msoRequestId", "testRequestId"); + variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4"); + variables.put("networkId", "networkId"); + variables.put("networkName", "MNS-25180-L-01-dmz_direct_net_2"); // Unique name for Active + variables.put("lcpCloudRegionId", "RDM2WAGPLCP"); + variables.put("tenantId", "7dd5365547234ee8937416c65507d266"); + variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"); + variables.put("suppressRollback", "false"); + variables.put("disableRollback", "false"); + variables.put("failIfExists", "false"); + variables.put("sdncVersion", "1702"); + variables.put("subscriptionServiceType", "MSO-dev-service-type"); + variables.put("globalSubscriberId", "globalId_45678905678"); + variables.put("networkModelInfo", networkModelInfo); + variables.put("serviceModelInfo", serviceModelInfo); + + return variables; + + } + + // Missing Name Scenario + private Map<String, String> setupVariablesMissingName() { + Map<String, String> variables = new HashMap<String, String>(); + //variables.put("bpmnRequest", getCreateNetworkRequestMissingName()); + variables.put("testMessageId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56"); + variables.put("msoRequestId", "testRequestId"); + variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4"); + variables.put("networkId", "networkId"); + // variables.put("networkName", "MNS-25180-L-01-dmz_direct_net_2"); // Missing 'name' variable + // variables.put("networkName", ""); // Missing 'value' of name variable + variables.put("modelName", "CONTRAIL_EXTERNAL"); + variables.put("cloudConfiguration", "RDM2WAGPLCP"); + variables.put("tenantId", "7dd5365547234ee8937416c65507d266"); + variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"); + variables.put("suppressRollback", "true"); + variables.put("failIfExists", "false"); + + return variables; + + } + + // SDNC Rollback Scenario + private Map<String, String> setupVariablesSDNCRollback() { + Map<String, String> variables = new HashMap<String, String>(); + variables.put("testMessageId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56"); + variables.put("msoRequestId", "testRequestId"); + variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4"); + variables.put("networkId", "networkId"); + variables.put("networkName", "MNS-25180-L-01-dmz_direct_net_3"); // Unique name for Rollback + variables.put("modelName", "CONTRAIL_EXTERNAL"); + variables.put("cloudConfiguration", "RDM2WAGPLCP"); + variables.put("tenantId", "7dd5365547234ee8937416c65507d266"); + variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"); + variables.put("suppressRollback", "true"); + variables.put("disableRollback", "false"); + + return variables; + + } + + // old + public String getCreateNetworkRequestActive() { + + String request = + "{ \"requestDetails\": { " + '\n' + + " \"modelInfo\": { " + '\n' + + " \"modelType\": \"modelType\", " + '\n' + + " \"modelId\": \"modelId\", " + '\n' + + " \"modelCustomizationUuid\": \"modelCustUuid\", " + '\n' + + " \"modelName\": \"CONTRAIL_EXTERNAL\", " + '\n' + + " \"modelVersion\": \"1\" " + '\n' + + " }, " + '\n' + + " \"cloudConfiguration\": { " + '\n' + + " \"lcpCloudRegionId\": \"RDM2WAGPLCP\", " + '\n' + + " \"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\" " + '\n' + + " }, " + '\n' + + " \"requestInfo\": { " + '\n' + + " \"instanceName\": \"MNS-25180-L-01-dmz_direct_net_2\", " + '\n' + + " \"source\": \"VID\", " + '\n' + + " \"callbackUrl\": \"\", " + '\n' + + " \"suppressRollback\": \"false\" ," + '\n' + + " \"productFamilyId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\" " + '\n' + + " }, " + '\n' + + " \"requestParameters\": { " + '\n' + + " \"userParams\": [] " + '\n' + + " } " + '\n' + + " } " + '\n' + + "}"; + + return request; + + } + + public String getCreateNetworkRequestSDNCRollback() { + + String request = + "{ \"requestDetails\": { " + '\n' + + " \"modelInfo\": { " + '\n' + + " \"modelType\": \"modelType\", " + '\n' + + " \"modelId\": \"modelId\", " + '\n' + + " \"modelNameVersionId\": \"modelNameVersionId\", " + '\n' + + " \"modelName\": \"CONTRAIL_EXTERNAL\", " + '\n' + + " \"modelVersion\": \"1\" " + '\n' + + " }, " + '\n' + + " \"cloudConfiguration\": { " + '\n' + + " \"lcpCloudRegionId\": \"RDM2WAGPLCP\", " + '\n' + + " \"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\" " + '\n' + + " }, " + '\n' + + " \"requestInfo\": { " + '\n' + + " \"instanceName\": \"MNS-25180-L-01-dmz_direct_net_3\", " + '\n' + + " \"source\": \"VID\", " + '\n' + + " \"callbackUrl\": \"\", " + '\n' + + " \"suppressRollback\": \"true\" ," + '\n' + + " \"productFamilyId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\" " + '\n' + + " }, " + '\n' + + " \"requestParameters\": { " + '\n' + + " \"userParams\": [] " + '\n' + + " } " + '\n' + + " } " + '\n' + + "}"; + + + return request; + } + + + // VID json input + private Map<String, String> setupVariablesVID1() { + Map<String, String> variables = new HashMap<String, String>(); + variables.put("bpmnRequest", getCreateNetworkRequestVID1()); + variables.put("mso-request-id", "testRequestId"); + //variables.put("msoRequestId", "testRequestId"); + variables.put("requestId", "testRequestId"); + variables.put("isBaseVfModule", "true"); + variables.put("recipeTimeout", "0"); + variables.put("requestAction", "CREATE"); + variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4"); + variables.put("vnfId", ""); + variables.put("vfModuleId", ""); + variables.put("volumeGroupId", ""); + //variables.put("networkId", "networkId"); + variables.put("serviceType", "vMOG"); + variables.put("vfModuleType", ""); + variables.put("networkType", "modelName"); + + return variables; + + } + + public String getCreateNetworkRequestVID1() { + + String request = + "{ \"requestDetails\": { " + '\n' + + " \"modelInfo\": { " + '\n' + + " \"modelType\": \"modelType\", " + '\n' + + " \"modelCustomizationId\": \"f21df226-8093-48c3-be7e-0408fcda0422\", " + '\n' + + " \"modelName\": \"CONTRAIL_EXTERNAL\", " + '\n' + + " \"modelVersion\": \"1.0\" " + '\n' + + " }, " + '\n' + + " \"cloudConfiguration\": { " + '\n' + + " \"lcpCloudRegionId\": \"RDM2WAGPLCP\", " + '\n' + + " \"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\" " + '\n' + + " }, " + '\n' + + " \"requestInfo\": { " + '\n' + + " \"instanceName\": \"MNS-25180-L-01-dmz_direct_net_1\", " + '\n' + + " \"source\": \"VID\", " + '\n' + + " \"callbackUrl\": \"\", " + '\n' + + " \"suppressRollback\": \"false\" ," + '\n' + + " \"productFamilyId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\" " + '\n' + + " }, " + '\n' + + " \"requestParameters\": { " + '\n' + + " \"backoutOnFailure\": false, " + '\n' + + " \"serviceId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\", " + '\n' + + " \"userParams\": [] " + '\n' + + " } " + '\n' + + " } " + '\n' + + "}"; + + return request; + } + +} diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVfModuleVolumeInfraV1Test.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVfModuleVolumeInfraV1Test.java index e70f48d758..d361d1e511 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVfModuleVolumeInfraV1Test.java +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVfModuleVolumeInfraV1Test.java @@ -20,6 +20,10 @@ package org.openecomp.mso.bpmn.infrastructure; +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.get; +import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; +import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching; import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteVolumeGroupById; import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById; import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetVolumeGroupByName; @@ -27,6 +31,7 @@ import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceIn import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVolumeGroupById; import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB; import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockPostVNFVolumeGroup; +import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockPutVNFVolumeGroupRollback; import java.io.IOException; import java.util.HashMap; @@ -34,10 +39,12 @@ import java.util.Map; import java.util.UUID; import org.camunda.bpm.engine.test.Deployment; +import org.junit.Ignore; import org.junit.Test; import org.openecomp.mso.bpmn.common.WorkflowTest; import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse; import org.openecomp.mso.bpmn.mock.FileUtil; +import org.openecomp.mso.bpmn.mock.StubResponseAAI; public class CreateVfModuleVolumeInfraV1Test extends WorkflowTest { @@ -48,6 +55,8 @@ public class CreateVfModuleVolumeInfraV1Test extends WorkflowTest { public CreateVfModuleVolumeInfraV1Test() throws IOException { callbacks.put("volumeGroupCreate", FileUtil.readResourceFile( "__files/CreateVfModuleVolumeInfraV1/CreateVfModuleVolumeCallbackResponse.xml")); + callbacks.put("volumeGroupDelete", FileUtil.readResourceFile( + "__files/DeleteVfModuleVolumeInfraV1/DeleteVfModuleVolumeCallbackResponse.xml")); callbacks.put("volumeGroupException", FileUtil.readResourceFile( "__files/CreateVfModuleVolumeInfraV1/CreateVfModuleCallbackException.xml")); callbacks.put("volumeGroupRollback", FileUtil.readResourceFile( @@ -58,9 +67,10 @@ public class CreateVfModuleVolumeInfraV1Test extends WorkflowTest { * Happy path scenario for VID *****************************/ @Test + //@Ignore @Deployment(resources = {"process/CreateVfModuleVolumeInfraV1.bpmn", "subprocess/GenericGetService.bpmn", - "subprocess/DoCreateVfModuleVolumeV1.bpmn", + "subprocess/DoCreateVfModuleVolumeV2.bpmn", "subprocess/FalloutHandler.bpmn", "subprocess/CompleteMsoProcess.bpmn", "subprocess/VnfAdapterRestV1.bpmn"}) @@ -100,9 +110,61 @@ public class CreateVfModuleVolumeInfraV1Test extends WorkflowTest { } /** + * Fail - trigger rollback + *****************************/ + @Test + //@Ignore + @Deployment(resources = {"process/CreateVfModuleVolumeInfraV1.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/DoCreateVfModuleVolumeV2.bpmn", + "subprocess/DoCreateVfModuleVolumeRollback.bpmn", + "subprocess/FalloutHandler.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/VnfAdapterRestV1.bpmn"}) + public void TestRollback() throws Exception { + + logStart(); + + MockNodeQueryServiceInstanceById("test-service-instance-id", "CreateVfModuleVolumeInfraV1/getSIUrlById.xml"); + MockGetGenericVnfById("/TEST-VNF-ID-0123", "CreateVfModuleVolumeInfraV1/GenericVnf.xml", 200); + MockPutVolumeGroupById("AAIAIC25", "TEST-VOLUME-GROUP-ID-0123", "CreateVfModuleVolumeInfraV1/createVfModuleVolume_createVolumeName_AAIResponse_Success.xml", 201); + mockPostVNFVolumeGroup(202); + mockPutVNFVolumeGroupRollback("TEST-VOLUME-GROUP-ID-0123", 202); + MockDeleteVolumeGroupById("AAIAIC25", "8424bb3c-c3e7-4553-9662-469649ed9379", "1460134360", 202); + StubResponseAAI.MockGetVolumeGroupByName_404("AAIAIC25", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0"); + StubResponseAAI.MockGetVolumeGroupByName("AAIAIC25", "MSOTESTVOL101a-vSAMP12_base_vol_module-0", "CreateVfModuleVolumeInfraV1/createVfModuleVolume_queryVolumeName_AAIResponse_Success.xml", 200); + StubResponseAAI.MockDeleteVolumeGroup("AAIAIC25", "8424bb3c-c3e7-4553-9662-469649ed9379", "1460134360"); + + String businessKey = UUID.randomUUID().toString(); + String createVfModuleVolRequest = FileUtil.readResourceFile("__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json"); + + Map<String, Object> testVariables = new HashMap<String, Object>(); + testVariables.put("requestId", "TEST-REQUEST-ID-0123"); + testVariables.put("serviceInstanceId", "test-service-instance-id"); + testVariables.put("vnfId", "TEST-VNF-ID-0123"); + testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0"); + testVariables.put("test-volume-group-id", "TEST-VOLUME-GROUP-ID-0123"); + + TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVfModuleVolumeInfraV1", "v1", businessKey, createVfModuleVolRequest, testVariables); + WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 1000000); + + String responseBody = response.getResponse(); + System.out.println("Workflow (Synch) Response:\n" + responseBody); + + injectVNFRestCallbacks(callbacks, "volumeGroupCreate"); + injectVNFRestCallbacks(callbacks, "volumeGroupDelete"); + + waitForProcessEnd(businessKey, 100000); + checkVariable(businessKey, "CVMVINFRAV1_SuccessIndicator", false); + + logEnd(); + } + + /** * Happy path scenario for VID *****************************/ @Test + @Ignore @Deployment(resources = {"process/CreateVfModuleVolumeInfraV1.bpmn", "subprocess/GenericGetService.bpmn", "subprocess/DoCreateVfModuleVolumeV1.bpmn", @@ -145,7 +207,7 @@ public class CreateVfModuleVolumeInfraV1Test extends WorkflowTest { *Vnf Create fail *****************************/ @Test - //@Ignore + @Ignore @Deployment(resources = {"process/CreateVfModuleVolumeInfraV1.bpmn", "subprocess/GenericGetService.bpmn", "subprocess/DoCreateVfModuleVolumeV1.bpmn", @@ -193,7 +255,7 @@ public class CreateVfModuleVolumeInfraV1Test extends WorkflowTest { * Error scenario - vnf not found ********************************/ @Test - //@Ignore + @Ignore @Deployment(resources = {"process/CreateVfModuleVolumeInfraV1.bpmn", "subprocess/GenericGetService.bpmn", "subprocess/DoCreateVfModuleVolumeV1.bpmn", @@ -233,7 +295,7 @@ public class CreateVfModuleVolumeInfraV1Test extends WorkflowTest { * Error scenario - error in validation **************************************/ @Test - //@Ignore + @Ignore @Deployment(resources = {"process/CreateVfModuleVolumeInfraV1.bpmn", "subprocess/GenericGetService.bpmn", "subprocess/DoCreateVfModuleVolumeV1.bpmn", @@ -270,7 +332,7 @@ public class CreateVfModuleVolumeInfraV1Test extends WorkflowTest { * Error scenario - service instance not found *********************************************/ @Test - //@Ignore + @Ignore @Deployment(resources = {"process/CreateVfModuleVolumeInfraV1.bpmn", "subprocess/GenericGetService.bpmn", "subprocess/DoCreateVfModuleVolumeV1.bpmn", diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVnfInfraTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVnfInfraTest.java index 80c1e8c215..48705220c4 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVnfInfraTest.java +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVnfInfraTest.java @@ -44,6 +44,7 @@ import java.util.Map; import java.util.UUID; import org.camunda.bpm.engine.test.Deployment; +import org.junit.Ignore; import org.junit.Test; import org.openecomp.mso.bpmn.common.BPMNUtil; import org.openecomp.mso.bpmn.common.WorkflowTest; @@ -134,6 +135,7 @@ public class CreateVnfInfraTest extends WorkflowTest { } @Test + @Ignore @Deployment(resources = {"subprocess/DoCreateVnf.bpmn", "subprocess/GenericGetService.bpmn", "subprocess/GenericGetVnf.bpmn", "subprocess/GenericPutVnf.bpmn", "process/CreateVnfInfra.bpmn", "subprocess/FalloutHandler.bpmn", "subprocess/CompleteMsoProcess.bpmn"}) public void testCreateVnfInfra_error_siNotFound() throws Exception{ @@ -151,6 +153,7 @@ public class CreateVnfInfraTest extends WorkflowTest { } @Test + @Ignore @Deployment(resources = {"subprocess/DoCreateVnf.bpmn", "subprocess/GenericGetService.bpmn", "subprocess/GenericGetVnf.bpmn", diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DeleteGenericALaCarteServiceInstanceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DeleteGenericALaCarteServiceInstanceTest.java new file mode 100644 index 0000000000..d9e882b612 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DeleteGenericALaCarteServiceInstanceTest.java @@ -0,0 +1,91 @@ +package org.openecomp.mso.bpmn.infrastructure;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.openecomp.mso.bpmn.common.BPMNUtil.executeWorkFlow;
+import static org.openecomp.mso.bpmn.common.BPMNUtil.waitForWorkflowToFinish;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
+
+/**
+ * Unit test cases for DelServiceInstance.bpmn
+ */
+public class DeleteGenericALaCarteServiceInstanceTest extends WorkflowTest {
+
+ public DeleteGenericALaCarteServiceInstanceTest() throws IOException {
+ }
+
+ /**
+ * Sunny day VID scenario.
+ *
+ * @throws Exception
+ */
+ @Ignore // IGNORED FOR 1710 MERGE TO ONAP
+ @Test
+ @Deployment(resources = {
+ "process/DeleteGenericALaCarteServiceInstance.bpmn",
+ "subprocess/DoDeleteServiceInstance.bpmn",
+ "subprocess/GenericDeleteService.bpmn",
+ "subprocess/GenericGetService.bpmn",
+ "subprocess/CompleteMsoProcess.bpmn",
+ "subprocess/FalloutHandler.bpmn" })
+ public void sunnyDayAlaCarte() throws Exception {
+
+ logStart();
+
+ //AAI
+ MockDeleteServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "");
+ MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSINoRelations.xml");
+ MockNodeQueryServiceInstanceById("MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSIUrlById.xml");
+ //DB
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+
+ String businessKey = UUID.randomUUID().toString();
+
+ Map<String, String> variables = setupVariables();
+ WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "DeleteGenericALaCarteServiceInstance", variables);
+ waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
+
+ String workflowResp = BPMNUtil.getVariable(processEngineRule, "DeleteGenericALaCarteServiceInstance", "WorkflowResponse");
+ //assertNotNull(workflowResp);
+ System.out.println("Workflow (Synch) Response:\n" + workflowResp);
+ String workflowException = BPMNUtil.getVariable(processEngineRule, "DeleteGenericALaCarteServiceInstance", "WorkflowException");
+ String completionReq = BPMNUtil.getVariable(processEngineRule, "DeleteGenericALaCarteServiceInstance", "completionRequest");
+ System.out.println("completionReq:\n" + completionReq);
+ System.out.println("workflowException:\n" + workflowException);
+ assertNotNull(completionReq);
+ assertEquals(null, workflowException);
+
+ logEnd();
+ }
+
+ // Success Scenario
+ private Map<String, String> setupVariables() {
+ Map<String, String> variables = new HashMap<String, String>();
+ variables.put("isDebugLogEnabled", "true");
+ variables.put("bpmnRequest", getRequest());
+ variables.put("mso-request-id", "RaaTestRequestId-1");
+ variables.put("serviceInstanceId","MIS%252F1604%252F0026%252FSW_INTERNET");
+ return variables;
+ }
+
+ public String getRequest() {
+ String request = "{\"requestDetails\":{\"modelInfo\":{\"modelType\":\"service\",\"modelInvariantUuid\":\"uuid-miu-svc-011-abcdef\",\"modelUuid\":\"ASDC_TOSCA_UUID\",\"modelName\":\"SIModelName1\",\"modelVersion\":\"2\"},\"subscriberInfo\":{\"globalSubscriberId\":\"SDN-ETHERNET-INTERNET\",\"subscriberName\":\"\"},\"requestInfo\":{\"instanceName\":\"1604-MVM-26\",\"source\":\"VID\",\"suppressRollback\":\"true\",\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"mdt1\",\"tenantId\":\"8b1df54faa3b49078e3416e21370a3ba\"},\"requestParameters\":{\"subscriptionServiceType\":\"123456789\",\"aLaCarte\":\"false\",\"userParams\":\"somep\"}}}";
+ return request;
+ }
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DeleteNetworkInstanceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DeleteNetworkInstanceTest.java new file mode 100644 index 0000000000..0da2526fc1 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DeleteNetworkInstanceTest.java @@ -0,0 +1,321 @@ +package org.openecomp.mso.bpmn.infrastructure;
+
+import static org.openecomp.mso.bpmn.common.BPMNUtil.executeAsyncWorkflow;
+import static org.openecomp.mso.bpmn.common.BPMNUtil.getVariable;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetCloudRegion;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkByIdWithDepth;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseNetworkAdapter.MockNetworkAdapter;
+import static org.openecomp.mso.bpmn.mock.StubResponseNetworkAdapter.MockNetworkAdapterContainingRequest;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapterTopology;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.SDNCAdapterCallbackRule;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.common.WorkflowTestTransformer;
+import org.openecomp.mso.bpmn.mock.SDNCAdapterNetworkTopologyMockTransformer;
+
+import com.github.tomakehurst.wiremock.extension.ResponseTransformer;
+
+
+/**
+ * Unit test cases for DeleteNetworkInstance.bpmn
+ *
+ */
+//@Ignore
+public class DeleteNetworkInstanceTest extends WorkflowTest {
+ @WorkflowTestTransformer
+ public static final ResponseTransformer sdncAdapterMockTransformer =
+ new SDNCAdapterNetworkTopologyMockTransformer();
+
+ @Rule
+ public final SDNCAdapterCallbackRule sdncAdapterCallbackRule =
+ new SDNCAdapterCallbackRule(processEngineRule);
+
+ /**
+ * End-to-End flow - Unit test for DeleteNetworkInstance.bpmn
+ * - String input & String response
+ */
+
+ @Test
+ //@Ignore
+ @Deployment(resources = {"process/DeleteNetworkInstance.bpmn",
+ "subprocess/DoDeleteNetworkInstance.bpmn",
+ "subprocess/DoDeleteNetworkInstanceRollback.bpmn",
+ "subprocess/FalloutHandler.bpmn",
+ "subprocess/CompleteMsoProcess.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn"})
+
+ public void shouldInvokeServiceDeleteNetworkInstance_VID_Success() throws Exception {
+
+ System.out.println("----------------------------------------------------------");
+ System.out.println(" Success VID - DeleteNetworkInstance flow Started! ");
+ System.out.println("----------------------------------------------------------");
+
+ // setup simulators
+ mockSDNCAdapterTopology("DeleteNetworkV2mock/sdncDeleteNetworkTopologySimResponse.xml", "SvcAction>delete");
+ MockNetworkAdapter("bdc5efe8-404a-409b-85f6-0dcc9eebae30", 200, "deleteNetworkResponse_Success.xml");
+ MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "1");
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+ MockGetCloudRegion("RDM2WAGPLCP", 200, "DeleteNetworkV2/cloudRegion30_AAIResponse_Success.xml");
+
+ Map<String, String> variables = new HashMap<String, String>();
+ variables.put("mso-request-id", "testRequestId");
+ variables.put("requestId", "testRequestId");
+ variables.put("isBaseVfModule", "true");
+ variables.put("recipeTimeout", "0");
+ variables.put("requestAction", "DELETE");
+ variables.put("serviceInstanceId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
+ variables.put("vnfId", "");
+ variables.put("vfModuleId", "");
+ variables.put("volumeGroupId", "");
+ variables.put("networkId", "bdc5efe8-404a-409b-85f6-0dcc9eebae30");
+ variables.put("serviceType", "MOG");
+ variables.put("vfModuleType", "");
+ variables.put("networkType", "modelName");
+ variables.put("bpmnRequest", getDeleteNetworkInstanceInfraRequest());
+
+ executeAsyncWorkflow(processEngineRule, "DeleteNetworkInstance", variables);
+
+ Assert.assertNotNull("DELNI_CompleteMsoProcessRequest - ", getVariable(processEngineRule, "DeleteNetworkInstance", "DELNI_CompleteMsoProcessRequest"));
+ Assert.assertEquals("true", getVariable(processEngineRule, "DeleteNetworkInstance", "DELNI_Success"));
+
+ String workflowResp = BPMNUtil.getVariable(processEngineRule, "DeleteNetworkInstance", "WorkflowResponse");
+ Assert.assertNotNull(workflowResp);
+ System.out.println("DeleteNetworkInstanceTest.shouldInvokeServiceDeleteNetworkInstance_Success() WorkflowResponse:\n" + workflowResp);
+
+ String completeMsoProcessRequest =
+ "<aetgt:MsoCompletionRequest xmlns:aetgt=\"http://org.openecomp/mso/workflow/schema/v1\"" + '\n'
+ + " xmlns:ns=\"http://org.openecomp/mso/request/types/v1\"" + '\n'
+ + " xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">" + '\n'
+ + " <request-info>" + '\n'
+ + " <request-id>testRequestId</request-id>" + '\n'
+ + " <action>DELETE</action>" + '\n'
+ + " <source>VID</source>" + '\n'
+ + " </request-info>" + '\n'
+ + " <aetgt:status-message>Network has been deleted successfully.</aetgt:status-message>" + '\n'
+ + " <aetgt:mso-bpel-name>BPMN Network action: DELETE</aetgt:mso-bpel-name>" + '\n'
+ + "</aetgt:MsoCompletionRequest>";
+
+ Assert.assertEquals(completeMsoProcessRequest, getVariable(processEngineRule, "DeleteNetworkInstance", "DELNI_CompleteMsoProcessRequest"));
+
+ System.out.println("----------------------------------------------------------");
+ System.out.println(" Success VID - DeleteNetworkInstance flow Completed ");
+ System.out.println("----------------------------------------------------------");
+
+
+ }
+
+ @Test
+ //@Ignore
+ @Deployment(resources = {"process/DeleteNetworkInstance.bpmn",
+ "subprocess/DoDeleteNetworkInstance.bpmn",
+ //"subprocess/DoDeleteNetworkInstanceRollback.bpmn",
+ "subprocess/FalloutHandler.bpmn",
+ "subprocess/CompleteMsoProcess.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn"})
+
+ public void shouldInvokeServiceDeleteNetworkInstance_vIPER_Success() throws Exception {
+
+ System.out.println("----------------------------------------------------------");
+ System.out.println(" Success vIPER - DeleteNetworkInstance flow Started! ");
+ System.out.println("----------------------------------------------------------");
+
+ // setup simulators
+ mockSDNCAdapterTopology("DeleteNetworkV2mock/sdncDeleteNetworkTopologySimResponse.xml", "SvcAction>unassign");
+ mockSDNCAdapterTopology("DeleteNetworkV2mock/sdncDeleteNetworkTopologySimResponse.xml", "SvcAction>deactivate");
+ MockNetworkAdapter("bdc5efe8-404a-409b-85f6-0dcc9eebae30", 200, "deleteNetworkResponse_Success.xml");
+ MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "1");
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+ MockGetCloudRegion("RDM2WAGPLCP", 200, "DeleteNetworkV2/cloudRegion30_AAIResponse_Success.xml");
+
+ String networkModelInfo = " {\"modelName\": \"modelName\", " + '\n' +
+ " \"networkType\": \"modelName\" }";
+
+ Map<String, String> variables = new HashMap<String, String>();
+ variables.put("testMessageId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56");
+ variables.put("msoRequestId", "testRequestId");
+ variables.put("requestId", "testRequestId");
+ variables.put("serviceInstanceId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
+ variables.put("networkId", "bdc5efe8-404a-409b-85f6-0dcc9eebae30");
+ variables.put("networkName", "HSL_direct_net_2");
+ variables.put("lcpCloudRegionId", "RDM2WAGPLCP");
+ variables.put("tenantId", "88a6ca3ee0394ade9403f075db23167e");
+ variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
+ variables.put("disableRollback", "false"); // 1702
+ variables.put("failIfExists", "false");
+ //variables.put("sdncVersion", "1702");
+ variables.put("sdncVersion", "1707");
+ variables.put("subscriptionServiceType", "MSO-dev-service-type");
+ variables.put("networkModelInfo", networkModelInfo);
+
+ executeAsyncWorkflow(processEngineRule, "DeleteNetworkInstance", variables);
+
+ Assert.assertNotNull("DELNI_CompleteMsoProcessRequest - ", getVariable(processEngineRule, "DeleteNetworkInstance", "DELNI_CompleteMsoProcessRequest"));
+ Assert.assertEquals("true", getVariable(processEngineRule, "DeleteNetworkInstance", "DELNI_Success"));
+
+ String workflowResp = BPMNUtil.getVariable(processEngineRule, "DeleteNetworkInstance", "WorkflowResponse");
+ Assert.assertNotNull(workflowResp);
+ System.out.println("DeleteNetworkInstanceTest.shouldInvokeServiceDeleteNetworkInstance_vIPER_Success() WorkflowResponse:\n" + workflowResp);
+
+ String completeMsoProcessRequest =
+ "<aetgt:MsoCompletionRequest xmlns:aetgt=\"http://org.openecomp/mso/workflow/schema/v1\"" + '\n'
+ + " xmlns:ns=\"http://org.openecomp/mso/request/types/v1\"" + '\n'
+ + " xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">" + '\n'
+ + " <request-info>" + '\n'
+ + " <request-id>testRequestId</request-id>" + '\n'
+ + " <action>DELETE</action>" + '\n'
+ + " <source>VID</source>" + '\n'
+ + " </request-info>" + '\n'
+ + " <aetgt:status-message>Network has been deleted successfully.</aetgt:status-message>" + '\n'
+ + " <aetgt:mso-bpel-name>BPMN Network action: DELETE</aetgt:mso-bpel-name>" + '\n'
+ + "</aetgt:MsoCompletionRequest>";
+
+ Assert.assertEquals(completeMsoProcessRequest, getVariable(processEngineRule, "DeleteNetworkInstance", "DELNI_CompleteMsoProcessRequest"));
+
+ System.out.println("----------------------------------------------------------");
+ System.out.println(" Success VID - DeleteNetworkInstance flow Completed ");
+ System.out.println("----------------------------------------------------------");
+
+
+ }
+
+ @Test
+ //@Ignore
+ @Deployment(resources = {"process/DeleteNetworkInstance.bpmn",
+ "subprocess/DoDeleteNetworkInstance.bpmn",
+ "subprocess/DoDeleteNetworkInstanceRollback.bpmn",
+ "subprocess/FalloutHandler.bpmn",
+ "subprocess/CompleteMsoProcess.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn"})
+
+ public void shouldInvokeServiceDeleteNetworkInstanceInfra_vIPER_Rollback() throws Exception {
+ // Rollback is not Applicable for DeleteNetwork (no requirements). Rollback should not be invoked.
+ System.out.println("----------------------------------------------------------");
+ System.out.println(" Rollback - DeleteNetworkInstance flow Started! ");
+ System.out.println("----------------------------------------------------------");
+
+ // setup simulatores
+ mockSDNCAdapter("/SDNCAdapter", "SvcAction>unassign", 500, "");
+ mockSDNCAdapterTopology("DeleteNetworkV2mock/sdncDeleteNetworkTopologySimResponse.xml", "SvcAction>deactivate");
+ mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologySimResponse.xml", "SvcAction>activate");
+ MockNetworkAdapter("bdc5efe8-404a-409b-85f6-0dcc9eebae30", 200, "deleteNetworkResponse_Success.xml");
+ MockNetworkAdapterContainingRequest("createNetworkRequest", 200, "CreateNetworkV2/createNetworkResponse_Success.xml");
+ MockGetNetworkByIdWithDepth ("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "1");
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+ MockGetCloudRegion("RDM2WAGPLCP", 200, "DeleteNetworkV2/cloudRegion30_AAIResponse_Success.xml");
+
+ String networkModelInfo = " {\"modelCustomizationId\": \"uuid-nrc-001-1234\", " + '\n' +
+ " \"modelInvariantId\": \"was-ist-das-001-1234\" }";
+
+ Map<String, String> variables = new HashMap<String, String>();
+ variables.put("testMessageId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56");
+ variables.put("msoRequestId", "testRequestId");
+ variables.put("requestId", "testRequestId");
+ variables.put("serviceInstanceId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
+ variables.put("networkId", "bdc5efe8-404a-409b-85f6-0dcc9eebae30");
+ variables.put("networkName", "HSL_direct_net_2");
+ variables.put("lcpCloudRegionId", "RDM2WAGPLCP");
+ variables.put("tenantId", "88a6ca3ee0394ade9403f075db23167e");
+ variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
+ variables.put("disableRollback", "false"); // 1702
+ variables.put("failIfExists", "false");
+ variables.put("sdncVersion", "1702");
+ variables.put("subscriptionServiceType", "MSO-dev-service-type");
+ variables.put("networkModelInfo", networkModelInfo);
+
+ executeAsyncWorkflow(processEngineRule, "DeleteNetworkInstance", variables);
+ //WorkflowResponse workflowResponse = executeAsyncWorkflow(processEngineRule, "DeleteNetworkInstance", variables);
+ //waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
+
+ String workflowResp = BPMNUtil.getVariable(processEngineRule, "DeleteNetworkInstance", "WorkflowResponse");
+ Assert.assertNotNull(workflowResp);
+
+ Assert.assertNotNull("DELNI_FalloutHandlerRequest - ", getVariable(processEngineRule, "DeleteNetworkInstance", "DELNI_FalloutHandlerRequest"));
+ Assert.assertEquals("false", getVariable(processEngineRule, "DeleteNetworkInstance", "DELNI_Success"));
+ Assert.assertEquals("false", BPMNUtil.getVariable(processEngineRule, "DoDeleteNetworkInstance", "DELNWKI_Success"));
+
+ System.out.println("----------------------------------------------------------");
+ System.out.println(" Rollback - DeleteNetworkInstanceModular flow Completed ");
+ System.out.println("----------------------------------------------------------");
+
+
+ }
+
+
+ // *****************
+ // Utility Section
+ // *****************
+
+ public String getDeleteNetworkInstanceInfraRequest() {
+
+ String request =
+ "{ \"requestDetails\": { " + '\n' +
+ " \"modelInfo\": { " + '\n' +
+ " \"modelType\": \"modelType\", " + '\n' +
+ " \"modelCustomizationId\": \"f21df226-8093-48c3-be7e-0408fcda0422\", " + '\n' +
+ " \"modelName\": \"CONTRAIL_EXTERNAL\", " + '\n' +
+ " \"modelVersion\": \"1.0\" " + '\n' +
+ " }, " + '\n' +
+ " \"cloudConfiguration\": { " + '\n' +
+ " \"lcpCloudRegionId\": \"RDM2WAGPLCP\", " + '\n' +
+ " \"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\" " + '\n' +
+ " }, " + '\n' +
+ " \"requestInfo\": { " + '\n' +
+ " \"instanceName\": \"HSL_direct_net_2\", " + '\n' +
+ " \"source\": \"VID\", " + '\n' +
+ " \"suppressRollback\": \"false\", " + '\n' +
+ " \"callbackUrl\": \"\" " + '\n' +
+ " }, " + '\n' +
+ " \"requestParameters\": { " + '\n' +
+ " \"backoutOnFailure\": true, " + '\n' +
+ " \"serviceId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\", " + '\n' +
+ " \"userParams\": {} " + '\n' +
+ " } " + '\n' +
+ " } " + '\n' +
+ "}";
+ return request;
+
+ }
+
+
+ public String getDeleteNetworkInstanceInfraRequest_MissingId() {
+
+ String request =
+ "{ \"requestDetails\": { " + '\n' +
+ " \"modelInfo\": { " + '\n' +
+ " \"modelType\": \"modelType\", " + '\n' +
+ " \"modelId\": \"modelId\", " + '\n' +
+ " \"modelNameVersionId\": \"modelNameVersionId\", " + '\n' +
+ " \"modelName\": \"CONTRAIL_EXTERNAL\", " + '\n' +
+ " \"modelVersion\": \"1\" " + '\n' +
+ " }, " + '\n' +
+ " \"cloudConfiguration\": { " + '\n' +
+ " \"lcpCloudRegionId\": \"RDM2WAGPLCP\", " + '\n' +
+ " \"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\" " + '\n' +
+ " }, " + '\n' +
+ " \"requestInfo\": { " + '\n' +
+ " \"instanceName\": \"HSL_direct_net_2\", " + '\n' +
+ " \"source\": \"VID\", " + '\n' +
+ " \"callbackUrl\": \"\" " + '\n' +
+ " }, " + '\n' +
+ " \"requestParameters\": { " + '\n' +
+ " \"backoutOnFailure\": true, " + '\n' +
+ " \"serviceId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\", " + '\n' +
+ " \"userParams\": [] " + '\n' +
+ " } " + '\n' +
+ " } " + '\n' +
+ "}";
+ return request;
+
+ }
+
+}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateSIRollbackTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateSIRollbackTest.java new file mode 100644 index 0000000000..f2c9680075 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateSIRollbackTest.java @@ -0,0 +1,179 @@ +package org.openecomp.mso.bpmn.infrastructure;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.core.RollbackData;
+
+/**
+ * Unit test cases for DoCreateServiceInstanceRollback.bpmn
+ */
+public class DoCreateSIRollbackTest extends WorkflowTest {
+ private static final String EOL = "\n";
+ private final CallbackSet callbacks = new CallbackSet();
+ private final String sdncAdapterCallback =
+ "<output xmlns=\"com:att:sdnctl:l3api\">" + EOL +
+ " <svc-request-id>((REQUEST-ID))</svc-request-id>" + EOL +
+ " <ack-final-indicator>Y</ack-final-indicator>" + EOL +
+ "</output>" + EOL;
+
+ public DoCreateSIRollbackTest() throws IOException {
+ callbacks.put("deactivate", sdncAdapterCallback);
+ callbacks.put("delete", sdncAdapterCallback);
+ }
+
+ /**
+ * Sunny day VID scenario.
+ *
+ * @throws Exception
+ */
+ //@Ignore // File not found - unable to run the test. Also, Stubs need updating..
+ @Test
+ @Deployment(resources = {
+ "subprocess/DoCreateServiceInstanceRollback.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/GenericDeleteService.bpmn",
+ "subprocess/GenericGetService.bpmn",
+ "subprocess/CompleteMsoProcess.bpmn",
+ "subprocess/FalloutHandler.bpmn" })
+ public void sunnyDay() throws Exception {
+
+ logStart();
+
+ //AAI
+ MockDeleteServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "");
+ MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSINoRelations.xml");
+ MockNodeQueryServiceInstanceById("MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSIUrlById.xml");
+ //SDNC
+ mockSDNCAdapter(200);
+ //DB
+ mockUpdateRequestDB(200, "DBUpdateResponse.xml");
+ String businessKey = UUID.randomUUID().toString();
+
+ Map<String, Object> variables = new HashMap<String, Object>();
+ setupVariables(variables);
+ invokeSubProcess("DoCreateServiceInstanceRollback", businessKey, variables);
+ injectSDNCCallbacks(callbacks, "deactivate");
+ injectSDNCCallbacks(callbacks, "delete");
+ waitForProcessEnd(businessKey, 10000);
+ Assert.assertTrue(isProcessEnded(businessKey));
+ String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateServiceInstanceRollback", "WorkflowException");
+ System.out.println("workflowException:\n" + workflowException);
+ assertEquals(null, workflowException);
+
+ logEnd();
+ }
+
+ // Success Scenario
+ private void setupVariables(Map<String, Object> variables) {
+ variables.put("isDebugLogEnabled", "true");
+ variables.put("msoRequestId", "RaaTestRequestId-1");
+ variables.put("mso-request-id", "RaaTestRequestId-1");
+ variables.put("serviceInstanceId","MIS%252F1604%252F0026%252FSW_INTERNET");
+
+ RollbackData rollbackData = new RollbackData();
+
+ rollbackData.put("SERVICEINSTANCE", "serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+ rollbackData.put("SERVICEINSTANCE", "globalCustomerId", "SDN-ETHERNET-INTERNET");
+ rollbackData.put("SERVICEINSTANCE", "serviceSubscriptionType", "123456789");
+ rollbackData.put("SERVICEINSTANCE", "disablerollback", "false");
+ rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true");
+ rollbackData.put("SERVICEINSTANCE", "rollbackSDNC", "true");
+
+ String req = "<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5=\"http://org.openecomp/mso/request/types/v1\"" + EOL +
+ "xmlns:sdncadapter=\"http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1\" " + EOL +
+ "xmlns:sdncadapterworkflow=\"http://org.openecomp/mso/workflow/schema/v1\">" + EOL +
+ "<sdncadapter:RequestHeader>" + EOL +
+ "<sdncadapter:RequestId>b043d290-140d-4a38-a9b6-95d3b8bd27d4</sdncadapter:RequestId>" + EOL +
+ "<sdncadapter:SvcInstanceId>MIS%252F1604%252F0026%252FSW_INTERNET</sdncadapter:SvcInstanceId>" + EOL +
+ "<sdncadapter:SvcAction>deactivate</sdncadapter:SvcAction>" + EOL +
+ "<sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation>" + EOL +
+ "<sdncadapter:CallbackUrl>http://localhost:8080/mso/SDNCAdapterCallbackService</sdncadapter:CallbackUrl>" + EOL +
+ "</sdncadapter:RequestHeader>" + EOL +
+ "<sdncadapterworkflow:SDNCRequestData>" + EOL +
+ "<request-information>" + EOL +
+ "<request-id>RaaTestRequestId-1</request-id>" + EOL +
+ "<source>MSO</source>" + EOL +
+ "<notification-url/>" + EOL +
+ "<order-number/>" + EOL +
+ "<order-version/>" + EOL +
+ "<request-action>DeleteServiceInstance</request-action>" + EOL +
+ "</request-information>" + EOL +
+ "<service-information>" + EOL +
+ "<service-id/>" + EOL +
+ "<subscription-service-type>123456789</subscription-service-type>" + EOL +
+ "<ecomp-model-information>" + EOL +
+ "<model-invariant-uuid/>" + EOL +
+ "<model-uuid/>" + EOL +
+ "<model-version/>" + EOL +
+ "<model-name/>" + EOL +
+ "</ecomp-model-information>" + EOL +
+ "<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>" + EOL +
+ "<subscriber-name/>" + EOL +
+ "<global-customer-id>SDN-ETHERNET-INTERNET</global-customer-id>" + EOL +
+ "</service-information>" + EOL +
+ "<service-request-input>" + EOL +
+ "<service-instance-name/>" + EOL +
+ "</service-request-input>" + EOL +
+ "</sdncadapterworkflow:SDNCRequestData>" + EOL +
+ "</sdncadapterworkflow:SDNCAdapterWorkflowRequest>";
+
+ String req1 = "<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5=\"http://org.openecomp/mso/request/types/v1\"" + EOL +
+ "xmlns:sdncadapter=\"http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1\" " + EOL +
+ "xmlns:sdncadapterworkflow=\"http://org.openecomp/mso/workflow/schema/v1\">" + EOL +
+ "<sdncadapter:RequestHeader>" + EOL +
+ "<sdncadapter:RequestId>bca4fede-0804-4c13-af69-9e80b378150f</sdncadapter:RequestId>" + EOL +
+ "<sdncadapter:SvcInstanceId>MIS%252F1604%252F0026%252FSW_INTERNET</sdncadapter:SvcInstanceId>" + EOL +
+ "<sdncadapter:SvcAction>delete</sdncadapter:SvcAction>" + EOL +
+ "<sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation>" + EOL +
+ "<sdncadapter:CallbackUrl>http://localhost:8080/mso/SDNCAdapterCallbackService</sdncadapter:CallbackUrl>" + EOL +
+ "</sdncadapter:RequestHeader>" + EOL +
+ "<sdncadapterworkflow:SDNCRequestData>" + EOL +
+ "<request-information>" + EOL +
+ "<request-id>RaaTestRequestId-1</request-id>" + EOL +
+ "<source>MSO</source>" + EOL +
+ "<notification-url/>" + EOL +
+ "<order-number/>" + EOL +
+ "<order-version/>" + EOL +
+ "<request-action>DeleteServiceInstance</request-action>" + EOL +
+ "</request-information>" + EOL +
+ "<service-information>" + EOL +
+ "<service-id/>" + EOL +
+ "<subscription-service-type>123456789</subscription-service-type>" + EOL +
+ "<ecomp-model-information>" + EOL +
+ "<model-invariant-uuid/>" + EOL +
+ "<model-uuid/>" + EOL +
+ "<model-version/>" + EOL +
+ "<model-name/>" + EOL +
+ "</ecomp-model-information>" + EOL +
+ "<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>" + EOL +
+ "<subscriber-name/>" + EOL +
+ "<global-customer-id>SDN-ETHERNET-INTERNET</global-customer-id>" + EOL +
+ "</service-information>" + EOL +
+ "<service-request-input>" + EOL +
+ "<service-instance-name/>" + EOL +
+ "</service-request-input>" + EOL +
+ "</sdncadapterworkflow:SDNCRequestData>" + EOL +
+ "</sdncadapterworkflow:SDNCAdapterWorkflowRequest>";
+
+ rollbackData.put("SERVICEINSTANCE", "sdncDeactivate", req);
+
+ rollbackData.put("SERVICEINSTANCE", "sdncDelete",req1);
+ variables.put("rollbackData",rollbackData);
+
+ }
+}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstanceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstanceTest.java new file mode 100644 index 0000000000..359a372098 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstanceTest.java @@ -0,0 +1,98 @@ +package org.openecomp.mso.bpmn.infrastructure; + +import static org.junit.Assert.assertEquals; +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetCustomer; +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance; +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById; +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceByName; +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutServiceInstance; +import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB; +import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.camunda.bpm.engine.test.Deployment; +import org.junit.Assert; +import org.junit.Test; +import org.openecomp.mso.bpmn.common.BPMNUtil; +import org.openecomp.mso.bpmn.common.WorkflowTest; + +/** + * Unit test cases for DoCreateServiceInstance.bpmn + */ +public class DoCreateServiceInstanceTest extends WorkflowTest { + private static final String EOL = "\n"; + private final CallbackSet callbacks = new CallbackSet(); + private final String sdncAdapterCallback = + "<output xmlns=\"com:att:sdnctl:l3api\">" + EOL + + " <svc-request-id>((REQUEST-ID))</svc-request-id>" + EOL + + " <ack-final-indicator>Y</ack-final-indicator>" + EOL + + "</output>" + EOL; + + public DoCreateServiceInstanceTest() throws IOException { + callbacks.put("assign", sdncAdapterCallback); + } + + /** + * Sunny day VID scenario. + * + * @throws Exception + */ + //@Ignore // File not found - unable to run the test. Also, Stubs need updating.. + @Test + @Deployment(resources = { + "subprocess/DoCreateServiceInstance.bpmn", + "subprocess/SDNCAdapterV1.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/GenericPutService.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/DoCreateServiceInstanceRollback.bpmn", + "subprocess/FalloutHandler.bpmn" }) + public void sunnyDay() throws Exception { + + logStart(); + + //AAI + MockGetCustomer("MCBH-1610", "CreateServiceInstance/createServiceInstance_queryGlobalCustomerId_AAIResponse_Success.xml"); + MockPutServiceInstance("MCBH-1610", "viprsvc", "RaaTest-si-id", ""); + MockGetServiceInstance("MCBH-1610", "viprsvc", "RaaTest-si-id", "GenericFlows/getServiceInstance.xml"); + MockNodeQueryServiceInstanceByName("RAATest-si", ""); + + MockNodeQueryServiceInstanceById("RaaTest-si-id", ""); + MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSINoRelations.xml"); + MockNodeQueryServiceInstanceById("MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSIUrlById.xml"); + //SDNC + mockSDNCAdapter(200); + //DB + mockUpdateRequestDB(200, "DBUpdateResponse.xml"); + String businessKey = UUID.randomUUID().toString(); + + Map<String, Object> variables = new HashMap<String, Object>(); + setupVariables(variables); + invokeSubProcess("DoCreateServiceInstance", businessKey, variables); + injectSDNCCallbacks(callbacks, "assign"); + waitForProcessEnd(businessKey, 10000); + Assert.assertTrue(isProcessEnded(businessKey)); + String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateServiceInstance", "WorkflowException"); + System.out.println("workflowException:\n" + workflowException); + assertEquals(null, workflowException); + + logEnd(); + } + + // Success Scenario + private void setupVariables(Map<String, Object> variables) { + variables.put("mso-request-id", "RaaDSITest1"); + variables.put("isDebugLogEnabled", "true"); + variables.put("msoRequestId", "RaaDSITestRequestId-1"); + variables.put("serviceInstanceId","RaaTest-si-id"); + variables.put("serviceModelInfo", "{\"modelType\":\"service\",\"modelInvariantUuid\":\"uuid-miu-svc-011-abcdef\",\"modelVersionUuid\":\"ASDC_TOSCA_UUID\",\"modelName\":\"SIModelName1\",\"modelVersion\":\"2\"}"); + variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"); + variables.put("globalSubscriberId", "MCBH-1610"); + variables.put("subscriptionServiceType", "viprsvc"); + variables.put("instanceName", "RAATest-1"); + } +}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleRollbackTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleRollbackTest.java index 5b0d4c73bd..ea46bfe8a2 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleRollbackTest.java +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleRollbackTest.java @@ -136,7 +136,8 @@ public class DoCreateVfModuleRollbackTest extends WorkflowTest { variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
rollbackData.put("VFMODULE", "msorequestid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
rollbackData.put("VFMODULE", "serviceinstanceid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
- variables.put("RollbackData", rollbackData);
+ variables.put("rollbackData", rollbackData);
+ variables.put("sdncVersion", "1702");
invokeSubProcess("DoCreateVfModuleRollback", businessKey, variables);
// "changedelete" operation not required for deleting a Vf Module
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleTest.java index fc4816cef3..565ef0285a 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleTest.java +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleTest.java @@ -22,8 +22,11 @@ package org.openecomp.mso.bpmn.infrastructure; import static org.openecomp.mso.bpmn.common.BPMNUtil.getRawVariable;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutNetwork;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;
@@ -38,10 +41,8 @@ import java.util.UUID; import org.camunda.bpm.engine.test.Deployment;
import org.junit.Assert;
-import org.junit.Ignore;
import org.junit.Test;
import org.openecomp.mso.bpmn.common.WorkflowTest;
-import org.openecomp.mso.bpmn.common.WorkflowTest.CallbackSet;
import org.openecomp.mso.bpmn.mock.FileUtil;
/**
@@ -56,6 +57,12 @@ public class DoCreateVfModuleTest extends WorkflowTest { "__files/VfModularity/SDNCTopologyAssignCallback.xml"));
callbacks.put("query", FileUtil.readResourceFile(
"__files/VfModularity/SDNCTopologyQueryCallback.xml"));
+ callbacks.put("queryVnf", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyQueryCallbackVnf.xml"));
+ callbacks.put("queryModuleNoVnf", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyQueryCallbackVfModuleNoVnf.xml"));
+ callbacks.put("queryModule", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyQueryCallbackVfModule.xml"));
callbacks.put("activate", FileUtil.readResourceFile(
"__files/VfModularity/SDNCTopologyActivateCallback.xml"));
callbacks.put("vnfCreate", FileUtil.readResourceFile(
@@ -66,10 +73,11 @@ public class DoCreateVfModuleTest extends WorkflowTest { * Test the sunny day scenario.
*/
@Test
- @Ignore
+
@Deployment(resources = {
"subprocess/DoCreateVfModule.bpmn",
"subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/GenericGetVnf.bpmn",
"subprocess/VnfAdapterRestV1.bpmn",
"subprocess/ConfirmVolumeGroupTenant.bpmn",
"subprocess/ConfirmVolumeGroupName.bpmn",
@@ -82,6 +90,54 @@ public class DoCreateVfModuleTest extends WorkflowTest { logStart();
+ MockAAIVfModule();
+ MockPatchGenericVnf("skask");
+ MockPatchVfModuleId("skask", ".*");
+ mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
+ mockVNFPost("", 202, "skask");
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+
+ String businessKey = UUID.randomUUID().toString();
+ //RuntimeService runtimeService = processEngineRule.getRuntimeService();
+
+ Map<String, Object> variables = setupVariablesSunnyDayBuildingBlocks();
+ //runtimeService.startProcessInstanceByKey("DoCreateVfModule", variables);
+ invokeSubProcess("DoCreateVfModule", businessKey, variables);
+
+ injectSDNCCallbacks(callbacks, "queryVnf");
+ injectSDNCCallbacks(callbacks, "assign, queryModuleNoVnf");
+ injectVNFRestCallbacks(callbacks, "vnfCreate");
+ injectSDNCCallbacks(callbacks, "activate");
+
+ waitForProcessEnd(businessKey, 10000);
+
+ Assert.assertTrue(isProcessEnded(businessKey));
+ Assert.assertTrue((boolean) getRawVariable(processEngineRule, "DoCreateVfModule", "DCVFM_SuccessIndicator"));
+
+ logEnd();
+ }
+
+ /**
+ * Test the sunny day scenario with 1702 SDNC interaction.
+ */
+ @Test
+
+ @Deployment(resources = {
+ "subprocess/DoCreateVfModule.bpmn",
+ "subprocess/GenericGetVnf.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/VnfAdapterRestV1.bpmn",
+ "subprocess/ConfirmVolumeGroupTenant.bpmn",
+ "subprocess/ConfirmVolumeGroupName.bpmn",
+ "subprocess/CreateAAIVfModule.bpmn",
+ "subprocess/UpdateAAIVfModule.bpmn",
+ "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",
+ "subprocess/UpdateAAIGenericVnf.bpmn"
+ })
+ public void sunnyDay_1702() throws IOException {
+
+ logStart();
+
MockGetGenericVnfByIdWithPriority("skask", ".*", 200, "VfModularity/VfModule-new.xml", 5);
MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");
MockPutVfModuleIdNoResponse("skask", "PCRF", ".*");
@@ -91,11 +147,72 @@ public class DoCreateVfModuleTest extends WorkflowTest { mockSDNCAdapter("/SDNCAdapter", "SvcAction>query", 200, "VfModularity/StandardSDNCSynchResponse.xml");
mockVNFPost("", 202, "skask");
mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+ MockPatchGenericVnf("skask");
+ MockPatchVfModuleId("skask", ".*");
String businessKey = UUID.randomUUID().toString();
//RuntimeService runtimeService = processEngineRule.getRuntimeService();
Map<String, Object> variables = setupVariablesSunnyDayBuildingBlocks();
+ variables.put("sdncVersion", "1702");
+ //runtimeService.startProcessInstanceByKey("DoCreateVfModule", variables);
+ invokeSubProcess("DoCreateVfModule", businessKey, variables);
+
+
+ injectSDNCCallbacks(callbacks, "assign, queryModule");
+ injectVNFRestCallbacks(callbacks, "vnfCreate");
+ injectSDNCCallbacks(callbacks, "activate");
+
+ waitForProcessEnd(businessKey, 10000);
+
+ Assert.assertTrue(isProcessEnded(businessKey));
+ Assert.assertTrue((boolean) getRawVariable(processEngineRule, "DoCreateVfModule", "DCVFM_SuccessIndicator"));
+
+ logEnd();
+ }
+
+ /**
+ * Test the sunny day scenario.
+ */
+ @Test
+
+ @Deployment(resources = {
+ "subprocess/DoCreateVfModule.bpmn",
+ "subprocess/GenerateVfModuleName.bpmn",
+ "subprocess/GenericGetVnf.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/VnfAdapterRestV1.bpmn",
+ "subprocess/ConfirmVolumeGroupTenant.bpmn",
+ "subprocess/ConfirmVolumeGroupName.bpmn",
+ "subprocess/CreateAAIVfModule.bpmn",
+ "subprocess/UpdateAAIVfModule.bpmn",
+ "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",
+ "subprocess/UpdateAAIGenericVnf.bpmn"
+ })
+ public void sunnyDay_withVfModuleNameGeneration() throws IOException {
+
+ logStart();
+
+ MockGetGenericVnfByIdWithPriority("skask", ".*", 200, "VfModularity/VfModule-new.xml", 5);
+ MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");
+ MockPutVfModuleIdNoResponse("skask", "PCRF", ".*");
+ MockPutNetwork(".*", "VfModularity/AddNetworkPolicy_AAIResponse_Success.xml", 200);
+ MockPutGenericVnf("skask");
+ MockAAIVfModule();
+ mockSDNCAdapter("/SDNCAdapter", "vnf-type>STMTN", 200, "VfModularity/StandardSDNCSynchResponse.xml");
+ mockSDNCAdapter("/SDNCAdapter", "SvcAction>query", 200, "VfModularity/StandardSDNCSynchResponse.xml");
+ mockVNFPost("", 202, "skask");
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+ MockPatchGenericVnf("skask");
+ MockPatchVfModuleId("skask", ".*");
+
+ String businessKey = UUID.randomUUID().toString();
+ //RuntimeService runtimeService = processEngineRule.getRuntimeService();
+
+ Map<String, Object> variables = setupVariablesSunnyDayBuildingBlocks();
+ variables.put("vfModuleName", null);
+ variables.put("vfModuleLabel", "MODULELABEL");
+ variables.put("sdncVersion", "1702");
//runtimeService.startProcessInstanceByKey("DoCreateVfModule", variables);
invokeSubProcess("DoCreateVfModule", businessKey, variables);
@@ -111,11 +228,19 @@ public class DoCreateVfModuleTest extends WorkflowTest { logEnd();
}
+
private Map<String, Object> setupVariablesSunnyDayBuildingBlocks() {
Map<String, Object> variables = new HashMap<String, Object>();
+ //try {
+ // variables.put("bpmnRequest", FileUtil.readResourceFile("__files/CreateVfModule_VID_request.json"));
+ //}
+ //catch (Exception e) {
+
+ //}
variables.put("mso-request-id", "testRequestId");
- variables.put("requestId", "testRequestId");
+
+ variables.put("msoRequestId", "testRequestId");
variables.put("isBaseVfModule", false);
variables.put("isDebugLogEnabled", "true");
variables.put("disableRollback", "true");
@@ -123,6 +248,7 @@ public class DoCreateVfModuleTest extends WorkflowTest { //variables.put("requestAction", "CREATE_VF_MODULE");
variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");
variables.put("vnfId", "skask");
+ variables.put("vnfName", "vnfname");
variables.put("vfModuleName", "PCRF::module-0-2");
variables.put("vnfType", "vSAMP12");
variables.put("vfModuleId", "");
@@ -131,20 +257,40 @@ public class DoCreateVfModuleTest extends WorkflowTest { variables.put("vfModuleType", "");
variables.put("isVidRequest", "true");
variables.put("asdcServiceModelVersion", "1.0");
+ variables.put("usePreload", true);
- String vfModuleModelInfo = "{" + "\"modelInfo\": { "+ "\"modelType\": \"vfModule\"," +
- "\"modelInvariantId\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
- "\"modelNameVersionId\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+ String vfModuleModelInfo = "{ "+ "\"modelType\": \"vfModule\"," +
+ "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
+ "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
"\"modelName\": \"STMTN5MMSC21-MMSC::model-1-0\"," +
"\"modelVersion\": \"1\"," +
- "\"modelCustomizationId\": \"MODEL-123\"" + "}}";
+ "\"modelCustomizationUuid\": \"MODEL-123\"" + "}";
variables.put("vfModuleModelInfo", vfModuleModelInfo);
- String cloudConfiguration = "{" + "\"cloudConfiguration\": { " +
- "\"lcpCloudRegionId\": \"MDTWNJ21\"," +
- "\"tenantId\": \"fba1bd1e195a404cacb9ce17a9b2b421\"" + "}}";
- variables.put("cloudConfiguration", cloudConfiguration);
+ variables.put("sdncVersion", "1707");
+
+ variables.put("lcpCloudRegionId", "MDTWNJ21");
+ variables.put("tenantId", "fba1bd1e195a404cacb9ce17a9b2b421");
+
+ String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +
+ "\"modelInvariantUuid\": \"aa5256d2-5a33-55df-13ab-12abad84e7ff\"," +
+ "\"modelUuid\": \"bb6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+ "\"modelName\": \"SVC-STMTN5MMSC21-MMSC::model-1-0\"," +
+ "\"modelVersion\": \"1\"," +
+ "}";
+ variables.put("serviceModelInfo", serviceModelInfo);
+
+ String vnfModelInfo = "{ "+ "\"modelType\": \"vnf\"," +
+ "\"modelInvariantUuid\": \"445256d2-5a33-55df-13ab-12abad84e7ff\"," +
+ "\"modelUuid\": \"f26478e5-ea33-3346-ac12-ab121484a3fe\"," +
+ "\"modelName\": \"VNF-STMTN5MMSC21-MMSC::model-1-0\"," +
+ "\"modelVersion\": \"1\"," +
+ "\"modelCustomizationUuid\": \"VNF-MODEL-123\"" + "}";
+ variables.put("vnfModelInfo", vnfModelInfo);
+
+ variables.put("vnfQueryPath", "/restconf/vnfQueryPath");
+
return variables;
}
-}
+}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleVolumeV1Test.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleVolumeV1Test.java deleted file mode 100644 index c7a112d5aa..0000000000 --- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleVolumeV1Test.java +++ /dev/null @@ -1,351 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * OPENECOMP - MSO - * ================================================================================ - * 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.mso.bpmn.infrastructure; - -import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.delete; -import static com.github.tomakehurst.wiremock.client.WireMock.get; -import static com.github.tomakehurst.wiremock.client.WireMock.post; -import static com.github.tomakehurst.wiremock.client.WireMock.put; -import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; -import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; -import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import org.camunda.bpm.engine.test.Deployment; -import org.junit.Test; -import org.openecomp.mso.bpmn.common.WorkflowTest; -import org.openecomp.mso.bpmn.common.WorkflowTest.CallbackSet; -import org.openecomp.mso.bpmn.mock.FileUtil; - -public class DoCreateVfModuleVolumeV1Test extends WorkflowTest { - - public static final String _prefix = "CVFMODVOL2_"; - - private final CallbackSet callbacks = new CallbackSet(); - - public DoCreateVfModuleVolumeV1Test() throws IOException { - callbacks.put("volumeGroupCreate", FileUtil.readResourceFile( - "__files/DoCreateVfModuleVolumeV1/CreateVfModuleVolumeCallbackResponse.xml")); - callbacks.put("volumeGroupRollback", FileUtil.readResourceFile( - "__files/DoCreateVfModuleVolumeV1/RollbackVfModuleVolumeCallbackResponse.xml")); - } - - /** - * Happy Path - * @throws Exception - */ - @Test - @Deployment(resources = {"subprocess/DoCreateVfModuleVolumeV1.bpmn", - "subprocess/FalloutHandler.bpmn", - "subprocess/CompleteMsoProcess.bpmn", - "subprocess/VnfAdapterRestV1.bpmn", - "subprocess/VnfAdapterRestV1.bpmn"}) - public void TestHappyPath() throws Exception { - - logStart(); - - DoCreateVfModuleVolume_Success(); - - String businessKey = UUID.randomUUID().toString(); - String createVfModuleVolRequest = FileUtil.readResourceFile("__files/DoCreateVfModuleVolumeV1/CreateVfModuleVolumeRequest.xml"); - - Map<String, Object> testVariables = new HashMap<String, Object>(); - testVariables.put("DCVFMODVOLV1_volumeGroupId", "TEST-VOLUME-VOLUME-GROUP-ID-0123"); - testVariables.put("vnf-id", "TEST-VNF-ID-0123"); - testVariables.put("volume-group-id", "TEST-VOLUME-GROUP-ID-0123"); - testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0"); - //testVariables.put("test-volume-group-id", "TEST-VOLUME-GROUP-ID-0123"); - testVariables.put("DoCreateVfModuleVolumeV1Request", createVfModuleVolRequest); - invokeAsyncProcess("DoCreateVfModuleVolumeV1", "v1", businessKey, createVfModuleVolRequest, testVariables); - - injectVNFRestCallbacks(callbacks, "volumeGroupCreate"); - - waitForProcessEnd(businessKey, 100000); - checkVariable(businessKey, "DCVFMODVOLV1_SuccessIndicator", true); - - logEnd(); - } - - @Test - @Deployment(resources = {"subprocess/DoCreateVfModuleVolumeV1.bpmn", - "subprocess/FalloutHandler.bpmn", - "subprocess/CompleteMsoProcess.bpmn", - "subprocess/VnfAdapterRestV1.bpmn", - "subprocess/VnfAdapterRestV1.bpmn"}) - public void TestVolumeGroupExistError() throws Exception { - - logStart(); - - DoCreateVfModuleVolume_VolumeGroupExistsFail(); - - String businessKey = UUID.randomUUID().toString(); - String createVfModuleVolRequest = FileUtil.readResourceFile("__files/DoCreateVfModuleVolumeV1/CreateVfModuleVolumeRequest.xml"); - - Map<String, Object> testVariables = new HashMap<String, Object>(); - testVariables.put("DCVFMODVOLV1_volumeGroupId", "TEST-VOLUME-VOLUME-GROUP-ID-0123"); - testVariables.put("vnf-id", "TEST-VNF-ID-0123"); - testVariables.put("volume-group-id", "TEST-VOLUME-GROUP-ID-0123"); - testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0"); - testVariables.put("DoCreateVfModuleVolumeV1Request", createVfModuleVolRequest); - invokeAsyncProcess("DoCreateVfModuleVolumeV1", "v1", businessKey, createVfModuleVolRequest, testVariables); - - //injectVNFRestCallbacks(callbacks, "volumeGroupCreate"); - - waitForProcessEnd(businessKey, 100000); - checkVariable(businessKey, "DCVFMODVOLV1_SuccessIndicator", false); - - logEnd(); - } - - /** - * Will trigger AAI create rollback - * @throws Exception - */ - @Test - @Deployment(resources = {"subprocess/DoCreateVfModuleVolumeV1.bpmn", - "subprocess/FalloutHandler.bpmn", - "subprocess/CompleteMsoProcess.bpmn", - "subprocess/VnfAdapterRestV1.bpmn", - "subprocess/VnfAdapterRestV1.bpmn"}) - public void TestVnfVolumeGroupCreateError() throws Exception { - - logStart(); - - DoCreateVfModuleVolume_VnfCreateVolumeGroupFail(); - - String businessKey = UUID.randomUUID().toString(); - String createVfModuleVolRequest = FileUtil.readResourceFile("__files/DoCreateVfModuleVolumeV1/CreateVfModuleVolumeRequest.xml"); - - Map<String, Object> testVariables = new HashMap<String, Object>(); - testVariables.put("DCVFMODVOLV1_volumeGroupId", "TEST-VOLUME-VOLUME-GROUP-ID-0123"); - testVariables.put("vnf-id", "TEST-VNF-ID-0123"); - testVariables.put("volume-group-id", "TEST-VOLUME-GROUP-ID-0123"); - testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0"); - testVariables.put("test-volume-group-id", "TEST-VOLUME-GROUP-ID-0123"); - testVariables.put("DoCreateVfModuleVolumeV1Request", createVfModuleVolRequest); - invokeAsyncProcess("DoCreateVfModuleVolumeV1", "v1", businessKey, createVfModuleVolRequest, testVariables); - - //injectVNFRestCallbacks(callbacks, "volumeGroupCreate"); - - waitForProcessEnd(businessKey, 100000); - checkVariable(businessKey, "DCVFMODVOLV1_SuccessIndicator", false); - - logEnd(); - } - - /** - * Will trigger AAI create rollback - * @throws Exception - */ - @Test - @Deployment(resources = {"subprocess/DoCreateVfModuleVolumeV1.bpmn", - "subprocess/FalloutHandler.bpmn", - "subprocess/CompleteMsoProcess.bpmn", - "subprocess/VnfAdapterRestV1.bpmn", - "subprocess/VnfAdapterRestV1.bpmn"}) - public void TestUpdateAaiVolumeGroupError() throws Exception { - - logStart(); - - DoCreateVfModuleVolume_AaiVolumeGroupUpdateFail(); - - String businessKey = UUID.randomUUID().toString(); - String createVfModuleVolRequest = FileUtil.readResourceFile("__files/DoCreateVfModuleVolumeV1/CreateVfModuleVolumeRequest.xml"); - - Map<String, Object> testVariables = new HashMap<String, Object>(); - testVariables.put("DCVFMODVOLV1_volumeGroupId", "TEST-VOLUME-VOLUME-GROUP-ID-0123"); - testVariables.put("vnf-id", "TEST-VNF-ID-0123"); - testVariables.put("volume-group-id", "TEST-VOLUME-GROUP-ID-0123"); - testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0"); - testVariables.put("test-volume-group-id", "TEST-VOLUME-GROUP-ID-0123"); - testVariables.put("DoCreateVfModuleVolumeV1Request", createVfModuleVolRequest); - invokeAsyncProcess("DoCreateVfModuleVolumeV1", "v1", businessKey, createVfModuleVolRequest, testVariables); - - injectVNFRestCallbacks(callbacks, "volumeGroupCreate,volumeGroupRollback"); - - waitForProcessEnd(businessKey, 100000); - checkVariable(businessKey, "DCVFMODVOLV1_SuccessIndicator", false); - - logEnd(); - } - - /** - * Will trigger not trigger rollback - * @throws Exception - */ - @Test - @Deployment(resources = {"subprocess/DoCreateVfModuleVolumeV1.bpmn", - "subprocess/FalloutHandler.bpmn", - "subprocess/CompleteMsoProcess.bpmn", - "subprocess/VnfAdapterRestV1.bpmn", - "subprocess/VnfAdapterRestV1.bpmn"}) - public void TestUpdateAaiVolumeGroupErrorNoRollback() throws Exception { - - logStart(); - - DoCreateVfModuleVolume_AaiVolumeGroupUpdateFail(); - - String businessKey = UUID.randomUUID().toString(); - String createVfModuleVolRequest = FileUtil.readResourceFile("__files/DoCreateVfModuleVolumeV1/CreateVfModuleVolumeNoRollbackRequest.xml"); - - Map<String, Object> testVariables = new HashMap<String, Object>(); - testVariables.put("DCVFMODVOLV1_volumeGroupId", "TEST-VOLUME-VOLUME-GROUP-ID-0123"); - testVariables.put("vnf-id", "TEST-VNF-ID-0123"); - testVariables.put("volume-group-id", "TEST-VOLUME-GROUP-ID-0123"); - testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0"); - testVariables.put("test-volume-group-id", "TEST-VOLUME-GROUP-ID-0123"); - testVariables.put("DoCreateVfModuleVolumeV1Request", createVfModuleVolRequest); - invokeAsyncProcess("DoCreateVfModuleVolumeV1", "v1", businessKey, createVfModuleVolRequest, testVariables); - - injectVNFRestCallbacks(callbacks, "volumeGroupCreate"); - - waitForProcessEnd(businessKey, 100000); - checkVariable(businessKey, "DCVFMODVOLV1_SuccessIndicator", false); - - logEnd(); - } - - public static void DoCreateVfModuleVolume_Success() { - // Notes: - // 1. initial aai volume group by name - /aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/volume-groups/volume-group?volume-group-name=TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0 - // 2. Create volume group - /aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/volume-groups/volume-group - // 3. Requery Volume Group - /aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/volume-groups/volume-group?volume-group-name=MSOTESTVOL101a-vSAMP12_base_vol_module-0 - // 4. Update volume group (id from requery response - /aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/volume-groups/volume-group/8424bb3c-c3e7-4553-9662-469649ed9379 - - //generic vnf - stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/TEST-VNF-ID-0123")) - .willReturn(aResponse() - .withStatus(200) - .withHeader("Content-Type", "text/xml") - .withBodyFile("DoCreateVfModuleVolumeV1/GenericVnf.xml"))); - //create volume group - stubFor(put(urlMatching("/aai/v[0-9]+/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/volume-groups/volume-group/TEST-VOLUME-GROUP-ID-0123")) - .willReturn(aResponse() - .withStatus(201) - .withHeader("Content-Type", "text/xml") - .withBodyFile("DoCreateVfModuleVolumeV1/createVfModuleVolume_createVolumeName_AAIResponse_Success.xml"))); - //requery volume group - stubFor(get(urlMatching("/aai/v[0-9]+/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/volume-groups[?]volume-group-name=MSOTESTVOL101a-vSAMP12_base_vol_module-0")) - .willReturn(aResponse() - .withStatus(200) - .withHeader("Content-Type", "text/xml") - .withBodyFile("DoCreateVfModuleVolumeV1/createVfModuleVolume_queryVolumeName_AAIResponse_Success.xml"))); - //update volume group - stubFor(put(urlMatching("/aai/v[0-9]+/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/volume-groups/volume-group/8424bb3c-c3e7-4553-9662-469649ed9379")) - .willReturn(aResponse() - .withStatus(200) - .withHeader("Content-Type", "text/xml") - .withBodyFile("DoCreateVfModuleVolumeV1/createVfModuleVolume_updateVolumeName_AAIResponse_Success.xml"))); - // VNF rest Adapter - stubFor(post(urlEqualTo("/vnfs/v1/volume-groups")) - .willReturn(aResponse() - .withStatus(202) - .withHeader("Content-Type", "application/xml"))); - } - - public static void DoCreateVfModuleVolume_VolumeGroupExistsFail() { - //generic vnf - stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/TEST-VNF-ID-0123")) - .willReturn(aResponse() - .withStatus(200) - .withHeader("Content-Type", "text/xml") - .withBodyFile("DoCreateVfModuleVolumeV1/GenericVnf.xml"))); - //initial volume group query - stubFor(get(urlMatching("/aai/v[0-9]+/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/volume-groups/volume-group[?]volume-group-name=TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0")) - .willReturn(aResponse() - .withStatus(200) - .withHeader("Content-Type", "text/xml") - .withBodyFile("DoCreateVfModuleVolumeV1/createVfModuleVolume_queryVolumeName_AAIResponse_Success.xml"))); - } - - public static void DoCreateVfModuleVolume_VnfCreateVolumeGroupFail() { - //generic vnf - stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/TEST-VNF-ID-0123")) - .willReturn(aResponse() - .withStatus(200) - .withHeader("Content-Type", "text/xml") - .withBodyFile("DoCreateVfModuleVolumeV1/GenericVnf.xml"))); - //create volume group - stubFor(put(urlMatching("/aai/v[0-9]+/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/volume-groups/volume-group/TEST-VOLUME-GROUP-ID-0123")) - .willReturn(aResponse() - .withStatus(201) - .withHeader("Content-Type", "text/xml") - .withBodyFile("DoCreateVfModuleVolumeV1/createVfModuleVolume_createVolumeName_AAIResponse_Success.xml"))); - //Query AAI volume group by name -- needed before delete - stubFor(get(urlMatching("/aai/v[0-9]+/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/volume-groups[?]volume-group-name=MSOTESTVOL101a-vSAMP12_base_vol_module-0")) - .willReturn(aResponse() - .withStatus(200) - .withHeader("Content-Type", "text/xml") - .withBodyFile("DoCreateVfModuleVolumeV1/createVfModuleVolume_queryVolumeName_AAIResponse_Success.xml"))); - //delete volume group in aai - stubFor(delete(urlMatching("/aai/v[0-9]+/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/volume-groups/volume-group/8424bb3c-c3e7-4553-9662-469649ed9379[?]resource-version=1460134360")) - .willReturn(aResponse() - .withStatus(200) - .withHeader("Content-Type", "text/xml") - .withBodyFile("DoCreateVfModuleVolumeV1/createVfModuleVolume_deleteVolumeName_AAIResponse_Success.xml"))); - stubFor(post(urlEqualTo("/vnfs/v1/volume-groups")) - .willReturn(aResponse() - .withStatus(404) - .withHeader("Content-Type", "application/xml"))); - } - - public static void DoCreateVfModuleVolume_AaiVolumeGroupUpdateFail() { - //generic vnf - stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/TEST-VNF-ID-0123")) - .willReturn(aResponse() - .withStatus(200) - .withHeader("Content-Type", "text/xml") - .withBodyFile("DoCreateVfModuleVolumeV1/GenericVnf.xml"))); - //create volume group - stubFor(put(urlMatching("/aai/v[0-9]+/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/volume-groups/volume-group/TEST-VOLUME-GROUP-ID-0123")) - .willReturn(aResponse() - .withStatus(201) - .withHeader("Content-Type", "text/xml") - .withBodyFile("DoCreateVfModuleVolumeV1/createVfModuleVolume_createVolumeName_AAIResponse_Success.xml"))); - //requery volume group - stubFor(get(urlMatching("/aai/v[0-9]+/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/volume-groups[?]volume-group-name=MSOTESTVOL101a-vSAMP12_base_vol_module-0")) - .willReturn(aResponse() - .withStatus(200) - .withHeader("Content-Type", "text/xml") - .withBodyFile("DoCreateVfModuleVolumeV1/createVfModuleVolume_queryVolumeName_AAIResponse_Success.xml"))); - //delete volume group in aai - stubFor(delete(urlMatching("/aai/v[0-9]+/cloud-infrastructure/volume-groups/volume-group/8424bb3c-c3e7-4553-9662-469649ed9379[?]resource-version=1460134360")) - .willReturn(aResponse() - .withStatus(200) - .withHeader("Content-Type", "text/xml") - .withBodyFile("DoCreateVfModuleVolumeV1/createVfModuleVolume_deleteVolumeName_AAIResponse_Success.xml"))); - // VNF rest Adapter - stubFor(post(urlEqualTo("/vnfs/v1/volume-groups")) - .willReturn(aResponse() - .withStatus(202) - .withHeader("Content-Type", "application/xml"))); - // VNF Rest Adapter rollback - vnfs/v1/volume-groups/STUB-TEST-8424bb3c-c3e7-4553-9662-469649ed9379/rollback - stubFor(delete(urlEqualTo("/vnfs/v1/volume-groups/TEST-VOLUME-GROUP-ID-0123/rollback")) - .willReturn(aResponse() - .withStatus(202) - .withHeader("Content-Type", "application/xml"))); - } -} diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleVolumeV2Test.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleVolumeV2Test.java new file mode 100644 index 0000000000..3b1f4b8faf --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleVolumeV2Test.java @@ -0,0 +1,220 @@ +package org.openecomp.mso.bpmn.infrastructure;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.core.WorkflowException;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+@Ignore
+public class DoCreateVfModuleVolumeV2Test extends WorkflowTest {
+
+ public static final String _prefix = "CVFMODVOL2_";
+
+ private final CallbackSet callbacks = new CallbackSet();
+
+ public DoCreateVfModuleVolumeV2Test() throws IOException {
+ callbacks.put("volumeGroupCreate", FileUtil.readResourceFile(
+ "__files/DoCreateVfModuleVolumeV1/CreateVfModuleVolumeCallbackResponse.xml"));
+ callbacks.put("volumeGroupRollback", FileUtil.readResourceFile(
+ "__files/DoCreateVfModuleVolumeV1/RollbackVfModuleVolumeCallbackResponse.xml"));
+ }
+
+ /**
+ * Happy Path
+ * @throws Exception
+ */
+ @Test
+ //@Ignore
+ @Deployment(resources = {"subprocess/DoCreateVfModuleVolumeV2.bpmn",
+ "subprocess/FalloutHandler.bpmn",
+ "subprocess/CompleteMsoProcess.bpmn",
+ "subprocess/vnfAdapterRestV1.bpmn",
+ "subprocess/DoCreateVfModuleVolumeRollback.bpmn"})
+ public void TestHappyPath() throws Exception {
+
+ logStart();
+
+// DoCreateVfModuleVolume_Success();
+
+ String businessKey = UUID.randomUUID().toString();
+ String createVfModuleVolRequest = FileUtil.readResourceFile("__files/DoCreateVfModuleVolumeV1/CreateVfModuleVolumeRequest.xml");
+
+ Map<String, Object> testVariables = new HashMap<String, Object>();
+ testVariables.put("volumeGroupId", "TEST-VOLUME-VOLUME-GROUP-ID-0123");
+ testVariables.put("vnfId", "TEST-VNF-ID-0123");
+ testVariables.put("lcpCloudRegionId", "AAIAIC25");
+ testVariables.put("test-volume-group-name", "MSOTESTVOL101a-vSAMP12_base_vol_module-01");
+ testVariables.put("test-volume-group-id", "TEST-VOLUME-GROUP-ID-0123");
+ //testVariables.put("DoCreateVfModuleVolumeV1Request", createVfModuleVolRequest);
+ TestAsyncResponse asyncResponse = invokeAsyncProcess("DoCreateVfModuleVolumeV2", "v1", businessKey, createVfModuleVolRequest, testVariables);
+
+ injectVNFRestCallbacks(callbacks, "volumeGroupCreate");
+
+ waitForProcessEnd(businessKey, 100000);
+ checkVariable(businessKey, "DCVFMODVOLV2_SuccessIndicator", true);
+
+ logEnd();
+ }
+
+ @Test
+// @Ignore
+ @Deployment(resources = {"subprocess/DoCreateVfModuleVolumeV2.bpmn",
+ "subprocess/FalloutHandler.bpmn",
+ "subprocess/CompleteMsoProcess.bpmn",
+ "subprocess/vnfAdapterRestV1.bpmn",
+ "subprocess/DoCreateVfModuleVolumeRollback.bpmn"})
+ public void TestVolumeGroupExistError() throws Exception {
+
+ logStart();
+
+// DoCreateVfModuleVolume_VolumeGroupExistsFail();
+
+ String businessKey = UUID.randomUUID().toString();
+ String createVfModuleVolRequest = FileUtil.readResourceFile("__files/DoCreateVfModuleVolumeV1/CreateVfModuleVolumeRequest.xml");
+
+ Map<String, Object> testVariables = new HashMap<String, Object>();
+ testVariables.put("DCVFMODVOLV2_volumeGroupId", "TEST-VOLUME-VOLUME-GROUP-ID-0123");
+ testVariables.put("vnf-id", "TEST-VNF-ID-0123");
+ testVariables.put("volume-group-id", "TEST-VOLUME-GROUP-ID-0123");
+ testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0");
+ testVariables.put("DoCreateVfModuleVolumeV1Request", createVfModuleVolRequest);
+ TestAsyncResponse asyncResponse = invokeAsyncProcess("DoCreateVfModuleVolumeV2", "v1", businessKey, createVfModuleVolRequest, testVariables);
+
+ //injectVNFRestCallbacks(callbacks, "volumeGroupCreate");
+
+ waitForProcessEnd(businessKey, 100000);
+ WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, "SavedWorkflowException1");
+ Assert.assertTrue(wfe.getErrorCode() == 2500);
+ Assert.assertTrue(wfe.getErrorMessage().startsWith("Generic vnf null was not found in AAI. Return code: 404."));
+ checkVariable(businessKey, "DCVFMODVOLV2_SuccessIndicator", false);
+
+ logEnd();
+ }
+
+ /**
+ * Will trigger AAI create rollback
+ * @throws Exception
+ */
+ @Test
+// @Ignore
+ @Deployment(resources = {"subprocess/DoCreateVfModuleVolumeV2.bpmn",
+ "subprocess/FalloutHandler.bpmn",
+ "subprocess/CompleteMsoProcess.bpmn",
+ "subprocess/vnfAdapterRestV1.bpmn",
+ "subprocess/DoCreateVfModuleVolumeRollback.bpmn"})
+ public void TestVnfVolumeGroupCreateError() throws Exception {
+
+ logStart();
+
+// DoCreateVfModuleVolume_VnfCreateVolumeGroupFail();
+
+ String businessKey = UUID.randomUUID().toString();
+ String createVfModuleVolRequest = FileUtil.readResourceFile("__files/DoCreateVfModuleVolumeV1/CreateVfModuleVolumeRequest.xml");
+
+ Map<String, Object> testVariables = new HashMap<String, Object>();
+ testVariables.put("DCVFMODVOLV2_volumeGroupId", "TEST-VOLUME-VOLUME-GROUP-ID-0123");
+ testVariables.put("vnf-id", "TEST-VNF-ID-0123");
+ testVariables.put("volume-group-id", "TEST-VOLUME-GROUP-ID-0123");
+ testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0");
+ testVariables.put("test-volume-group-id", "TEST-VOLUME-GROUP-ID-0123");
+ testVariables.put("DoCreateVfModuleVolumeV1Request", createVfModuleVolRequest);
+ TestAsyncResponse asyncResponse = invokeAsyncProcess("DoCreateVfModuleVolumeV2", "v1", businessKey, createVfModuleVolRequest, testVariables);
+
+ //injectVNFRestCallbacks(callbacks, "volumeGroupCreate");
+
+ waitForProcessEnd(businessKey, 100000);
+ checkVariable(businessKey, "DCVFMODVOLV2_SuccessIndicator", false);
+
+ logEnd();
+ }
+
+ /**
+ * Will trigger AAI create rollback
+ * @throws Exception
+ */
+ @Test
+// @Ignore
+ @Deployment(resources = {"subprocess/DoCreateVfModuleVolumeV2.bpmn",
+ "subprocess/FalloutHandler.bpmn",
+ "subprocess/CompleteMsoProcess.bpmn",
+ "subprocess/vnfAdapterRestV1.bpmn",
+ "subprocess/DoCreateVfModuleVolumeRollback.bpmn"})
+ public void TestUpdateAaiVolumeGroupError() throws Exception {
+
+ logStart();
+
+// DoCreateVfModuleVolume_AaiVolumeGroupUpdateFail();
+
+ String businessKey = UUID.randomUUID().toString();
+ String createVfModuleVolRequest = FileUtil.readResourceFile("__files/DoCreateVfModuleVolumeV1/CreateVfModuleVolumeRequest.xml");
+
+ Map<String, Object> testVariables = new HashMap<String, Object>();
+ testVariables.put("DCVFMODVOLV2_volumeGroupId", "TEST-VOLUME-VOLUME-GROUP-ID-0123");
+ testVariables.put("vnf-id", "TEST-VNF-ID-0123");
+ testVariables.put("volume-group-id", "TEST-VOLUME-GROUP-ID-0123");
+ testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0");
+ testVariables.put("test-volume-group-id", "TEST-VOLUME-GROUP-ID-0123");
+ testVariables.put("DoCreateVfModuleVolumeV1Request", createVfModuleVolRequest);
+ TestAsyncResponse asyncResponse = invokeAsyncProcess("DoCreateVfModuleVolumeV2", "v1", businessKey, createVfModuleVolRequest, testVariables);
+
+ // VNF callback not needed fort this failure scenario
+// injectVNFRestCallbacks(callbacks, "volumeGroupCreate,volumeGroupRollback");
+
+ waitForProcessEnd(businessKey, 100000);
+ WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, "SavedWorkflowException1");
+ Assert.assertTrue(wfe.getErrorCode() == 2500);
+ Assert.assertTrue(wfe.getErrorMessage().startsWith("Generic vnf null was not found in AAI. Return code: 404."));
+ checkVariable(businessKey, "DCVFMODVOLV2_SuccessIndicator", false);
+
+ logEnd();
+ }
+
+ /**
+ * Will trigger not trigger rollback
+ * @throws Exception
+ */
+ @Test
+// @Ignore
+ @Deployment(resources = {"subprocess/DoCreateVfModuleVolumeV2.bpmn",
+ "subprocess/FalloutHandler.bpmn",
+ "subprocess/CompleteMsoProcess.bpmn",
+ "subprocess/vnfAdapterRestV1.bpmn",
+ "subprocess/DoCreateVfModuleVolumeRollback.bpmn"})
+ public void TestUpdateAaiVolumeGroupErrorNoRollback() throws Exception {
+
+ logStart();
+
+// DoCreateVfModuleVolume_AaiVolumeGroupUpdateFail();
+
+ String businessKey = UUID.randomUUID().toString();
+ String createVfModuleVolRequest = FileUtil.readResourceFile("__files/DoCreateVfModuleVolumeV1/CreateVfModuleVolumeNoRollbackRequest.xml");
+
+ Map<String, Object> testVariables = new HashMap<String, Object>();
+ testVariables.put("DCVFMODVOLV2_volumeGroupId", "TEST-VOLUME-VOLUME-GROUP-ID-0123");
+ testVariables.put("vnf-id", "TEST-VNF-ID-0123");
+ testVariables.put("volume-group-id", "TEST-VOLUME-GROUP-ID-0123");
+ testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0");
+ testVariables.put("test-volume-group-id", "TEST-VOLUME-GROUP-ID-0123");
+ testVariables.put("DoCreateVfModuleVolumeV1Request", createVfModuleVolRequest);
+ TestAsyncResponse asyncResponse = invokeAsyncProcess("DoCreateVfModuleVolumeV2", "v1", businessKey, createVfModuleVolRequest, testVariables);
+
+ // VNF callback not needed fort this failure scenario
+// injectVNFRestCallbacks(callbacks, "volumeGroupCreate");
+
+ waitForProcessEnd(businessKey, 100000);
+ WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, "SavedWorkflowException1");
+ Assert.assertTrue(wfe.getErrorCode() == 2500);
+ Assert.assertTrue(wfe.getErrorMessage().startsWith("Generic vnf null was not found in AAI. Return code: 404."));
+ checkVariable(businessKey, "DCVFMODVOLV2_SuccessIndicator", false);
+
+ logEnd();
+ }
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfAndModulesRollbackTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfAndModulesRollbackTest.java new file mode 100644 index 0000000000..fb065ab633 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfAndModulesRollbackTest.java @@ -0,0 +1,405 @@ +package org.openecomp.mso.bpmn.infrastructure;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.containing;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteVfModuleId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByName;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleId;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFDelete;
+import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVfModuleDelete;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.core.RollbackData;
+import org.openecomp.mso.bpmn.core.WorkflowException;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+/**
+ * Unit test for DoCreateVnfAndModulesRollback.bpmn.
+ */
+public class DoCreateVnfAndModulesRollbackTest extends WorkflowTest {
+ private final CallbackSet callbacks = new CallbackSet();
+
+ private static final String EOL = "\n";
+
+
+
+ private final String vnfAdapterDeleteCallback =
+ "<deleteVfModuleResponse>" + EOL +
+ " <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +
+ " <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +
+ " <vfModuleDeleted>true</vfModuleDeleted>" + EOL +
+ " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
+ "</deleteVfModuleResponse>" + EOL;
+
+ private final String vnfAdapterDeleteCallbackFail =
+ "<vfModuleException>" + EOL +
+ " <message>Error processing request to VNF-Async. Not Found.</message>" + EOL +
+ " <category>INTERNAL</category>" + EOL +
+ " <rolledBack>false</rolledBack>" + EOL +
+ " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
+ "</vfModuleException>" + EOL;
+
+ private final String sdncAdapterDeleteCallback =
+ "<output xmlns=\"com:att:sdnctl:l3api\">" + EOL +
+ " <svc-request-id>{{REQUEST-ID}}</svc-request-id>" + EOL +
+ " <ack-final-indicator>Y</ack-final-indicator>" + EOL +
+ "</output>" + EOL;
+
+ public DoCreateVnfAndModulesRollbackTest() throws IOException {
+ callbacks.put("sdncChangeDelete", sdncAdapterDeleteCallback);
+ callbacks.put("sdncDelete", sdncAdapterDeleteCallback);
+ callbacks.put("vnfDelete", vnfAdapterDeleteCallback);
+ callbacks.put("vnfDeleteFail", vnfAdapterDeleteCallbackFail);
+ callbacks.put("deactivate", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
+ callbacks.put("unassign", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
+ }
+
+ @Test
+ @Ignore
+ @Deployment(resources = {
+ "subprocess/DoCreateVnfAndModulesRollback.bpmn",
+ "subprocess/DoCreateVfModuleRollback.bpmn",
+ "subprocess/PrepareUpdateAAIVfModule.bpmn",
+ "subprocess/UpdateAAIVfModule.bpmn",
+ "subprocess/UpdateAAIGenericVnf.bpmn",
+ "subprocess/DeleteAAIVfModule.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/VnfAdapterRestV1.bpmn",
+ "subprocess/GenericGetVnf.bpmn",
+ "subprocess/GenericDeleteVnf.bpmn",
+ "subprocess/DoDeleteVnf.bpmn"
+ })
+ public void TestDoCreateVnfAndModulesRollbackSuccess_BaseOnly() {
+ // delete the Base Module and Generic Vnf
+ // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
+ String request =
+ "<vnf-request xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">" + EOL +
+ " <request-info>" + EOL +
+ " <action>DELETE_VF_MODULE</action>" + EOL +
+ " <source>PORTAL</source>" + EOL +
+ " </request-info>" + EOL +
+ " <vnf-inputs>" + EOL +
+ " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
+ " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
+ " <vnf-type>asc_heat-int</vnf-type>" + EOL +
+ " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
+ " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
+ " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
+ " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
+ " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
+ " <orchestration-status>pending-delete</orchestration-status>" + EOL +
+ " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
+ " </vnf-inputs>" + EOL +
+ " <vnf-params xmlns:tns=\"http://org.openecomp/mso/infra/vnf-request/v1\"/>" + EOL +
+ "</vnf-request>" + EOL;
+ logStart();
+ mockSDNCAdapter("/SDNCAdapter", "SvcAction>changedelete", 200, "DeleteGenericVNFV1/sdncAdapterResponse.xml");
+ mockSDNCAdapter("/SDNCAdapter", "SvcAction>delete", 200, "DeleteGenericVNFV1/sdncAdapterResponse.xml");
+ mockVNFDelete(".*", "/.*", 202);
+ mockVfModuleDelete("78987");
+ MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
+ MockPatchGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ MockGetGenericVnfByName("STMTN5MMSC21", "DoCreateVfModule_getVnfResponse.xml");
+ MockGetGenericVnfById("/a27ce5a9-29c4-4c22-a017-6615ac73c721.*", "DoCreateVfModule_getVnfResponse.xml", 200);
+ MockPutVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
+ MockDeleteGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721", "0000021");
+ MockDeleteVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73", "0000073", 200);
+ String businessKey = UUID.randomUUID().toString();
+ Map<String, Object> variables = new HashMap<String, Object>();
+ RollbackData rollbackData = new RollbackData();
+
+ rollbackData.put("VFMODULE_BASE", "source", "PORTAL");
+ rollbackData.put("VFMODULE_BASE", "vnfid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ rollbackData.put("VFMODULE_BASE", "vnfname", "STMTN5MMSC21");
+ rollbackData.put("VFMODULE_BASE", "vnftype", "asc_heat-int");
+ rollbackData.put("VFMODULE_BASE", "vfmoduleid", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
+ rollbackData.put("VFMODULE_BASE", "vfmodulename", "STMTN5MMSC21-MMSC::module-0-0");
+ rollbackData.put("VFMODULE_BASE", "tenantid", "fba1bd1e195a404cacb9ce17a9b2b421");
+ rollbackData.put("VFMODULE_BASE", "aiccloudregion", "RDM2WAGPLCP");
+ rollbackData.put("VFMODULE_BASE", "heatstackid", "thisisaheatstack");
+ rollbackData.put("VFMODULE_BASE", "contrailNetworkPolicyFqdn0", "MSOTest:DefaultPolicyFQDN1");
+ rollbackData.put("VFMODULE_BASE", "contrailNetworkPolicyFqdn1", "MSOTest:DefaultPolicyFQDN2");
+ rollbackData.put("VFMODULE_BASE", "oamManagementV6Address", "2000:abc:bce:1111");
+ rollbackData.put("VFMODULE_BASE", "oamManagementV4Address", "127.0.0.1");
+
+ rollbackData.put("VFMODULE_BASE", "rollbackPrepareUpdateVfModule", "true");
+ rollbackData.put("VFMODULE_BASE", "rollbackVnfAdapterCreate", "true");
+ rollbackData.put("VFMODULE_BASE", "rollbackUpdateAAIVfModule", "true");
+ rollbackData.put("VFMODULE_BASE", "rollbackSDNCRequestActivate", "true");
+ rollbackData.put("VFMODULE_BASE", "rollbackCreateAAIVfModule", "true");
+ rollbackData.put("VFMODULE_BASE", "rollbackCreateNetworkPoliciesAAI", "true");
+ rollbackData.put("VFMODULE_BASE", "rollbackUpdateVnfAAI", "true");
+
+ rollbackData.put("VNF", "vnfId", "testVnfId123");
+
+ rollbackData.put("VNFANDMODULES", "numOfCreatedAddOnModules", "0");
+
+ variables.put("isDebugLogEnabled","true");
+ variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ rollbackData.put("VFMODULE_BASE", "msorequestid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ rollbackData.put("VFMODULE_BASE", "serviceinstanceid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+
+ variables.put("rollbackData", rollbackData);
+ invokeSubProcess("DoCreateVnfAndModulesRollback", businessKey, variables);
+
+ // "changedelete" operation not required for deleting a Vf Module
+// injectSDNCCallbacks(callbacks, "sdncChangeDelete");
+ injectVNFRestCallbacks(callbacks, "vnfDelete");
+ //waitForRunningProcessCount("DoCreateVnfAndModulesRollback", 0, 120000);
+ injectSDNCCallbacks(callbacks, "sdncDelete");
+
+ waitForProcessEnd(businessKey, 10000);
+ WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+ checkVariable(businessKey, "WorkflowException", null);
+ if (wfe != null) {
+ System.out.println("TestCreateVfModuleSuccess: ErrorCode=" + wfe.getErrorCode() +
+ ", ErrorMessage=" + wfe.getErrorMessage());
+ }
+ logEnd();
+ }
+
+ @Test
+ @Deployment(resources = {
+ "subprocess/DoCreateVnfAndModulesRollback.bpmn",
+ "subprocess/PrepareUpdateAAIVfModule.bpmn",
+ "subprocess/UpdateAAIVfModule.bpmn",
+ "subprocess/UpdateAAIGenericVnf.bpmn",
+ "subprocess/DeleteAAIVfModule.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/GenericGetVnf.bpmn",
+ "subprocess/GenericDeleteVnf.bpmn",
+ "subprocess/DoDeleteVnf.bpmn"
+ })
+ public void TestDoCreateVnfAndModulesRollbackSuccess_vnfOnly() {
+ // delete the Base Module and Generic Vnf
+ // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
+ String request =
+ "<vnf-request xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">" + EOL +
+ " <request-info>" + EOL +
+ " <action>DELETE_VF_MODULE</action>" + EOL +
+ " <source>PORTAL</source>" + EOL +
+ " </request-info>" + EOL +
+ " <vnf-inputs>" + EOL +
+ " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
+ " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
+ " <vnf-type>asc_heat-int</vnf-type>" + EOL +
+ " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
+ " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
+ " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
+ " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
+ " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
+ " <orchestration-status>pending-delete</orchestration-status>" + EOL +
+ " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
+ " </vnf-inputs>" + EOL +
+ " <vnf-params xmlns:tns=\"http://org.openecomp/mso/infra/vnf-request/v1\"/>" + EOL +
+ "</vnf-request>" + EOL;
+ logStart();
+ MockGetGenericVnfById("testVnfId123.*", "GenericFlows/getGenericVnfByNameResponse.xml");
+ MockDeleteGenericVnf("testVnfId123", "testReVer123");
+ MockDoDeleteVfModule_SDNCSuccess();
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+ String businessKey = UUID.randomUUID().toString();
+ Map<String, Object> variables = new HashMap<String, Object>();
+ RollbackData rollbackData = new RollbackData();
+
+ rollbackData.put("VNF", "vnfId", "testVnfId123");
+ rollbackData.put("VNF", "rollbackVnfCreate", "true");
+ rollbackData.put("VNF", "rollbackSDNCAssign", "true");
+ rollbackData.put("VNF", "rollbackSDNCActivate", "true");
+ rollbackData.put("VNFANDMODULES", "numOfCreatedAddOnModules", "0");
+
+
+ variables.put("isDebugLogEnabled","true");
+ variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+
+
+ variables.put("rollbackData", rollbackData);
+ variables.put("sdncVersion", "1707");
+ invokeSubProcess("DoCreateVnfAndModulesRollback", businessKey, variables);
+
+ // "changedelete" operation not required for deleting a Vf Module
+// injectSDNCCallbacks(callbacks, "sdncChangeDelete");
+
+ //waitForRunningProcessCount("DoCreateVnfAndModulesRollback", 0, 120000);
+ // injectSDNCCallbacks(callbacks, "sdncDelete");
+
+ waitForProcessEnd(businessKey, 10000);
+ WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+ checkVariable(businessKey, "WorkflowException", null);
+ if (wfe != null) {
+ System.out.println("TestCreateVfModuleSuccess: ErrorCode=" + wfe.getErrorCode() +
+ ", ErrorMessage=" + wfe.getErrorMessage());
+ }
+ logEnd();
+ }
+
+ @Test
+ @Ignore
+ @Deployment(resources = {
+ "subprocess/DoCreateVnfAndModulesRollback.bpmn",
+ "subprocess/DoCreateVfModuleRollback.bpmn",
+ "subprocess/PrepareUpdateAAIVfModule.bpmn",
+ "subprocess/UpdateAAIVfModule.bpmn",
+ "subprocess/UpdateAAIGenericVnf.bpmn",
+ "subprocess/DeleteAAIVfModule.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/VnfAdapterRestV1.bpmn",
+ "subprocess/GenericGetVnf.bpmn",
+ "subprocess/GenericDeleteVnf.bpmn",
+ "subprocess/DoDeleteVnf.bpmn"
+ })
+ public void TestDoCreateVnfAndModulesRollbackSuccess_AddOn() {
+ // delete the Base Module and Generic Vnf
+ // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
+ String request =
+ "<vnf-request xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">" + EOL +
+ " <request-info>" + EOL +
+ " <action>DELETE_VF_MODULE</action>" + EOL +
+ " <source>PORTAL</source>" + EOL +
+ " </request-info>" + EOL +
+ " <vnf-inputs>" + EOL +
+ " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
+ " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
+ " <vnf-type>asc_heat-int</vnf-type>" + EOL +
+ " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
+ " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
+ " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
+ " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
+ " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
+ " <orchestration-status>pending-delete</orchestration-status>" + EOL +
+ " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
+ " </vnf-inputs>" + EOL +
+ " <vnf-params xmlns:tns=\"http://org.openecomp/mso/infra/vnf-request/v1\"/>" + EOL +
+ "</vnf-request>" + EOL;
+ logStart();
+ mockSDNCAdapter("/SDNCAdapter", "SvcAction>changedelete", 200, "DeleteGenericVNFV1/sdncAdapterResponse.xml");
+ mockSDNCAdapter("/SDNCAdapter", "SvcAction>delete", 200, "DeleteGenericVNFV1/sdncAdapterResponse.xml");
+ mockVNFDelete(".*", "/.*", 202);
+ mockVfModuleDelete("78987");
+ MockGetGenericVnfByName("STMTN5MMSC21", "DoCreateVfModule_getVnfResponse.xml");
+ MockGetGenericVnfById("/a27ce5a9-29c4-4c22-a017-6615ac73c721", "DoCreateVfModule_getVnfResponse.xml", 200);
+ MockGetGenericVnfByIdWithDepth("a27ce5a9-29c4-4c22-a017-6615ac73c721", 1, "DoCreateVfModuleRollback/GenericVnf.xml");
+ MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
+ MockPatchGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ MockPutVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
+ MockDeleteGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721", "0000021");
+ MockDeleteVfModuleId("", "", "", 200);
+ String businessKey = UUID.randomUUID().toString();
+ Map<String, Object> variables = new HashMap<String, Object>();
+ RollbackData rollbackData = new RollbackData();
+
+ rollbackData.put("VFMODULE_BASE", "source", "PORTAL");
+ rollbackData.put("VFMODULE_BASE", "vnfid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ rollbackData.put("VFMODULE_BASE", "vnfname", "STMTN5MMSC21");
+ rollbackData.put("VFMODULE_BASE", "vnftype", "asc_heat-int");
+ rollbackData.put("VFMODULE_BASE", "vfmoduleid", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
+ rollbackData.put("VFMODULE_BASE", "vfmodulename", "STMTN5MMSC21-MMSC::module-0-0");
+ rollbackData.put("VFMODULE_BASE", "tenantid", "fba1bd1e195a404cacb9ce17a9b2b421");
+ rollbackData.put("VFMODULE_BASE", "aiccloudregion", "RDM2WAGPLCP");
+ rollbackData.put("VFMODULE_BASE", "heatstackid", "thisisaheatstack");
+ rollbackData.put("VFMODULE_BASE", "contrailNetworkPolicyFqdn0", "MSOTest:DefaultPolicyFQDN1");
+ rollbackData.put("VFMODULE_BASE", "contrailNetworkPolicyFqdn1", "MSOTest:DefaultPolicyFQDN2");
+ rollbackData.put("VFMODULE_BASE", "oamManagementV6Address", "2000:abc:bce:1111");
+ rollbackData.put("VFMODULE_BASE", "oamManagementV4Address", "127.0.0.1");
+ rollbackData.put("VFMODULE_BASE", "rollbackPrepareUpdateVfModule", "true");
+ rollbackData.put("VFMODULE_BASE", "rollbackVnfAdapterCreate", "true");
+ rollbackData.put("VFMODULE_BASE", "rollbackUpdateAAIVfModule", "true");
+ rollbackData.put("VFMODULE_BASE", "rollbackSDNCRequestActivate", "true");
+ rollbackData.put("VFMODULE_BASE", "rollbackCreateAAIVfModule", "true");
+ rollbackData.put("VFMODULE_BASE", "rollbackCreateNetworkPoliciesAAI", "true");
+ rollbackData.put("VFMODULE_BASE", "rollbackUpdateVnfAAI", "true");
+ rollbackData.put("VFMODULE_BASE", "msorequestid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ rollbackData.put("VFMODULE_BASE", "serviceinstanceid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+
+
+ rollbackData.put("VFMODULE_ADDON_1", "source", "PORTAL");
+ rollbackData.put("VFMODULE_ADDON_1", "vnfid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ rollbackData.put("VFMODULE_ADDON_1", "vnfname", "STMTN5MMSC21");
+ rollbackData.put("VFMODULE_ADDON_1", "vnftype", "asc_heat-int");
+ rollbackData.put("VFMODULE_ADDON_1", "vfmoduleid", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
+ rollbackData.put("VFMODULE_ADDON_1", "vfmodulename", "STMTN5MMSC21-MMSC::module-0-0");
+ rollbackData.put("VFMODULE_ADDON_1", "tenantid", "fba1bd1e195a404cacb9ce17a9b2b421");
+ rollbackData.put("VFMODULE_ADDON_1", "aiccloudregion", "RDM2WAGPLCP");
+ rollbackData.put("VFMODULE_ADDON_1", "heatstackid", "thisisaheatstack");
+ rollbackData.put("VFMODULE_ADDON_1", "contrailNetworkPolicyFqdn0", "MSOTest:DefaultPolicyFQDN1");
+ rollbackData.put("VFMODULE_ADDON_1", "contrailNetworkPolicyFqdn1", "MSOTest:DefaultPolicyFQDN2");
+ rollbackData.put("VFMODULE_ADDON_1", "oamManagementV6Address", "2000:abc:bce:1111");
+ rollbackData.put("VFMODULE_ADDON_1", "oamManagementV4Address", "127.0.0.1");
+ rollbackData.put("VFMODULE_ADDON_1", "rollbackPrepareUpdateVfModule", "true");
+ rollbackData.put("VFMODULE_ADDON_1", "rollbackVnfAdapterCreate", "true");
+ rollbackData.put("VFMODULE_ADDON_1", "rollbackUpdateAAIVfModule", "true");
+ rollbackData.put("VFMODULE_ADDON_1", "rollbackSDNCRequestActivate", "true");
+ rollbackData.put("VFMODULE_ADDON_1", "rollbackCreateAAIVfModule", "true");
+ rollbackData.put("VFMODULE_ADDON_1", "rollbackCreateNetworkPoliciesAAI", "true");
+ rollbackData.put("VFMODULE_ADDON_1", "rollbackUpdateVnfAAI", "true");
+ rollbackData.put("VFMODULE_ADDON_1", "msorequestid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ rollbackData.put("VFMODULE_ADDON_1", "serviceinstanceid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+
+ rollbackData.put("VNF", "vnfId", "testVnfId123");
+
+ rollbackData.put("VNFANDMODULES", "numOfCreatedAddOnModules", "1");
+
+ variables.put("isDebugLogEnabled","true");
+ variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+
+
+ variables.put("rollbackData", rollbackData);
+ invokeSubProcess("DoCreateVnfAndModulesRollback", businessKey, variables);
+
+ // "changedelete" operation not required for deleting a Vf Module
+ // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
+ injectVNFRestCallbacks(callbacks, "vnfDelete");
+ injectVNFRestCallbacks(callbacks, "vnfDelete");
+ //waitForRunningProcessCount("DoCreateVnfAndModulesRollback", 0, 120000);
+ injectSDNCCallbacks(callbacks, "sdncDelete");
+
+ waitForProcessEnd(businessKey, 10000);
+ WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+ checkVariable(businessKey, "WorkflowException", null);
+ if (wfe != null) {
+ System.out.println("TestCreateVfModuleSuccess: ErrorCode=" + wfe.getErrorCode() +
+ ", ErrorMessage=" + wfe.getErrorMessage());
+ }
+ logEnd();
+ }
+
+ public static void MockDoDeleteVfModule_SDNCSuccess() {
+ stubFor(post(urlEqualTo("/SDNCAdapter"))
+ .withRequestBody(containing("SvcAction>deactivate"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
+ stubFor(post(urlEqualTo("/SDNCAdapter"))
+ .withRequestBody(containing("SvcAction>unassign"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
+ }
+
+
+}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfAndModulesTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfAndModulesTest.java new file mode 100644 index 0000000000..3c10872dc8 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfAndModulesTest.java @@ -0,0 +1,354 @@ +package org.openecomp.mso.bpmn.infrastructure;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDBUpdateVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById_404;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockSDNCAdapterVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockVNFAdapterRestVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.core.domain.ModelInfo;
+import org.openecomp.mso.bpmn.core.domain.ModuleResource;
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
+import org.openecomp.mso.bpmn.core.domain.VnfResource;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+/**
+ * Unit Test for the DoCreateVnfAndModules Flow
+ *
+ */
+public class DoCreateVnfAndModulesTest extends WorkflowTest {
+
+ private final CallbackSet callbacks = new CallbackSet();
+
+ public DoCreateVnfAndModulesTest() throws IOException {
+
+ callbacks.put("assign", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyAssignCallback.xml"));
+ callbacks.put("activate", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
+ callbacks.put("query", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyQueryCallback.xml"));
+ callbacks.put("queryVnf", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyQueryCallbackVnf.xml"));
+ callbacks.put("queryModuleNoVnf", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyQueryCallbackVfModuleNoVnf.xml"));
+ callbacks.put("queryModule", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyQueryCallbackVfModule.xml"));
+ callbacks.put("vnfCreate", FileUtil.readResourceFile(
+ "__files/VfModularity/VNFAdapterRestCreateCallback.xml"));
+ }
+
+ @Test
+ @Ignore // IGNORED FOR 1710 MERGE TO ONAP
+ @Deployment(resources = {"subprocess/GenericGetService.bpmn",
+ "subprocess/GenericGetVnf.bpmn",
+ "subprocess/GenericPutVnf.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/DoCreateVnf.bpmn",
+ "subprocess/GenerateVfModuleName.bpmn",
+ "subprocess/DoCreateVfModule.bpmn",
+ "subprocess/DoCreateVnfAndModules.bpmn",
+ "subprocess/GenericGetVnf.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/VnfAdapterRestV1.bpmn",
+ "subprocess/ConfirmVolumeGroupTenant.bpmn",
+ "subprocess/ConfirmVolumeGroupName.bpmn",
+ "subprocess/CreateAAIVfModule.bpmn",
+ "subprocess/UpdateAAIVfModule.bpmn",
+ "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",
+ "subprocess/UpdateAAIGenericVnf.bpmn",
+ "subprocess/DoCreateVnfAndModulesRollback.bpmn"})
+ public void testDoCreateVnfAndModulesBaseOnly_success() throws Exception{
+
+ MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");
+ MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+ MockGetGenericVnfById_404("testVnfId");
+ MockPutGenericVnf(".*");
+ MockAAIVfModule();
+ MockPatchGenericVnf("skask");
+ MockPatchVfModuleId("skask", ".*");
+ mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
+ MockVNFAdapterRestVfModule();
+ MockDBUpdateVfModule();
+
+ mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+
+ String businessKey = UUID.randomUUID().toString();
+ Map<String, Object> variables = new HashMap<String, Object>();
+ setVariablesSuccess(variables, "", "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");
+ invokeSubProcess("DoCreateVnfAndModules", businessKey, variables);
+
+ injectSDNCCallbacks(callbacks, "assign");
+ injectSDNCCallbacks(callbacks, "query");
+ injectSDNCCallbacks(callbacks, "activate");
+ injectSDNCCallbacks(callbacks, "queryVnf");
+ injectSDNCCallbacks(callbacks, "assign, queryModuleNoVnf");
+ injectVNFRestCallbacks(callbacks, "vnfCreate");
+ injectSDNCCallbacks(callbacks, "activate");
+ waitForProcessEnd(businessKey, 10000);
+
+ Assert.assertTrue(isProcessEnded(businessKey));
+ assertVariables("true", "true", "false", "true", "Success", null);
+
+ }
+
+ @Test
+ @Ignore // IGNORED FOR 1710 MERGE TO ONAP
+ @Deployment(resources = {"subprocess/GenericGetService.bpmn",
+ "subprocess/GenericGetVnf.bpmn",
+ "subprocess/GenericPutVnf.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/DoCreateVnf.bpmn",
+ "subprocess/GenerateVfModuleName.bpmn",
+ "subprocess/DoCreateVfModule.bpmn",
+ "subprocess/DoCreateVnfAndModules.bpmn",
+ "subprocess/GenericGetVnf.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/VnfAdapterRestV1.bpmn",
+ "subprocess/ConfirmVolumeGroupTenant.bpmn",
+ "subprocess/ConfirmVolumeGroupName.bpmn",
+ "subprocess/CreateAAIVfModule.bpmn",
+ "subprocess/UpdateAAIVfModule.bpmn",
+ "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",
+ "subprocess/UpdateAAIGenericVnf.bpmn",
+ "subprocess/DoCreateVnfAndModulesRollback.bpmn"})
+ public void testDoCreateVnfAndModulesWithAddon_success() throws Exception{
+
+ MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");
+ MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+ MockGetGenericVnfById_404("testVnfId");
+ MockPutGenericVnf(".*");
+ MockAAIVfModule();
+ MockPatchGenericVnf("skask");
+ MockPatchVfModuleId("skask", ".*");
+ mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
+ MockVNFAdapterRestVfModule();
+ MockDBUpdateVfModule();
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+ mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
+
+ String businessKey = UUID.randomUUID().toString();
+ Map<String, Object> variables = new HashMap<String, Object>();
+ setVariablesAddonSuccess(variables, "", "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");
+ invokeSubProcess("DoCreateVnfAndModules", businessKey, variables);
+
+ injectSDNCCallbacks(callbacks, "assign");
+ injectSDNCCallbacks(callbacks, "query");
+ injectSDNCCallbacks(callbacks, "activate");
+ injectSDNCCallbacks(callbacks, "queryVnf");
+ injectSDNCCallbacks(callbacks, "assign, queryModuleNoVnf");
+ injectVNFRestCallbacks(callbacks, "vnfCreate");
+ injectSDNCCallbacks(callbacks, "activate");
+ injectSDNCCallbacks(callbacks, "queryVnf");
+ injectSDNCCallbacks(callbacks, "assign, queryModuleNoVnf");
+ injectVNFRestCallbacks(callbacks, "vnfCreate");
+ injectSDNCCallbacks(callbacks, "activate");
+ waitForProcessEnd(businessKey, 10000);
+
+ Assert.assertTrue(isProcessEnded(businessKey));
+ assertVariables("true", "true", "false", "true", "Success", null);
+
+ }
+
+ private void assertVariables(String exSIFound, String exSISucc, String exVnfFound, String exVnfSucc, String exResponse, String exWorkflowException) {
+
+ String siFound = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "GENGS_FoundIndicator");
+ String siSucc = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "GENGS_SuccessIndicator");
+ String vnfFound = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "GENGV_FoundIndicator");
+ String vnfSucc = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "GENGV_SuccessIndicator");
+ String response = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "WorkflowResponse");
+ String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "SavedWorkflowException1");
+
+ //assertEquals(exSIFound, siFound);
+ //assertEquals(exSISucc, siSucc);
+ //assertEquals(exVnfFound, vnfFound);
+ //assertEquals(exVnfSucc, vnfSucc);
+ //assertEquals(exResponse, response);
+ assertEquals(exWorkflowException, workflowException);
+ }
+
+ private void setVariables(Map<String, String> variables, String request, String requestId, String siId) {
+ variables.put("isDebugLogEnabled", "true");
+ variables.put("bpmnRequest", request);
+ variables.put("mso-request-id", requestId);
+ variables.put("serviceInstanceId",siId);
+ variables.put("testVnfId","testVnfId123");
+ variables.put("vnfType", "STMTN");
+ }
+
+ private void setVariablesSuccess(Map<String, Object> variables, String request, String requestId, String siId) {
+ variables.put("isDebugLogEnabled", "true");
+ variables.put("mso-request-id", requestId);
+ variables.put("requestId", requestId);
+ variables.put("msoRequestId", requestId);
+ variables.put("serviceInstanceId",siId);
+ variables.put("disableRollback", "true");
+ //variables.put("testVnfId","testVnfId123");
+ variables.put("vnfType", "STMTN");
+
+ String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +
+ "\"modelInvariantUuid\": \"995256d2-5a33-55df-13ab-12abad84e7ff\"," +
+ "\"modelUuid\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+ "\"modelName\": \"ServicevSAMP12\"," +
+ "\"modelVersion\": \"1.0\"," +
+ "}";
+ variables.put("serviceModelInfo", serviceModelInfo);
+ variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
+ String vnfModelInfo = "{" + "\"modelType\": \"vnf\"," +
+ "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
+ "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+ "\"modelName\": \"vSAMP12\"," +
+ "\"modelVersion\": \"1.0\"," +
+ "\"modelCustomizationUuid\": \"MODEL-ID-1234\"" + "}";
+ variables.put("vnfModelInfo", vnfModelInfo);
+
+ String cloudConfiguration = "{" + "\"cloudConfiguration\": { " +
+ "\"lcpCloudRegionId\": \"mdt1\"," +
+ "\"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\"" + "}}";
+ variables.put("cloudConfiguration", cloudConfiguration);
+ variables.put("sdncVersion", "1707");
+ variables.put("globalSubscriberId", "subscriber123");
+
+ try {
+ String serviceDecomposition = FileUtil.readResourceFile("__files/VIPR/serviceDecompositionATMFW.json");
+ ServiceDecomposition sd = new ServiceDecomposition();
+ ModelInfo serviceModel = new ModelInfo();
+ serviceModel.setModelName("servicewithVNFs");
+ sd.setModelInfo(serviceModel);
+ VnfResource vr = new VnfResource();
+ ModelInfo mvr = new ModelInfo();
+ mvr.setModelName("vSAMP12");
+ mvr.setModelInstanceName("v123");
+ mvr.setModelInvariantUuid("");
+ mvr.setModelVersion("1.0");
+ mvr.setModelCustomizationUuid("MODEL-ID-1234");
+ vr.setModelInfo(mvr);
+ vr.constructVnfType("vnf1");
+ vr.setNfType("somenftype");
+ vr.setNfRole("somenfrole");
+ vr.setNfFunction("somenffunction");
+ vr.setNfNamingCode("somenamingcode");
+ ModuleResource mr = new ModuleResource();
+ ModelInfo mvmr = new ModelInfo();
+ mvmr.setModelInvariantUuid("ff5256d2-5a33-55df-13ab-12abad84e7ff");
+ mvmr.setModelName("STMTN5MMSC21-MMSC::model-1-0");
+ mvmr.setModelVersion("1");
+ mvmr.setModelCustomizationUuid("MODEL-123");
+ mr.setModelInfo(mvmr);
+ mr.setIsBase(true);
+ mr.setVfModuleLabel("MODULELABEL");
+ vr.addVfModule(mr);
+ sd.addVnfResource(vr);
+
+ variables.put("serviceDecomposition", sd);
+ variables.put("isTest", true);
+ } catch(Exception e) {
+
+ }
+
+ }
+
+ private void setVariablesAddonSuccess(Map<String, Object> variables, String request, String requestId, String siId) {
+ variables.put("isDebugLogEnabled", "true");
+ variables.put("mso-request-id", requestId);
+ variables.put("requestId", requestId);
+ variables.put("msoRequestId", requestId);
+ variables.put("serviceInstanceId",siId);
+ variables.put("disableRollback", "true");
+ //variables.put("testVnfId","testVnfId123");
+ variables.put("vnfType", "STMTN");
+
+ String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +
+ "\"modelInvariantUuid\": \"995256d2-5a33-55df-13ab-12abad84e7ff\"," +
+ "\"modelUuid\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+ "\"modelName\": \"ServicevSAMP12\"," +
+ "\"modelVersion\": \"1.0\"," +
+ "}";
+ variables.put("serviceModelInfo", serviceModelInfo);
+ variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
+ String vnfModelInfo = "{" + "\"modelType\": \"vnf\"," +
+ "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
+ "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+ "\"modelName\": \"vSAMP12\"," +
+ "\"modelVersion\": \"1.0\"," +
+ "\"modelCustomizationUuid\": \"MODEL-ID-1234\"" + "}";
+ variables.put("vnfModelInfo", vnfModelInfo);
+
+ String cloudConfiguration = "{" + "\"cloudConfiguration\": { " +
+ "\"lcpCloudRegionId\": \"mdt1\"," +
+ "\"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\"" + "}}";
+ variables.put("cloudConfiguration", cloudConfiguration);
+ variables.put("sdncVersion", "1707");
+ variables.put("globalSubscriberId", "subscriber123");
+
+ try {
+ String serviceDecomposition = FileUtil.readResourceFile("__files/VIPR/serviceDecompositionATMFW.json");
+ ServiceDecomposition sd = new ServiceDecomposition();
+ ModelInfo serviceModel = new ModelInfo();
+ serviceModel.setModelName("servicewithVNFs");
+ sd.setModelInfo(serviceModel);
+ VnfResource vr = new VnfResource();
+ ModelInfo mvr = new ModelInfo();
+ mvr.setModelName("vSAMP12");
+ mvr.setModelInstanceName("v123");
+ mvr.setModelInvariantUuid("");
+ mvr.setModelVersion("1.0");
+ mvr.setModelCustomizationUuid("MODEL-ID-1234");
+ vr.setModelInfo(mvr);
+ vr.setNfType("somenftype");
+ vr.setNfRole("somenfrole");
+ vr.setNfFunction("somenffunction");
+ vr.setNfNamingCode("somenamingcode");
+ ModuleResource mr = new ModuleResource();
+ ModelInfo mvmr = new ModelInfo();
+ mvmr.setModelInvariantUuid("ff5256d2-5a33-55df-13ab-12abad84e7ff");
+ mvmr.setModelName("STMTN5MMSC21-MMSC::model-1-0");
+ mvmr.setModelVersion("1");
+ mvmr.setModelCustomizationUuid("MODEL-123");
+ mr.setModelInfo(mvmr);
+ mr.setIsBase(true);
+ mr.setVfModuleLabel("MODULELABEL");
+ vr.addVfModule(mr);
+ ModuleResource mr1 = new ModuleResource();
+ ModelInfo mvmr1 = new ModelInfo();
+ mvmr1.setModelInvariantUuid("ff5256d2-5a33-55df-13ab-12abad84e7ff");
+ mvmr1.setModelName("STMTN5MMSC21-MMSC::model-1-0");
+ mvmr1.setModelVersion("1");
+ mvmr1.setModelCustomizationUuid("MODEL-123");
+ mr1.setModelInfo(mvmr1);
+ mr1.setIsBase(false);
+ mr1.setVfModuleLabel("MODULELABEL");
+ mr1.setInitialCount(1);
+ vr.addVfModule(mr1);
+
+ sd.addVnfResource(vr);
+
+ variables.put("serviceDecomposition", sd);
+ variables.put("isTest", true);
+ } catch(Exception e) {
+
+
+
+ }
+ }
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfTest.java index b161d05bfe..4d2b512a2f 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfTest.java +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfTest.java @@ -102,11 +102,11 @@ public class DoCreateVnfTest extends WorkflowTest { variables.put("vnfType", "STMTN"); variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"); String vnfModelInfo = "{ "+ "\"modelType\": \"vnf\"," + - "\"modelInvariantId\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," + - "\"modelNameVersionId\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," + + "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," + + "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," + "\"modelName\": \"vSAMP12\"," + "\"modelVersion\": \"1.0\"," + - "\"modelCustomizationId\": \"MODEL-ID-1234\"," + + "\"modelCustomizationUuid\": \"MODEL-ID-1234\"," + "}"; variables.put("vnfModelInfo", vnfModelInfo); @@ -114,6 +114,15 @@ public class DoCreateVnfTest extends WorkflowTest { "\"lcpCloudRegionId\": \"mdt1\"," + "\"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\"" + "}"; variables.put("cloudConfiguration", cloudConfiguration); + + String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," + + "\"modelInvariantUuid\": \"995256d2-5a33-55df-13ab-12abad84e7ff\"," + + "\"modelUuid\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," + + "\"modelName\": \"ServicevSAMP12\"," + + "\"modelVersion\": \"1.0\"," + + "}"; + variables.put("serviceModelInfo", serviceModelInfo); + variables.put("globalSubscriberId", "MSO-1610"); } } diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteServiceInstanceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteServiceInstanceTest.java new file mode 100644 index 0000000000..3aefb6afaa --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteServiceInstanceTest.java @@ -0,0 +1,88 @@ +package org.openecomp.mso.bpmn.infrastructure; + +import static org.junit.Assert.assertEquals; +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteServiceInstance; +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance; +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById; +import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB; +import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.camunda.bpm.engine.test.Deployment; +import org.junit.Assert; +import org.junit.Test; +import org.openecomp.mso.bpmn.common.BPMNUtil; +import org.openecomp.mso.bpmn.common.WorkflowTest; + +/** + * Unit test cases for DoDeleteServiceInstance.bpmn + */ +public class DoDeleteServiceInstanceTest extends WorkflowTest { + + private final CallbackSet callbacks = new CallbackSet(); + private static final String EOL = "\n"; + private final String sdncAdapterCallback = + "<output xmlns=\"com:att:sdnctl:l3api\">" + EOL + + " <svc-request-id>((REQUEST-ID))</svc-request-id>" + EOL + + " <ack-final-indicator>Y</ack-final-indicator>" + EOL + + "</output>" + EOL; + + public DoDeleteServiceInstanceTest() throws IOException { + callbacks.put("deactivate", sdncAdapterCallback); + callbacks.put("delete", sdncAdapterCallback); + } + + /** + * Sunny day VID scenario. + * + * @throws Exception + */ + //@Ignore // File not found - unable to run the test. Also, Stubs need updating.. + @Test + @Deployment(resources = { + "subprocess/DoDeleteServiceInstance.bpmn", + "subprocess/SDNCAdapterV1.bpmn", + "subprocess/GenericDeleteService.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/FalloutHandler.bpmn" }) + public void sunnyDay() throws Exception { + + logStart(); + + //AAI + MockDeleteServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "", 204); + MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSINoRelations.xml"); + MockNodeQueryServiceInstanceById("MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSIUrlById.xml"); + //SDNC + mockSDNCAdapter(200); + //DB + mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml"); + String businessKey = UUID.randomUUID().toString(); + + Map<String, Object> variables = new HashMap<String, Object>(); + setupVariables(variables); + invokeSubProcess("DoDeleteServiceInstance", businessKey, variables); + injectSDNCCallbacks(callbacks, "deactivate"); + injectSDNCCallbacks(callbacks, "delete"); + waitForProcessEnd(businessKey, 10000); + Assert.assertTrue(isProcessEnded(businessKey)); + String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteServiceInstance", "WorkflowException"); + System.out.println("workflowException:\n" + workflowException); + assertEquals(null, workflowException); + + logEnd(); + } + + // Success Scenario + private void setupVariables(Map<String, Object> variables) { + variables.put("isDebugLogEnabled", "true"); + variables.put("msoRequestId", "RaaDDSIRequestId-1"); + variables.put("mso-request-id", "RaaDDSIRequestId-1"); + variables.put("serviceInstanceId","MIS%252F1604%252F0026%252FSW_INTERNET"); + } +} diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVfModuleFromVnfTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVfModuleFromVnfTest.java new file mode 100644 index 0000000000..a1f66553f4 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVfModuleFromVnfTest.java @@ -0,0 +1,157 @@ +package org.openecomp.mso.bpmn.infrastructure;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.containing;
+import static com.github.tomakehurst.wiremock.client.WireMock.delete;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
+import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteVfModule;
+import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIGenericVnfSearch;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.core.WorkflowException;
+
+public class DoDeleteVfModuleFromVnfTest extends WorkflowTest {
+ private final CallbackSet callbacks = new CallbackSet();
+
+ private static final String EOL = "\n";
+
+ private final String vnfAdapterDeleteCallback =
+ "<deleteVfModuleResponse>" + EOL +
+ " <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +
+ " <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +
+ " <vfModuleDeleted>true</vfModuleDeleted>" + EOL +
+ " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
+ "</deleteVfModuleResponse>" + EOL;
+
+ private final String vnfAdapterDeleteCallbackFail =
+ "<vfModuleException>" + EOL +
+ " <message>Error processing request to VNF-Async. Not Found.</message>" + EOL +
+ " <category>INTERNAL</category>" + EOL +
+ " <rolledBack>false</rolledBack>" + EOL +
+ " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
+ "</vfModuleException>" + EOL;
+
+ private final String sdncAdapterDeleteCallback =
+ "<output xmlns=\"com:att:sdnctl:l3api\">" + EOL +
+ " <svc-request-id>{{REQUEST-ID}}</svc-request-id>" + EOL +
+ " <ack-final-indicator>Y</ack-final-indicator>" + EOL +
+ "</output>" + EOL;
+
+ public DoDeleteVfModuleFromVnfTest() throws IOException {
+ callbacks.put("deactivate", sdncAdapterDeleteCallback);
+ callbacks.put("unassign", sdncAdapterDeleteCallback);
+ callbacks.put("vnfDelete", vnfAdapterDeleteCallback);
+ callbacks.put("vnfDeleteFail", vnfAdapterDeleteCallbackFail);
+ }
+
+ private final String wfeString = "WorkflowException";
+
+ @Test
+ @Deployment(resources = {
+ "subprocess/DoDeleteVfModuleFromVnf.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/VnfAdapterRestV1.bpmn",
+ "subprocess/DeleteAAIVfModule.bpmn"
+ })
+ public void TestDoDeleteVfModuleFromVnfSuccess() {
+ // delete the Base Module and Generic Vnf
+ // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
+ String request =
+ "<vnf-request xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">" + EOL +
+ " <request-info>" + EOL +
+ " <action>DELETE_VF_MODULE</action>" + EOL +
+ " <source>PORTAL</source>" + EOL +
+ " </request-info>" + EOL +
+ " <vnf-inputs>" + EOL +
+ " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
+ " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
+ " <vnf-type>asc_heat-int</vnf-type>" + EOL +
+ " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
+ " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
+ " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
+ " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
+ " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
+ " <orchestration-status>pending-delete</orchestration-status>" + EOL +
+ " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
+ " </vnf-inputs>" + EOL +
+ " <vnf-params xmlns:tns=\"http://org.openecomp/mso/infra/vnf-request/v1\"/>" + EOL +
+ "</vnf-request>" + EOL;
+ logStart();
+ MockDoDeleteVfModule_SDNCSuccess();
+ MockDoDeleteVfModule_DeleteVNFSuccess();
+ MockAAIGenericVnfSearch();
+ MockAAIDeleteVfModule();
+
+ String businessKey = UUID.randomUUID().toString();
+ Map<String, Object> variables = new HashMap<String, Object>();
+ variables.put("isDebugLogEnabled","true");
+ variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ variables.put("msoRequestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ variables.put("serviceInstanceId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ variables.put("vfModuleId", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
+ variables.put("lcpCloudRegionId", "RDM2WAGPLCP");
+ variables.put("tenantId", "fba1bd1e195a404cacb9ce17a9b2b421");
+ variables.put("sdncVersion", "1707");
+
+ invokeSubProcess("DoDeleteVfModuleFromVnf", businessKey, variables);
+
+ injectSDNCCallbacks(callbacks, "deactivate");
+ injectVNFRestCallbacks(callbacks, "vnfDelete");
+ //waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
+ injectSDNCCallbacks(callbacks, "unassign");
+
+ waitForProcessEnd(businessKey, 10000);
+ WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
+ checkVariable(businessKey, wfeString, null);
+ if (wfe != null) {
+ System.out.println("TestDoDeleteVfModuleSuccess: ErrorCode=" + wfe.getErrorCode() +
+ ", ErrorMessage=" + wfe.getErrorMessage());
+ }
+ logEnd();
+ }
+
+
+ // start of mocks used locally and by other VF Module unit tests
+
+
+
+ public static void MockDoDeleteVfModule_SDNCSuccess() {
+ stubFor(post(urlEqualTo("/SDNCAdapter"))
+ .withRequestBody(containing("SvcAction>deactivate"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
+ stubFor(post(urlEqualTo("/SDNCAdapter"))
+ .withRequestBody(containing("SvcAction>unassign"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
+ }
+
+
+ public static void MockDoDeleteVfModule_DeleteVNFSuccess() {
+ stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))
+ .willReturn(aResponse()
+ .withStatus(202)
+ .withHeader("Content-Type", "application/xml")));
+ stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))
+ .willReturn(aResponse()
+ .withStatus(202)
+ .withHeader("Content-Type", "application/xml")));
+ }
+
+
+}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVfModuleTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVfModuleTest.java index a3165f7ff3..3e1c498c58 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVfModuleTest.java +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVfModuleTest.java @@ -43,6 +43,7 @@ import org.junit.Assert; import org.junit.Test;
import org.openecomp.mso.bpmn.common.WorkflowTest;
import org.openecomp.mso.bpmn.core.WorkflowException;
+import org.openecomp.mso.bpmn.mock.FileUtil;
/**
* Unit test for DoDeleteVfModule.bpmn.
@@ -77,7 +78,8 @@ public class DoDeleteVfModuleTest extends WorkflowTest { public DoDeleteVfModuleTest() throws IOException {
callbacks.put("sdncChangeDelete", sdncAdapterDeleteCallback);
callbacks.put("sdncDelete", sdncAdapterDeleteCallback);
- callbacks.put("vnfDelete", vnfAdapterDeleteCallback);
+ callbacks.put("vnfDelete", FileUtil.readResourceFile(
+ "__files/DeleteVfModuleCallbackResponse.xml"));
callbacks.put("vnfDeleteFail", vnfAdapterDeleteCallbackFail);
}
@@ -182,12 +184,13 @@ public class DoDeleteVfModuleTest extends WorkflowTest { variables.put("vfModuleName", "STMTN5MMSC21-MMSC::module-0-0");
variables.put("sdncVersion", "1610");
variables.put("isVidRequest", "true");
+ variables.put("retainResources", false);
String vfModuleModelInfo = "{" + "\"modelType\": \"vnf\"," +
- "\"modelInvariantId\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
- "\"modelNameVersionId\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+ "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
+ "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
"\"modelName\": \"vSAMP12\"," +
"\"modelVersion\": \"1.0\"," +
- "\"modelCustomizationId\": \"MODEL-ID-1234\"," +
+ "\"modelCustomizationUuid\": \"MODEL-ID-1234\"," +
"}";
variables.put("vfModuleModelInfo", vfModuleModelInfo);
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVfModuleVolumeV2Test.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVfModuleVolumeV2Test.java new file mode 100644 index 0000000000..01043100c1 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVfModuleVolumeV2Test.java @@ -0,0 +1,198 @@ +/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.bpmn.infrastructure;
+
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteVolumeGroupById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetNetworkCloudRegion;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetVolumeGroupById;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockPutVNFVolumeGroup;
+import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVfModuleDelete;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.core.WorkflowException;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+public class DoDeleteVfModuleVolumeV2Test extends WorkflowTest {
+
+ private final CallbackSet callbacks = new CallbackSet();
+
+ public DoDeleteVfModuleVolumeV2Test() throws IOException {
+ callbacks.put("volumeGroupDelete", FileUtil.readResourceFile(
+ "__files/DeleteVfModuleVolumeInfraV1/DeleteVfModuleVolumeCallbackResponse.xml"));
+ }
+
+ @Test
+ //@Ignore
+ @Deployment(resources = {"subprocess/DoDeleteVfModuleVolumeV2.bpmn", "subprocess/VnfAdapterRestV1.bpmn"})
+ public void happyPath() throws Exception {
+
+ logStart();
+
+ MockGetNetworkCloudRegion("MDTWNJ21", "CreateNetworkV2/cloudRegion30_AAIResponse_Success.xml");
+ MockGetVolumeGroupById("RDM2WAGPLCP", "78987", "DeleteVfModuleVolumeInfraV1/queryVolumeId_AAIResponse_Success.xml");
+ MockDeleteVolumeGroupById("RDM2WAGPLCP", "78987", "0000020", 200);
+ mockPutVNFVolumeGroup("78987", 202);
+ mockVfModuleDelete("78987");
+ MockDeleteVolumeGroupById("AAIAIC25", "78987", "0000020", 200);
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+ MockGetVolumeGroupById("AAIAIC25", "78987", "VfModularity/VolumeGroup.xml");
+ String businessKey = UUID.randomUUID().toString();
+
+ Map<String, Object> testVariables = new HashMap<String, Object>();
+ testVariables.put("mso-request-id", "TEST-REQUEST-ID-0123");
+ testVariables.put("msoRequestId", "TEST-REQUEST-ID-0123");
+ testVariables.put("isDebugLogEnabled", "true");
+ //testVariables.put("lcpCloudRegionId", "MDTWNJ21");
+ //testVariables.put("tenantId", "fba1bd1e195a404cacb9ce17a9b2b421");
+ testVariables.put("volumeGroupId", "78987");
+ testVariables.put("serviceInstanceId", "test-service-instance-id-0123");
+
+ String cloudConfiguration = "{" +
+ "\"lcpCloudRegionId\": \"MDTWNJ21\"," +
+ "\"tenantId\": \"fba1bd1e195a404cacb9ce17a9b2b421\"" + "}";
+ testVariables.put("cloudConfiguration", cloudConfiguration);
+
+ invokeSubProcess("DoDeleteVfModuleVolumeV2", businessKey, testVariables);
+
+ injectVNFRestCallbacks(callbacks, "volumeGroupDelete");
+
+ waitForProcessEnd(businessKey, 100000);
+ checkVariable(businessKey, "wasDeleted", "true");
+
+ logEnd();
+ }
+
+
+ @Test
+ //@Ignore
+ @Deployment(resources = {"subprocess/DoDeleteVfModuleVolumeV2.bpmn", "subprocess/VnfAdapterRestV1.bpmn"})
+ public void testVolumeGroupInUse() throws Exception {
+
+ logStart();
+ MockGetNetworkCloudRegion("MDTWNJ21", "CreateNetworkV2/cloudRegion30_AAIResponse_Success.xml");
+ MockGetVolumeGroupById("RDM2WAGPLCP", "78987", "DeleteVfModuleVolumeInfraV1/queryVolumeId_AAIResponse_HasVfModRelationship.xml");
+ MockDeleteVolumeGroupById("RDM2WAGPLCP", "78987", "0000020", 200);
+ mockVfModuleDelete("78987");
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+ String businessKey = UUID.randomUUID().toString();
+
+ Map<String, Object> testVariables = new HashMap<String, Object>();
+ testVariables.put("mso-request-id", "TEST-REQUEST-ID-0123");
+ testVariables.put("msoRequestId", "TEST-REQUEST-ID-0123");
+ testVariables.put("isDebugLogEnabled", "true");
+ testVariables.put("volumeGroupId", "78987");
+ testVariables.put("serviceInstanceId", "test-service-instance-id-0123");
+
+ String cloudConfiguration = "{" +
+ "\"lcpCloudRegionId\": \"MDTWNJ21\"," +
+ "\"tenantId\": \"fba1bd1e195a404cacb9ce17a9b2b421\"" + "}";
+ testVariables.put("cloudConfiguration", cloudConfiguration);
+
+ invokeSubProcess("DoDeleteVfModuleVolumeV2", businessKey, testVariables);
+
+ waitForProcessEnd(businessKey, 100000);
+ checkVariable(businessKey, "wasDeleted", "false");
+ WorkflowException msoException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+ System.out.println("WorkflowException - Code: " + msoException.getErrorCode() + " Message: " + msoException.getErrorMessage());
+
+
+ logEnd();
+ }
+
+ @Test
+ //@Ignore
+ @Deployment(resources = {"subprocess/DoDeleteVfModuleVolumeV2.bpmn", "subprocess/VnfAdapterRestV1.bpmn"})
+ public void testTenantIdMismatch() throws Exception {
+
+ logStart();
+ MockGetNetworkCloudRegion("MDTWNJ21", "CreateNetworkV2/cloudRegion30_AAIResponse_Success.xml");
+ MockGetVolumeGroupById("RDM2WAGPLCP", "78987", "DeleteVfModuleVolumeInfraV1/queryVolumeId_AAIResponse_Success.xml");
+ MockDeleteVolumeGroupById("RDM2WAGPLCP", "78987", "0000020", 200);
+ mockVfModuleDelete("78987", 404);
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+ String businessKey = UUID.randomUUID().toString();
+
+ Map<String, Object> testVariables = new HashMap<String, Object>();
+ testVariables.put("mso-request-id", "TEST-REQUEST-ID-0123");
+ testVariables.put("msoRequestId", "TEST-REQUEST-ID-0123");
+ testVariables.put("isDebugLogEnabled", "true");
+ testVariables.put("volumeGroupId", "78987");
+ testVariables.put("serviceInstanceId", "test-service-instance-id-0123");
+
+ String cloudConfiguration = "{" +
+ "\"lcpCloudRegionId\": \"MDTWNJ21\"," +
+ "\"tenantId\": \"fba1bd1e195a404cacb9ce17a9b2b421xxx\"" + "}";
+ testVariables.put("cloudConfiguration", cloudConfiguration);
+
+ invokeSubProcess("DoDeleteVfModuleVolumeV2", businessKey, testVariables);
+
+ waitForProcessEnd(businessKey, 100000);
+ checkVariable(businessKey, "wasDeleted", "false");
+ WorkflowException msoException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+ System.out.println("WorkflowException - Code: " + msoException.getErrorCode() + " Message: " + msoException.getErrorMessage());
+
+
+ logEnd();
+ }
+
+ @Test
+ //@Ignore
+ @Deployment(resources = {"subprocess/DoDeleteVfModuleVolumeV2.bpmn", "subprocess/VnfAdapterRestV1.bpmn"})
+ public void testVnfAdapterCallfail() throws Exception {
+
+ logStart();
+ MockGetNetworkCloudRegion("MDTWNJ21", "CreateNetworkV2/cloudRegion30_AAIResponse_Success.xml");
+ MockGetVolumeGroupById("RDM2WAGPLCP", "78987", "DeleteVfModuleVolumeInfraV1/queryVolumeId_AAIResponse_Success.xml");
+ MockDeleteVolumeGroupById("RDM2WAGPLCP", "78987", "0000020", 200);
+ mockVfModuleDelete("78987", 404);
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+ String businessKey = UUID.randomUUID().toString();
+
+ Map<String, Object> testVariables = new HashMap<String, Object>();
+ testVariables.put("mso-request-id", "TEST-REQUEST-ID-0123");
+ testVariables.put("msoRequestId", "TEST-REQUEST-ID-0123");
+ testVariables.put("isDebugLogEnabled", "true");
+ testVariables.put("volumeGroupId", "78987");
+ testVariables.put("serviceInstanceId", "test-service-instance-id-0123");
+
+ String cloudConfiguration = "{" +
+ "\"lcpCloudRegionId\": \"MDTWNJ21\"," +
+ "\"tenantId\": \"fba1bd1e195a404cacb9ce17a9b2b421\"" + "}";
+ testVariables.put("cloudConfiguration", cloudConfiguration);
+
+ invokeSubProcess("DoDeleteVfModuleVolumeV2", businessKey, testVariables);
+
+ waitForProcessEnd(businessKey, 100000);
+ checkVariable(businessKey, "wasDeleted", "false");
+ WorkflowException msoException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
+ System.out.println("WorkflowException - Code: " + msoException.getErrorCode() + " Message: " + msoException.getErrorMessage());
+
+ logEnd();
+ }
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVnfAndModulesTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVnfAndModulesTest.java new file mode 100644 index 0000000000..585c26d801 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVnfAndModulesTest.java @@ -0,0 +1,190 @@ +package org.openecomp.mso.bpmn.infrastructure;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.containing;
+import static com.github.tomakehurst.wiremock.client.WireMock.delete;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteVfModule;
+import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIGenericVnfSearch;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+public class DoDeleteVnfAndModulesTest extends WorkflowTest {
+ private final CallbackSet callbacks = new CallbackSet();
+ private static final String EOL = "\n";
+ private final String vnfAdapterDeleteCallback =
+ "<deleteVfModuleResponse>" + EOL +
+ " <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +
+ " <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +
+ " <vfModuleDeleted>true</vfModuleDeleted>" + EOL +
+ " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
+ "</deleteVfModuleResponse>" + EOL;
+
+ public DoDeleteVnfAndModulesTest () throws IOException {
+ callbacks.put("deactivate", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
+ callbacks.put("unassign", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
+ callbacks.put("vnfDelete", vnfAdapterDeleteCallback);
+
+ }
+
+ @Test
+ @Deployment(resources = {"subprocess/DoDeleteVnfAndModules.bpmn", "subprocess/SDNCAdapterV1.bpmn", "subprocess/GenericGetVnf.bpmn", "subprocess/GenericDeleteVnf.bpmn", "subprocess/DoDeleteVnf.bpmn", "subprocess/DoDeleteVfModule.bpmn"})
+ public void testDoDeleteVnfAndModules_successVnfOnly() throws Exception{
+ MockGetGenericVnfById("testVnfId123.*", "GenericFlows/getGenericVnfByNameResponse.xml");
+ MockDeleteGenericVnf("testVnfId123", "testReVer123");
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+ mockSDNCAdapter(200);
+
+ String businessKey = UUID.randomUUID().toString();
+ Map<String, Object> variables = new HashMap<String, Object>();
+ setVariablesVnfOnly(variables);
+ invokeSubProcess("DoDeleteVnfAndModules", businessKey, variables);
+
+ injectSDNCCallbacks(callbacks, "deactivate");
+ injectSDNCCallbacks(callbacks, "unassign");
+
+ waitForProcessEnd(businessKey, 10000);
+
+ Assert.assertTrue(isProcessEnded(businessKey));
+
+ String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnfAndModules", "WorkflowException");
+
+ assertEquals(null, workflowException);
+ }
+
+
+ private void setVariablesVnfOnly(Map<String, Object> variables) {
+ variables.put("mso-request-id", "testRequestId123");
+ variables.put("isDebugLogEnabled", "true");
+ variables.put("vnfId","testVnfId123");
+ variables.put("serviceInstanceId", "MIS%2F1604%2F0026%2FSW_INTERNET");
+ //variables.put("vnfName", "testVnfName123");
+ variables.put("disableRollback", "true");
+ variables.put("msoRequestId", "testVnfId123");
+ variables.put("testVnfId","testVnfId123");
+ //variables.put("vnfType", "STMTN");
+ variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
+ String vnfModelInfo = "{ "+ "\"modelType\": \"vnf\"," +
+ "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
+ "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+ "\"modelName\": \"vSAMP12\"," +
+ "\"modelVersion\": \"1.0\"," +
+ "\"modelCustomizationUuid\": \"MODEL-ID-1234\"," +
+ "}";
+ //variables.put("vnfModelInfo", vnfModelInfo);
+
+ variables.put("lcpCloudRegionId", "mdt1");
+ variables.put("tenantId", "88a6ca3ee0394ade9403f075db23167e");
+
+ String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +
+ "\"modelInvariantUuid\": \"995256d2-5a33-55df-13ab-12abad84e7ff\"," +
+ "\"modelUuid\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+ "\"modelName\": \"ServicevSAMP12\"," +
+ "\"modelVersion\": \"1.0\"," +
+ "}";
+ //variables.put("serviceModelInfo", serviceModelInfo);
+ variables.put("globalSubscriberId", "MSO-1610");
+ variables.put("sdncVersion", "1707");
+
+ }
+
+ @Test
+ @Deployment(resources = {"subprocess/DoDeleteVnfAndModules.bpmn", "subprocess/SDNCAdapterV1.bpmn", "subprocess/GenericGetVnf.bpmn", "subprocess/GenericDeleteVnf.bpmn", "subprocess/DoDeleteVnf.bpmn", "subprocess/DoDeleteVfModuleFromVnf.bpmn", "subprocess/VnfAdapterRestV1.bpmn", "subprocess/DeleteAAIVfModule.bpmn"})
+ public void testDoDeleteVnfAndModules_successVnfAndModules() throws Exception{
+ MockAAIGenericVnfSearch();
+ MockGetGenericVnfById("testVnfId123.*", "GenericFlows/getGenericVnfByNameResponse.xml");
+ MockDeleteGenericVnf("testVnfId123", "testReVer123");
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+ mockSDNCAdapter(200);
+ MockDoDeleteVfModule_SDNCSuccess();
+ MockDoDeleteVfModule_DeleteVNFSuccess();
+ MockAAIDeleteVfModule();
+
+ String businessKey = UUID.randomUUID().toString();
+ Map<String, Object> variables = new HashMap<String, Object>();
+ setVariablesVnfAndModules(variables);
+ invokeSubProcess("DoDeleteVnfAndModules", businessKey, variables);
+
+ injectSDNCCallbacks(callbacks, "deactivate");
+ injectSDNCCallbacks(callbacks, "deactivate");
+ injectVNFRestCallbacks(callbacks, "vnfDelete");
+ injectSDNCCallbacks(callbacks, "unassign");
+ MockGetGenericVnfById("a27ce5a9-29c4-4c22-a017-6615ac73c721", "GenericFlows/getGenericVnfByNameResponse.xml");
+ injectSDNCCallbacks(callbacks, "unassign");
+ //MockGetGenericVnfById("a27ce5a9-29c4-4c22-a017-6615ac73c721", "GenericFlows/getGenericVnfByNameResponse.xml");
+
+ waitForProcessEnd(businessKey, 10000);
+
+ Assert.assertTrue(isProcessEnded(businessKey));
+
+ String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnfAndModules", "WorkflowException");
+
+ assertEquals(null, workflowException);
+ }
+
+
+ private void setVariablesVnfAndModules(Map<String, Object> variables) {
+ variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ variables.put("isDebugLogEnabled", "true");
+ variables.put("vnfId","a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ variables.put("serviceInstanceId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+
+ variables.put("msoRequestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ //variables.put("testVnfId","testVnfId123");
+
+ variables.put("lcpCloudRegionId", "RDM2WAGPLCP");
+ variables.put("tenantId", "fba1bd1e195a404cacb9ce17a9b2b421");
+
+ variables.put("sdncVersion", "1707");
+
+ }
+
+
+ public static void MockDoDeleteVfModule_SDNCSuccess() {
+ stubFor(post(urlEqualTo("/SDNCAdapter"))
+ .withRequestBody(containing("SvcAction>deactivate"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
+ stubFor(post(urlEqualTo("/SDNCAdapter"))
+ .withRequestBody(containing("SvcAction>unassign"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
+ }
+
+
+ public static void MockDoDeleteVfModule_DeleteVNFSuccess() {
+ stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))
+ .willReturn(aResponse()
+ .withStatus(202)
+ .withHeader("Content-Type", "application/xml")));
+ stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))
+ .willReturn(aResponse()
+ .withStatus(202)
+ .withHeader("Content-Type", "application/xml")));
+ }
+}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVfModuleTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVfModuleTest.java index bba6f62adc..fa0bc4985c 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVfModuleTest.java +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVfModuleTest.java @@ -22,10 +22,19 @@ package org.openecomp.mso.bpmn.infrastructure; +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.put;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetVfModuleIdNoResponse;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetVolumeGroupById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;
import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
@@ -41,7 +50,6 @@ import org.junit.Assert; import org.junit.Ignore;
import org.junit.Test;
import org.openecomp.mso.bpmn.common.WorkflowTest;
-import org.openecomp.mso.bpmn.common.WorkflowTest.CallbackSet;
import org.openecomp.mso.bpmn.mock.FileUtil;
/**
@@ -112,5 +120,125 @@ public class DoUpdateVfModuleTest extends WorkflowTest { logEnd();
}
+
+ /**
+ * Test the happy path through the flow with Building Blocks interface.
+ */
+ @Test
+
+ @Deployment(resources = {
+ "subprocess/DoUpdateVfModule.bpmn",
+ "subprocess/PrepareUpdateAAIVfModule.bpmn",
+ "subprocess/ConfirmVolumeGroupTenant.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/VnfAdapterRestV1.bpmn",
+ "subprocess/UpdateAAIGenericVnf.bpmn",
+ "subprocess/UpdateAAIVfModule.bpmn"
+ })
+ public void happyPathBB() throws IOException {
+
+ logStart();
+
+ MockAAIVfModule();
+ MockPatchGenericVnf("skask");
+ MockPatchVfModuleId("skask", ".*");
+ MockSDNCAdapterVfModule();
+ MockVNFAdapterRestVfModule();
+
+ String businessKey = UUID.randomUUID().toString();
+ Map<String, Object> variables = new HashMap<String, Object>();
+ variables.put("mso-request-id", "DEV-VF-0011");
+ variables.put("isDebugLogEnabled","true");
+ variables.put("msoRequestId", "DEV-VF-0011");
+ variables.put("isBaseVfModule", "false");
+ variables.put("isDebugLogEnabled", "true");
+ variables.put("disableRollback", "true");
+ variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");
+ variables.put("vnfId", "skask");
+ variables.put("vfModuleId", "supercool");
+ variables.put("vnfType", "pcrf-capacity");
+ variables.put("isVidRequest", "true");
+ variables.put("volumeGroupId", "78987");
+ variables.put("usePreload", true);
+
+ variables.put("sdncVersion", "1702");
+
+ variables.put("lcpCloudRegionId", "MDTWNJ21");
+ variables.put("tenantId", "fba1bd1e195a404cacb9ce17a9b2b421");
+
+ String vfModuleModelInfo = "{ "+ "\"modelType\": \"vfModule\"," +
+ "\"modelInvariantUuid\": \"introvert\"," +
+ "\"modelUuid\": \"3.14\"," +
+ "\"modelName\": \"STMTN5MMSC21-MMSC::model-1-0\"," +
+ "\"modelVersion\": \"1\"," +
+ "\"modelCustomizationUuid\": \"MODEL-123\"" + "}";
+ variables.put("vfModuleModelInfo", vfModuleModelInfo);
+
+ String vnfModelInfo = "{ "+ "\"modelType\": \"vnf\"," +
+ "\"modelInvariantUuid\": \"introvert\"," +
+ "\"modelUuid\": \"3.14\"," +
+ "\"modelName\": \"VNF-STMTN5MMSC21-MMSC::model-1-0\"," +
+ "\"modelVersion\": \"1\"," +
+ "\"modelCustomizationUuid\": \"VNF-MODEL-123\"" + "}";
+ variables.put("vnfModelInfo", vnfModelInfo);
+
+ invokeSubProcess("DoUpdateVfModule", businessKey, variables);
+
+ injectSDNCCallbacks(callbacks, "changeassign, query");
+ injectVNFRestCallbacks(callbacks, "vnfUpdate");
+ injectSDNCCallbacks(callbacks, "activate");
+
+ waitForProcessEnd(businessKey, 10000);
+
+ Assert.assertTrue(isProcessEnded(businessKey));
+ checkVariable(businessKey, "DoUpdateVfModuleSuccessIndicator", true);
+
+ String heatStackId = (String) getVariableFromHistory(businessKey, "DOUPVfMod_heatStackId");
+ System.out.println("Heat stack Id from AAI: " + heatStackId);
+
+ logEnd();
+ }
+
+ // start of mocks used locally and by other VF Module unit tests
+ public static void MockSDNCAdapterVfModule() {
+ // simplified the implementation to return "success" for all requests
+ stubFor(post(urlEqualTo("/SDNCAdapter"))
+// .withRequestBody(containing("SvcInstanceId><"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile("VfModularity/StandardSDNCSynchResponse.xml")));
+// stubFor(post(urlEqualTo("/SDNCAdapter"))
+// .withRequestBody(containing("vnf-type>STMTN"))
+// .willReturn(aResponse()
+// .withStatus(200)
+// .withHeader("Content-Type", "text/xml")
+// .withBodyFile("VfModularity/StandardSDNCSynchResponse.xml")));
+// stubFor(post(urlEqualTo("/SDNCAdapter"))
+// .withRequestBody(containing("SvcAction>query"))
+// .willReturn(aResponse()
+// .withStatus(200)
+// .withHeader("Content-Type", "text/xml")
+// .withBodyFile("VfModularity/StandardSDNCSynchResponse.xml")));
+ }
+
+ public static void MockVNFAdapterRestVfModule() {
+ stubFor(put(urlEqualTo("/vnfs/v1/vnfs/skask/vf-modules/supercool"))
+ .willReturn(aResponse()
+ .withStatus(202)
+ .withHeader("Content-Type", "application/xml")));
+ stubFor(post(urlMatching("/vnfs/v1/vnfs/.*/vf-modules"))
+ .willReturn(aResponse()
+ .withStatus(202)
+ .withHeader("Content-Type", "application/xml")));
+ stubFor(post(urlEqualTo("/vnfs/v1/vnfs/skask/vf-modules"))
+ .willReturn(aResponse()
+ .withStatus(202)
+ .withHeader("Content-Type", "application/xml")));
+ stubFor(put(urlEqualTo("/vnfs/v1/volume-groups/78987"))
+ .willReturn(aResponse()
+ .withStatus(202)
+ .withHeader("Content-Type", "application/xml")));
+ }
}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVnfAndModulesTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVnfAndModulesTest.java new file mode 100644 index 0000000000..b7650af4b8 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVnfAndModulesTest.java @@ -0,0 +1,206 @@ +package org.openecomp.mso.bpmn.infrastructure;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDBUpdateVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById_404;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockSDNCAdapterVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFPut;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockVNFAdapterRestVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.core.domain.ModelInfo;
+import org.openecomp.mso.bpmn.core.domain.ModuleResource;
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
+import org.openecomp.mso.bpmn.core.domain.VnfResource;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+/**
+ * Unit Test for the DoUpdateVnfAndModules Flow
+ *
+ */
+public class DoUpdateVnfAndModulesTest extends WorkflowTest {
+
+ private final CallbackSet callbacks = new CallbackSet();
+
+ public DoUpdateVnfAndModulesTest() throws IOException {
+
+ callbacks.put("changeassign", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyChangeAssignCallback.xml"));
+ callbacks.put("activate", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
+ callbacks.put("query", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyQueryCallback.xml"));
+ callbacks.put("vnfUpdate", FileUtil.readResourceFile(
+ "__files/VfModularity/VNFAdapterRestUpdateCallback.xml"));
+ }
+
+ @Test
+
+ @Deployment(resources = {
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/PrepareUpdateAAIVfModule.bpmn",
+ "subprocess/DoUpdateVfModule.bpmn",
+ "subprocess/DoUpdateVnfAndModules.bpmn",
+ "subprocess/VnfAdapterRestV1.bpmn",
+ "subprocess/ConfirmVolumeGroupTenant.bpmn",
+ "subprocess/UpdateAAIVfModule.bpmn",
+ "subprocess/UpdateAAIGenericVnf.bpmn"})
+ public void testDoUpdateVnfAndModules_success() throws Exception{
+
+ MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");
+ MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+ //MockGetGenericVnfById_404("testVnfId");
+ MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");
+ MockPutGenericVnf(".*");
+ MockAAIVfModule();
+ MockPatchGenericVnf("skask");
+ MockPatchVfModuleId("skask", ".*");
+ mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
+ mockVNFPut("skask", "/supercool", 202);
+ mockVNFPut("skask", "/lukewarm", 202);
+ MockVNFAdapterRestVfModule();
+ MockDBUpdateVfModule();
+
+ mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+
+ String businessKey = UUID.randomUUID().toString();
+ Map<String, Object> variables = new HashMap<String, Object>();
+ setVariablesSuccess(variables, "", "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");
+ invokeSubProcess("DoUpdateVnfAndModules", businessKey, variables);
+
+ injectSDNCCallbacks(callbacks, "changeassign, query");
+ injectVNFRestCallbacks(callbacks, "vnfUpdate");
+ injectSDNCCallbacks(callbacks, "activate");
+ injectSDNCCallbacks(callbacks, "changeassign, query");
+ injectVNFRestCallbacks(callbacks, "vnfUpdate");
+ injectSDNCCallbacks(callbacks, "activate");
+ waitForProcessEnd(businessKey, 10000);
+
+ Assert.assertTrue(isProcessEnded(businessKey));
+ assertVariables("2", "200", null);
+
+ }
+
+
+
+ private void assertVariables(String exModuleCount, String exVnfFound, String exWorkflowException) {
+
+ String moduleCount = BPMNUtil.getVariable(processEngineRule, "DoUpdateVnfAndModules", "DUVAM_moduleCount");
+ String vnfFound = BPMNUtil.getVariable(processEngineRule, "DoUpdateVnfAndModules", "DUVAM_queryAAIVfModuleResponseCode");
+ String workflowException = BPMNUtil.getVariable(processEngineRule, "DoUpdateVnfAndModules", "SavedWorkflowException1");
+
+ assertEquals(exModuleCount, moduleCount);
+ assertEquals(exVnfFound, vnfFound);
+ assertEquals(exWorkflowException, workflowException);
+ }
+
+ private void setVariables(Map<String, String> variables, String request, String requestId, String siId) {
+ variables.put("isDebugLogEnabled", "true");
+ variables.put("bpmnRequest", request);
+ variables.put("msoRequestUdid", requestId);
+ variables.put("serviceInstanceId",siId);
+ variables.put("testVnfId","testVnfId123");
+ variables.put("vnfType", "STMTN");
+
+ }
+
+ private void setVariablesSuccess(Map<String, Object> variables, String request, String requestId, String siId) {
+ variables.put("isDebugLogEnabled", "true");
+ variables.put("requestId", requestId);
+ variables.put("msoRequestId", requestId);
+ variables.put("serviceInstanceId",siId);
+ variables.put("disableRollback", "true");
+ //variables.put("testVnfId","testVnfId123");
+ variables.put("vnfType", "STMTN");
+ variables.put("vnfId", "skask");
+ variables.put("tenantId", "88a6ca3ee0394ade9403f075db23167e");
+ variables.put("lcpCloudRegionId", "mdt1");
+
+ String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +
+ "\"modelInvariantUuid\": \"995256d2-5a33-55df-13ab-12abad84e7ff\"," +
+ "\"modelUuid\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+ "\"modelName\": \"ServicevSAMP12\"," +
+ "\"modelVersion\": \"1.0\"," +
+ "}";
+ variables.put("serviceModelInfo", serviceModelInfo);
+ variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
+ String vnfModelInfo = "{" + "\"modelType\": \"vnf\"," +
+ "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
+ "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+ "\"modelName\": \"vSAMP12\"," +
+ "\"modelVersion\": \"1.0\"," +
+ "\"modelCustomizationUuid\": \"MODEL-ID-1234\"" + "}";
+ variables.put("vnfModelInfo", vnfModelInfo);
+
+ String cloudConfiguration = "{" + "\"cloudConfiguration\": { " +
+ "\"lcpCloudRegionId\": \"mdt1\"," +
+ "\"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\"" + "}}";
+ variables.put("cloudConfiguration", cloudConfiguration);
+ variables.put("sdncVersion", "1702");
+ variables.put("globalSubscriberId", "subscriber123");
+ variables.put("asdcServiceModelVersion", "serviceVersion01");
+
+ try {
+ VnfResource vr = new VnfResource();
+ ModelInfo mvr = new ModelInfo();
+ mvr.setModelName("vSAMP12");
+ mvr.setModelInstanceName("v123");
+ mvr.setModelInvariantUuid("extrovert");
+ mvr.setModelVersion("1.0");
+ mvr.setModelCustomizationUuid("MODEL-ID-1234");
+ vr.setModelInfo(mvr);
+ vr.constructVnfType("vnf1");
+ vr.setNfType("somenftype");
+ vr.setNfRole("somenfrole");
+ vr.setNfFunction("somenffunction");
+ vr.setNfNamingCode("somenamingcode");
+ ModuleResource mr = new ModuleResource();
+ ModelInfo mvmr = new ModelInfo();
+ mvmr.setModelInvariantUuid("introvert");
+ mvmr.setModelName("STMTN5MMSC21-MMSC::model-1-0");
+ mvmr.setModelVersion("1");
+ mvmr.setModelCustomizationUuid("MODEL-123");
+ mr.setModelInfo(mvmr);
+ mr.setIsBase(true);
+ mr.setVfModuleLabel("MODULELABEL");
+ vr.addVfModule(mr);
+ ModuleResource mr1 = new ModuleResource();
+ ModelInfo mvmr1 = new ModelInfo();
+ mvmr1.setModelInvariantUuid("extrovert");
+ mvmr1.setModelName("SECONDMODELNAME");
+ mvmr1.setModelVersion("1");
+ mvmr1.setModelCustomizationUuid("MODEL-123");
+ mr1.setModelInfo(mvmr1);
+ mr1.setIsBase(false);
+ mr1.setVfModuleLabel("MODULELABEL1");
+ vr.addVfModule(mr1);
+ variables.put("vnfResourceDecomposition", vr);
+ variables.put("isTest", true);
+ } catch(Exception e) {
+
+ }
+
+ }
+
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/ReplaceVnfInfraTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/ReplaceVnfInfraTest.java new file mode 100644 index 0000000000..acccbf5788 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/ReplaceVnfInfraTest.java @@ -0,0 +1,259 @@ +/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.bpmn.infrastructure;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.containing;
+import static com.github.tomakehurst.wiremock.client.WireMock.delete;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
+import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteVfModule;
+import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIGenericVnfSearch;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDBUpdateVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteVfModuleId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetPserverByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfsByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockVNFAdapterRestVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockSetInMaintFlagByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponsePolicy.MockPolicyAbort;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFPut;
+import static org.openecomp.mso.bpmn.mock.StubResponsePolicy.MockPolicySkip;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+/**
+ * Unit test cases for UpdateVnfInfra.bpmn
+ */
+public class ReplaceVnfInfraTest extends WorkflowTest {
+
+ private final CallbackSet callbacks = new CallbackSet();
+ private static final String EOL = "\n";
+ private final String vnfAdapterDeleteCallback =
+ "<deleteVfModuleResponse>" + EOL +
+ " <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +
+ " <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +
+ " <vfModuleDeleted>true</vfModuleDeleted>" + EOL +
+ " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
+ "</deleteVfModuleResponse>" + EOL;
+
+ public ReplaceVnfInfraTest() throws IOException {
+ callbacks.put("deactivate", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
+ callbacks.put("unassign", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
+ callbacks.put("vnfDelete", vnfAdapterDeleteCallback);
+ callbacks.put("changeassign", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyChangeAssignCallback.xml"));
+ callbacks.put("activate", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
+ callbacks.put("query", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyQueryCallback.xml"));
+ callbacks.put("vnfUpdate", FileUtil.readResourceFile(
+ "__files/VfModularity/VNFAdapterRestUpdateCallback.xml"));
+ }
+
+ /**
+ * Sunny day scenario.
+ *
+ * @throws Exception
+ */
+ @Test
+ @Ignore
+ @Deployment(resources = {
+ "process/ReplaceVnfInfra.bpmn",
+ "subprocess/DoDeleteVfModule.bpmn",
+ "subprocess/DoDeleteVnfAndModules.bpmn",
+ "subprocess/DeleteAAIVfModule.bpmn",
+ "subprocess/PrepareUpdateAAIVfModule.bpmn",
+ "subprocess/ConfirmVolumeGroupTenant.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/DoDeleteVnfAndModules.bpmn",
+ "subprocess/GenericDeleteVnf.bpmn",
+ "subprocess/DoDeleteVnf.bpmn",
+ "subprocess/DoDeleteVfModule.bpmn",
+ "subprocess/VnfAdapterRestV1.bpmn",
+ "subprocess/UpdateAAIGenericVnf.bpmn",
+ "subprocess/UpdateAAIVfModule.bpmn",
+ "subprocess/GenericGetService.bpmn",
+ "subprocess/GenericGetVnf.bpmn",
+ "subprocess/GenericPutVnf.bpmn",
+ "subprocess/DoCreateVnf.bpmn",
+ "subprocess/GenerateVfModuleName.bpmn",
+ "subprocess/DoCreateVfModule.bpmn",
+ "subprocess/DoCreateVnfAndModules.bpmn",
+ "subprocess/ConfirmVolumeGroupName.bpmn",
+ "subprocess/CreateAAIVfModule.bpmn",
+ "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",
+ "subprocess/CompleteMsoProcess.bpmn",
+ "subprocess/FalloutHandler.bpmn",
+ "subprocess/DoCreateVnfAndModulesRollback.bpmn",
+ "subprocess/BuildingBlock/DecomposeService.bpmn",
+ "subprocess/BuildingBlock/RainyDayHandler.bpmn",
+ "subprocess/BuildingBlock/ManualHandling.bpmn"
+
+ })
+ public void sunnyDay() throws Exception {
+
+ logStart();
+ MockAAIGenericVnfSearch();
+ MockGetGenericVnfById("testVnfId123.*", "GenericFlows/getGenericVnfByNameResponse.xml");
+ MockDeleteGenericVnf("testVnfId123", "testReVer123");
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+ mockSDNCAdapter(200);
+ MockDoDeleteVfModule_SDNCSuccess();
+ MockDoDeleteVfModule_DeleteVNFSuccess();
+ MockAAIDeleteVfModule();
+
+ MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");
+ MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+ //MockGetGenericVnfById_404("testVnfId");
+ MockGetServiceResourcesCatalogData("995256d2-5a33-55df-13ab-12abad84e7ff", "1.0", "VIPR/getCatalogServiceResourcesDataForReplaceVnfInfra.json");
+ //MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");
+ //MockPutGenericVnf(".*");
+ MockAAIVfModule();
+ MockPatchGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", ".*");
+ //mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
+ //mockVNFPut("skask", "/supercool", 202);
+ //mockVNFPut("skask", "/lukewarm", 202);
+ //MockVNFAdapterRestVfModule();
+ //MockDBUpdateVfModule();
+ //MockGetPserverByVnfId("skask", "AAI/AAI_pserverByVnfId.json", 200);
+ //MockGetGenericVnfsByVnfId("skask", "AAI/AAI_genericVnfsByVnfId.json", 200);
+ MockSetInMaintFlagByVnfId("skask", 200);
+ MockPolicySkip();
+
+ //mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
+ //mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+
+ String businessKey = UUID.randomUUID().toString();
+ String updaetVnfRequest =
+ FileUtil.readResourceFile("__files/InfrastructureFlows/ReplaceVnf_VID_request.json");
+
+ Map<String, Object> variables = setupVariablesSunnyDayVID();
+
+
+ TestAsyncResponse asyncResponse = invokeAsyncProcess("ReplaceVnfInfra",
+ "v1", businessKey, updaetVnfRequest, variables);
+
+ WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+
+ String responseBody = response.getResponse();
+ System.out.println("Workflow (Synch) Response:\n" + responseBody);
+
+ //injectSDNCCallbacks(callbacks, "deactivate");
+ //injectSDNCCallbacks(callbacks, "deactivate");
+ injectVNFRestCallbacks(callbacks, "vnfDelete");
+ //injectSDNCCallbacks(callbacks, "unassign");
+ MockGetGenericVnfById("a27ce5a9-29c4-4c22-a017-6615ac73c721", "GenericFlows/getGenericVnfByNameResponse.xml");
+ injectSDNCCallbacks(callbacks, "unassign");
+
+
+ injectSDNCCallbacks(callbacks, "changeassign, query");
+ injectVNFRestCallbacks(callbacks, "vnfUpdate");
+ injectSDNCCallbacks(callbacks, "activate");
+ injectSDNCCallbacks(callbacks, "changeassign, query");
+ injectVNFRestCallbacks(callbacks, "vnfUpdate");
+ injectSDNCCallbacks(callbacks, "activate");
+
+ // TODO add appropriate assertions
+
+ waitForProcessEnd(businessKey, 10000);
+ checkVariable(businessKey, "ReplaceVfModuleInfraSuccessIndicator", true);
+
+ logEnd();
+ }
+
+ // Active Scenario
+ private Map<String, Object> setupVariablesSunnyDayVID() {
+ Map<String, Object> variables = new HashMap<String, Object>();
+ //try {
+ // variables.put("bpmnRequest", FileUtil.readResourceFile("__files/CreateVfModule_VID_request.json"));
+ //}
+ //catch (Exception e) {
+
+ //}
+ //variables.put("mso-request-id", "testRequestId");
+ variables.put("requestId", "testRequestId");
+ variables.put("isDebugLogEnabled", "true");
+ variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");
+ variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+ variables.put("vnfType", "vSAMP12");
+ variables.put("serviceType", "MOG");
+
+ return variables;
+
+ }
+
+ public static void MockDoDeleteVfModule_SDNCSuccess() {
+ stubFor(post(urlEqualTo("/SDNCAdapter"))
+ .withRequestBody(containing("SvcAction>deactivate"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
+ stubFor(post(urlEqualTo("/SDNCAdapter"))
+ .withRequestBody(containing("SvcAction>unassign"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
+ }
+
+
+ public static void MockDoDeleteVfModule_DeleteVNFSuccess() {
+ stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))
+ .willReturn(aResponse()
+ .withStatus(202)
+ .withHeader("Content-Type", "application/xml")));
+ stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))
+ .willReturn(aResponse()
+ .withStatus(202)
+ .withHeader("Content-Type", "application/xml")));
+ }
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateNetworkInstanceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateNetworkInstanceTest.java new file mode 100644 index 0000000000..39cdd72375 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateNetworkInstanceTest.java @@ -0,0 +1,468 @@ +package org.openecomp.mso.bpmn.infrastructure; + +import static org.openecomp.mso.bpmn.mock.StubResponseAAI.*; +import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockUpdateRequestDB; +import static org.openecomp.mso.bpmn.mock.StubResponseNetworkAdapter.MockNetworkAdapterRestPut; +import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapterTopology; +import static org.openecomp.mso.bpmn.common.BPMNUtil.executeAsyncWorkflow; +import static org.openecomp.mso.bpmn.common.BPMNUtil.getVariable; +import static org.junit.Assert.assertEquals; + +import java.util.HashMap; +import java.util.Map; + +import org.camunda.bpm.engine.test.Deployment; +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; + +import org.openecomp.mso.bpmn.common.BPMNUtil; +import org.openecomp.mso.bpmn.common.WorkflowTest; +import org.openecomp.mso.bpmn.common.WorkflowTestTransformer; +import org.openecomp.mso.bpmn.common.SDNCAdapterCallbackRule; +import org.openecomp.mso.bpmn.mock.SDNCAdapterNetworkTopologyMockTransformer; + +import com.github.tomakehurst.wiremock.extension.ResponseTransformer; + +/** + * Unit test cases for DoUpdateNetworkInstance.bpmn + * + */ +public class UpdateNetworkInstanceTest extends WorkflowTest { + @WorkflowTestTransformer + public static final ResponseTransformer sdncAdapterMockTransformer = + new SDNCAdapterNetworkTopologyMockTransformer(); + + @Rule + public final SDNCAdapterCallbackRule sdncAdapterCallbackRule = + new SDNCAdapterCallbackRule(processEngineRule); + + /** + * End-to-End flow - Unit test for DoUpdateNetworkInstance.bpmn + * - String input & String response + */ + + @Test + //@Ignore + @Deployment(resources = {"process/UpdateNetworkInstance.bpmn", + "subprocess/DoUpdateNetworkInstance.bpmn", + "subprocess/FalloutHandler.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/SDNCAdapterV1.bpmn"}) + + public void shouldInvokeServiceUpdateNetworkInstance_SuccessVID1() throws Exception { + + System.out.println("----------------------------------------------------------"); + System.out.println(" Success1 - UpdateNetworkInstance flow Started! "); + System.out.println("----------------------------------------------------------"); + + // setup simulators + mockSDNCAdapterTopology("UpdateNetworkV2mock/sdncUpdateNetworkTopologySimResponse.xml", "SvcAction>changeassign"); + MockNetworkAdapterRestPut("UpdateNetworkV2/updateNetworkResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4"); + MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP"); + MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "UpdateNetworkV2/updateNetwork_queryNetworkId_AAIResponse_Success.xml", "1"); + MockPutNetworkIdWithDepth("UpdateNetworkV2/updateNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1"); + MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017"); + MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6"); + MockGetNetworkPolicy("UpdateNetworkV2/updateNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg"); + MockGetNetworkTableReference("UpdateNetworkV2/updateNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1"); + MockGetNetworkTableReference("UpdateNetworkV2/updateNetwork_queryNetworkTableRef2_AAIResponse_Success.xml", "refFQDN2"); + MockUpdateRequestDB("DBUpdateResponse.xml"); + //MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "UpdateNetworkV2/updateNetwork_queryInstance_Success.xml", "v8"); + MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "UpdateNetworkV2/updateNetwork_queryInstance_Success.xml"); + + Map<String, String> variables = setupVariablesVID1(); + //WorkflowResponse workflowResponse = executeAsyncWorkflow(processEngineRule, "UpdateNetworkInstance", variables); + executeAsyncWorkflow(processEngineRule, "UpdateNetworkInstance", variables); + System.out.println("----------------------------------------------------------"); + System.out.println("- got workflow response -"); + System.out.println("----------------------------------------------------------"); + //waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID()); + + assertEquals("true", getVariable(processEngineRule, "UpdateNetworkInstance", "UPDNI_Success")); + Assert.assertNotNull("UPDNI_CompleteMsoProcessRequest - ", getVariable(processEngineRule, "UpdateNetworkInstance", "UPDNI_CompleteMsoProcessRequest")); + + String workflowResp = BPMNUtil.getVariable(processEngineRule, "UpdateNetworkInstance", "WorkflowResponse"); + Assert.assertNotNull(workflowResp); + + System.out.println("----------------------------------------------------------"); + System.out.println(" Success1 - UpdateNetworkInstance flow Completed "); + System.out.println("----------------------------------------------------------"); + + } + + @Test + //@Ignore + @Deployment(resources = {"process/UpdateNetworkInstance.bpmn", + "subprocess/DoUpdateNetworkInstance.bpmn", + "subprocess/FalloutHandler.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/SDNCAdapterV1.bpmn"}) + + public void shouldInvokeServiceUpdateNetworkInstance_SuccessVIPER1() throws Exception { + + System.out.println("----------------------------------------------------------"); + System.out.println(" Success2 - UpdateNetworkInstance flow Started! "); + System.out.println("----------------------------------------------------------"); + + // setup simulators + mockSDNCAdapterTopology("UpdateNetworkV2mock/sdncUpdateNetworkTopologySimResponse.xml", "SvcAction>changeassign"); + MockNetworkAdapterRestPut("UpdateNetworkV2/updateNetworkResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4"); + MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP"); + MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "UpdateNetworkV2/updateNetwork_queryNetworkId_AAIResponse_Success.xml", "1"); + MockPutNetworkIdWithDepth("UpdateNetworkV2/updateNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1"); + MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017"); + MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6"); + MockGetNetworkPolicy("UpdateNetworkV2/updateNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg"); + MockGetNetworkTableReference("UpdateNetworkV2/updateNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1"); + MockGetNetworkTableReference("UpdateNetworkV2/updateNetwork_queryNetworkTableRef2_AAIResponse_Success.xml", "refFQDN2"); + MockUpdateRequestDB("DBUpdateResponse.xml"); + //MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "UpdateNetworkV2/updateNetwork_queryInstance_Success.xml", "v8"); + MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "UpdateNetworkV2/updateNetwork_queryInstance_Success.xml"); + + Map<String, String> variables = setupVariablesVIPER1(); + //WorkflowResponse workflowResponse = executeAsyncWorkflow(processEngineRule, "UpdateNetworkInstance", variables); + executeAsyncWorkflow(processEngineRule, "UpdateNetworkInstance", variables); + //waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID()); + + assertEquals("true", getVariable(processEngineRule, "UpdateNetworkInstance", "UPDNI_Success")); + Assert.assertNotNull("UPDNI_CompleteMsoProcessRequest - ", getVariable(processEngineRule, "UpdateNetworkInstance", "UPDNI_CompleteMsoProcessRequest")); + + String completeMsoProcessRequest = + "<aetgt:MsoCompletionRequest xmlns:aetgt=\"http://org.openecomp/mso/workflow/schema/v1\"" + '\n' + + " xmlns:ns=\"http://org.openecomp/mso/request/types/v1\"" + '\n' + + " xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">" + '\n' + + " <request-info>" + '\n' + + " <request-id>testRequestId</request-id>" + '\n' + + " <action>UPDATE</action>" + '\n' + + " <source>VID</source>" + '\n' + + " </request-info>" + '\n' + + " <aetgt:status-message>Network has been updated successfully.</aetgt:status-message>" + '\n' + + " <aetgt:mso-bpel-name>BPMN Network action: UPDATE</aetgt:mso-bpel-name>" + '\n' + + "</aetgt:MsoCompletionRequest>"; + + Assert.assertEquals(completeMsoProcessRequest, getVariable(processEngineRule, "UpdateNetworkInstance", "UPDNI_CompleteMsoProcessRequest")); + + System.out.println("----------------------------------------------------------"); + System.out.println(" Success2 - UpdateNetworkInstance flow Completed "); + System.out.println("----------------------------------------------------------"); + + } + + + @Test + //@Ignore + @Deployment(resources = {"process/UpdateNetworkInstance.bpmn", + "subprocess/DoUpdateNetworkInstance.bpmn", + "subprocess/FalloutHandler.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/SDNCAdapterV1.bpmn"}) + + public void shouldInvokeServiceUpdateNetworkInstance_MissingNetworkId() throws Exception { + + System.out.println("--------------------------------------------------------------------"); + System.out.println(" Missing networkId - UpdateNetworkInstance flow Started! "); + System.out.println("--------------------------------------------------------------------"); + + // setup simulators + MockUpdateRequestDB("DBUpdateResponse.xml"); + //MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "UpdateNetworkV2/updateNetwork_queryInstance_Success.xml", "v8"); + MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "UpdateNetworkV2/updateNetwork_queryInstance_Success.xml"); + + Map<String, String> variables = setupVariablesMissingNetworkId(); + //WorkflowResponse workflowResponse = executeAsyncWorkflow(processEngineRule, "UpdateNetworkInstance", variables); + executeAsyncWorkflow(processEngineRule, "UpdateNetworkInstance", variables); + //waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID()); + + assertEquals("false", getVariable(processEngineRule, "UpdateNetworkInstance", "UPDNI_Success")); + Assert.assertNotNull("UPDNI_FalloutHandlerRequest - ", getVariable(processEngineRule, "UpdateNetworkInstance", "UPDNI_FalloutHandlerRequest")); + + String falloutHandlerActual = getVariable(processEngineRule, "UpdateNetworkInstance", "UPDNI_FalloutHandlerRequest"); + String falloutHandlerExpected = +"<aetgt:FalloutHandlerRequest xmlns:aetgt=\"http://org.openecomp/mso/workflow/schema/v1\"" + "\n" + +" xmlns:ns=\"http://org.openecomp/mso/request/types/v1\"" + "\n" + +" xmlns:wfsch=\"http://org.openecomp/mso/workflow/schema/v1\">" + "\n" + +" <request-info xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">" + "\n" + +" <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>" + "\n" + +" <action>UPDATE</action>" + "\n" + +" <source>VID</source>" + "\n" + +" </request-info>" + "\n" + +" <aetgt:WorkflowException xmlns:aetgt=\"http://org.openecomp/mso/workflow/schema/v1\">" + "\n" + +" <aetgt:ErrorMessage>Variable 'network-id' value/element is missing.</aetgt:ErrorMessage>" + "\n" + +" <aetgt:ErrorCode>7000</aetgt:ErrorCode>" + "\n" + +" </aetgt:WorkflowException>" + "\n" + +" </aetgt:FalloutHandlerRequest>"; + + assertEquals("Response", falloutHandlerExpected, falloutHandlerActual); + + System.out.println("------------------------------------------------------------------"); + System.out.println(" Missing networkId - UpdateNetworkInstance flow Completed "); + System.out.println("------------------------------------------------------------------"); + + } + + + @Test + //@Ignore + @Deployment(resources = {"process/UpdateNetworkInstance.bpmn", + "subprocess/DoUpdateNetworkInstance.bpmn", + "subprocess/DoUpdateNetworkInstanceRollback.bpmn", + "subprocess/FalloutHandler.bpmn", + "subprocess/CompleteMsoProcess.bpmn", + "subprocess/GenericGetService.bpmn", + "subprocess/SDNCAdapterV1.bpmn"}) + + public void shouldInvokeServiceUpdateNetworkInstance_Network_SDNC_Rollback() throws Exception { + + System.out.println("---------------------------------------------------------------"); + System.out.println(" Network and SDNC Rollback - UpdateNetworkInstance flow Started! "); + System.out.println("---------------------------------------------------------------"); + + // setup simulators + mockSDNCAdapterTopology("UpdateNetworkV2mock/sdncUpdateNetworkTopologySimResponse.xml", "SvcAction>changeassign"); + mockSDNCAdapterTopology("UpdateNetworkV2mock/sdncUpdateNetworkTopologySimResponse.xml", "SvcAction>rollback"); + MockNetworkAdapterRestPut("UpdateNetworkV2/updateNetworkResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4"); + MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP"); + MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "UpdateNetworkV2/updateNetwork_queryNetworkId_AAIResponse_Success.xml", "1"); + MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017"); + MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6"); + MockGetNetworkPolicy("UpdateNetworkV2/updateNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg"); + MockGetNetworkTableReference("UpdateNetworkV2/updateNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1"); + MockGetNetworkTableReference("UpdateNetworkV2/updateNetwork_queryNetworkTableRef2_AAIResponse_Success.xml", "refFQDN2"); + MockUpdateRequestDB("DBUpdateResponse.xml"); + //MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "UpdateNetworkV2/updateNetwork_queryInstance_Success.xml", "v8"); + MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "UpdateNetworkV2/updateNetwork_queryInstance_Success.xml"); + + Map<String, String> variables = setupVariablesVID1(); + //WorkflowResponse workflowResponse = executeAsyncWorkflow(processEngineRule, "UpdateNetworkInstance", variables); + executeAsyncWorkflow(processEngineRule, "UpdateNetworkInstance", variables); + //waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID()); + + assertEquals("false", getVariable(processEngineRule, "UpdateNetworkInstance", "UPDNI_Success")); + Assert.assertNotNull("UPDNI_FalloutHandlerRequest - ", getVariable(processEngineRule, "UpdateNetworkInstance", "UPDNI_FalloutHandlerRequest")); + + System.out.println("---------------------------------------------------------------------"); + System.out.println(" Network and SCNC Rollback - UpdateNetworkInstance flow Completed "); + System.out.println("---------------------------------------------------------------------"); + + } + + // ***************** + // Utility Section + // ***************** + + String networkModelInfo = + " {\"modelUuid\": \"mod-inst-uuid-123\", " + '\n' + + " \"modelName\": \"mod_inst_z_123\", " + '\n' + + " \"modelVersion\": \"1.0\", " + '\n' + + " \"modelCustomizationUuid\": \"mod-inst-uuid-123\", " + '\n' + + " \"modelInvariantUuid\": \"mod-invar-uuid-123\" " + '\n' + + " }"; + + String serviceModelInfo = + " {\"modelUuid\": \"36a3a8ea-49a6-4ac8-b06c-89a54544b9b6\", " + '\n' + + " \"modelName\": \"HNGW Protected OAM\", " + '\n' + + " \"modelVersion\": \"1.0\", " + '\n' + + " \"modelInvariantUuid\": \"fcc85cb0-ad74-45d7-a5a1-17c8744fdb71\" " + '\n' + + " }"; + + // Success Scenario + private Map<String, String> setupVariablesVID1() { + Map<String, String> variables = new HashMap<String, String>(); + variables.put("bpmnRequest", getCreateNetworkRequest1()); + variables.put("mso-request-id", "testRequestId"); + variables.put("requestId", "testRequestId"); + variables.put("isBaseVfModule", "true"); + variables.put("recipeTimeout", "0"); + variables.put("requestAction", "UPDATE"); + variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4"); + variables.put("vnfId", ""); + variables.put("vfModuleId", ""); + variables.put("volumeGroupId", ""); + variables.put("networkId", "49c86598-f766-46f8-84f8-8d1c1b10f9b4"); + variables.put("serviceType", "vMOG"); + variables.put("vfModuleType", ""); + variables.put("networkType", "modelName"); + return variables; + + } + + public String getCreateNetworkRequest1() { + + String request = + "{ \"requestDetails\": { " + '\n' + + " \"modelInfo\": { " + '\n' + + " \"modelType\": \"modelType\", " + '\n' + + " \"modelCustomizationId\": \"f21df226-8093-48c3-be7e-0408fcda0422\", " + '\n' + + " \"modelName\": \"CONTRAIL_EXTERNAL\", " + '\n' + + " \"modelVersion\": \"1.0\" " + '\n' + + " }, " + '\n' + + " \"cloudConfiguration\": { " + '\n' + + " \"lcpCloudRegionId\": \"RDM2WAGPLCP\", " + '\n' + + " \"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\" " + '\n' + + " }, " + '\n' + + " \"requestInfo\": { " + '\n' + + " \"instanceName\": \"MNS-25180-L-01-dmz_direct_net_1\", " + '\n' + + " \"source\": \"VID\", " + '\n' + + " \"callbackUrl\": \"\", " + '\n' + + " \"suppressRollback\": \"false\" ," + '\n' + + " \"productFamilyId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\" " + '\n' + + " }, " + '\n' + + " \"requestParameters\": { " + '\n' + + " \"backoutOnFailure\": true, " + '\n' + + " \"serviceId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\", " + '\n' + + " \"userParams\": [] " + '\n' + + " } " + '\n' + + " } " + '\n' + + "}"; + + return request; + } + + public String getCreateNetworkRequest2() { + + String request = + "{ \"requestDetails\": { " + '\n' + + " \"modelInfo\": { " + '\n' + + " \"modelType\": \"modelType\", " + '\n' + + " \"modelId\": \"modelId\", " + '\n' + + " \"modelNameVersionId\": \"modelNameVersionId\", " + '\n' + + " \"modelName\": \"CONTRAIL_EXTERNAL\", " + '\n' + + " \"modelVersion\": \"1\" " + '\n' + + " }, " + '\n' + + " \"cloudConfiguration\": { " + '\n' + + " \"lcpCloudRegionId\": \"RDM2WAGPLCP\", " + '\n' + + " \"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\" " + '\n' + + " }, " + '\n' + + " \"requestInfo\": { " + '\n' + + " \"instanceName\": \"myOwn_Network\", " + '\n' + + " \"source\": \"VID\", " + '\n' + + " \"callbackUrl\": \"\", " + '\n' + + " \"suppressRollback\": \"true\" ," + '\n' + + " \"productFamilyId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\" " + '\n' + + " }, " + '\n' + + " \"requestParameters\": { " + '\n' + + " \"backoutOnFailure\": true, " + '\n' + + " \"serviceId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\", " + '\n' + + " \"userParams\": [] " + '\n' + + " } " + '\n' + + " } " + '\n' + + "}"; + + return request; + + } + + // Success Scenario + private Map<String, String> setupVariablesVIPER1() { + Map<String, String> variables = new HashMap<String, String>(); + variables.put("testMessageId", "88f65519-9a38-4c4b-8445-9eb4a5a5af56"); + variables.put("msoRequestId", "testRequestId"); + variables.put("requestId", "testRequestId"); + variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4"); + variables.put("networkId", "49c86598-f766-46f8-84f8-8d1c1b10f9b4"); + variables.put("networkName", "MNS-25180-L-01-dmz_direct_net_1"); + variables.put("lcpCloudRegionId", "RDM2WAGPLCP"); + variables.put("tenantId", "88a6ca3ee0394ade9403f075db23167e"); + variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"); + variables.put("disableRollback", "false"); // macro + variables.put("failIfExists", "false"); + //variables.put("sdncVersion", "1702"); + variables.put("sdncVersion", "1707"); + variables.put("subscriptionServiceType", "MSO-dev-service-type"); + variables.put("globalSubscriberId", "globalId_45678905678"); + variables.put("networkModelInfo", networkModelInfo); + variables.put("serviceModelInfo", serviceModelInfo); + return variables; + + } + + // Missing Name Scenario + private Map<String, String> setupVariablesMissingNetworkId() { + Map<String, String> variables = new HashMap<String, String>(); + variables.put("mso-request-id", "88f65519-9a38-4c4b-8445-9eb4a5a5af56"); + variables.put("bpmnRequest", getCreateNetworkRequestNetworkId()); + variables.put("requestId", "testRequestId"); + variables.put("isBaseVfModule", "true"); + variables.put("recipeTimeout", "0"); + variables.put("requestAction", "UPDATE"); + variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4"); + variables.put("vnfId", ""); + variables.put("vfModuleId", ""); + variables.put("volumeGroupId", ""); + //variables.put("networkId", "49c86598-f766-46f8-84f8-8d1c1b10f9b4"); // missing, ok + variables.put("serviceType", "vMOG"); + variables.put("vfModuleType", ""); + variables.put("networkType", "modelName"); + + return variables; + + } + + public String getCreateNetworkRequestNetworkId() { + + String request = + "{ \"requestDetails\": { " + '\n' + + " \"modelInfo\": { " + '\n' + + " \"modelType\": \"modelType\", " + '\n' + + " \"modelId\": \"modelId\", " + '\n' + + " \"modelNameVersionId\": \"modelNameVersionId\", " + '\n' + + " \"modelName\": \"CONTRAIL_EXTERNAL\", " + '\n' + + " \"modelVersion\": \"1\" " + '\n' + + " }, " + '\n' + + " \"cloudConfiguration\": { " + '\n' + + " \"lcpCloudRegionId\": \"RDM2WAGPLCP\", " + '\n' + + " \"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\" " + '\n' + + " }, " + '\n' + + " \"requestInfo\": { " + '\n' + + " \"source\": \"VID\", " + '\n' + + " \"callbackUrl\": \"\", " + '\n' + + " \"suppressRollback\": \"true\" ," + '\n' + + " \"productFamilyId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\" " + '\n' + + " }, " + '\n' + + " \"requestParameters\": { " + '\n' + + " \"userParams\": [] " + '\n' + + " } " + '\n' + + " } " + '\n' + + "}"; + + return request; + + } + + public String getCreateNetworkRequestSDNCRollback() { + + String request = + "{ \"requestDetails\": { " + '\n' + + " \"modelInfo\": { " + '\n' + + " \"modelType\": \"modelType\", " + '\n' + + " \"modelId\": \"modelId\", " + '\n' + + " \"modelNameVersionId\": \"modelNameVersionId\", " + '\n' + + " \"modelName\": \"CONTRAIL_EXTERNAL\", " + '\n' + + " \"modelVersion\": \"1\" " + '\n' + + " }, " + '\n' + + " \"cloudConfiguration\": { " + '\n' + + " \"lcpCloudRegionId\": \"RDM2WAGPLCP\", " + '\n' + + " \"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\" " + '\n' + + " }, " + '\n' + + " \"requestInfo\": { " + '\n' + + " \"instanceName\": \"MNS-25180-L-01-dmz_direct_net_3\", " + '\n' + + " \"source\": \"VID\", " + '\n' + + " \"callbackUrl\": \"\", " + '\n' + + " \"suppressRollback\": \"true\" ," + '\n' + + " \"productFamilyId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\" " + '\n' + + " }, " + '\n' + + " \"requestParameters\": { " + '\n' + + " \"userParams\": [] " + '\n' + + " } " + '\n' + + " } " + '\n' + + "}"; + + + return request; + } + +} diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateVfModuleInfraV2Test.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateVfModuleInfraV2Test.java new file mode 100644 index 0000000000..3997d0aaa0 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateVfModuleInfraV2Test.java @@ -0,0 +1,119 @@ +/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.bpmn.infrastructure;
+
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFPut;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.common.WorkflowTest.CallbackSet;
+import org.openecomp.mso.bpmn.common.WorkflowTest.TestAsyncResponse;
+import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+/**
+ * Unit test cases for UpdateVfModuleV2.bpmn
+ */
+public class UpdateVfModuleInfraV2Test extends WorkflowTest {
+
+ private final CallbackSet callbacks = new CallbackSet();
+
+ public UpdateVfModuleInfraV2Test() throws IOException {
+ /*callbacks.put("changeassign", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyChangeAssignCallback.xml"));
+ callbacks.put("query", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyQueryCallback.xml"));
+ callbacks.put("activate", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
+ callbacks.put("vnfUpdate", FileUtil.readResourceFile(
+ "__files/VfModularity/VNFAdapterRestUpdateCallback.xml"));*/
+ }
+
+ @Test
+ @Ignore // IGNORED FOR 1710 MERGE TO ONAP
+ @Deployment(resources = {
+ "process/UpdateVfModuleInfraV2.bpmn",
+ "subprocess/DoUpdateVfModule.bpmn",
+ "subprocess/CompleteMsoProcess.bpmn",
+ })
+
+ public void sunnyDay() throws Exception {
+ //logStart();
+
+
+ MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");
+ MockPutVfModuleIdNoResponse("skask", "PCRF", "supercool");
+ MockGetGenericVnfByIdWithPriority("skask", "supercool", 200, "VfModularity/VfModule-supercool.xml", 1);
+ mockSDNCAdapter("/SDNCAdapter", "SvcInstanceId><", 200, "VfModularity/StandardSDNCSynchResponse.xml");
+ mockSDNCAdapter("/SDNCAdapter", "vnf-type>STMTN", 200, "VfModularity/StandardSDNCSynchResponse.xml");
+ mockSDNCAdapter("/SDNCAdapter", "SvcAction>query", 200, "VfModularity/StandardSDNCSynchResponse.xml");
+ mockVNFPut("skask", "/supercool", 202);
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+
+ String businessKey = UUID.randomUUID().toString();
+ Map<String, Object> variables = setupVariablesSunnyDayVID();
+
+ String updateVfModuleRequest =
+ FileUtil.readResourceFile("__files/InfrastructureFlows/UpdateVfModule_VID_request.json");
+ TestAsyncResponse asyncResponse = invokeAsyncProcess("UpdateVfModuleInfraV2",
+ "v1", businessKey, updateVfModuleRequest, variables);
+
+ WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+
+ //String responseBody = response.getResponse();
+ //System.out.println("Workflow (Synch) Response:\n" + responseBody);
+
+ //logEnd();
+ }
+
+ // Active Scenario
+ private Map<String, Object> setupVariablesSunnyDayVID() {
+ Map<String, Object> variables = new HashMap<String, Object>();
+ variables.put("requestId", "testRequestId");
+ variables.put("isBaseVfModule", false);
+ variables.put("isDebugLogEnabled", "true");
+ variables.put("recipeTimeout", "0");
+ variables.put("requestAction", "UPDATE_VF_MODULE");
+ variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");
+ variables.put("vnfId", "skask");
+ variables.put("vnfType", "vSAMP12");
+ variables.put("vfModuleId", "supercool");
+ variables.put("volumeGroupId", "");
+ variables.put("serviceType", "MOG");
+ variables.put("vfModuleType", "");
+ variables.put("moduleUuid", "fe6985cd-ea33-3346-ac12-ab121484a3fe");
+ return variables;
+
+ }
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateVnfInfraTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateVnfInfraTest.java new file mode 100644 index 0000000000..496dab4f83 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateVnfInfraTest.java @@ -0,0 +1,174 @@ +/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.bpmn.infrastructure;
+
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDBUpdateVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetPserverByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfsByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockVNFAdapterRestVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockSetInMaintFlagByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFPut;
+import static org.openecomp.mso.bpmn.mock.StubResponsePolicy.MockPolicySkip;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+/**
+ * Unit test cases for UpdateVnfInfra.bpmn
+ */
+public class UpdateVnfInfraTest extends WorkflowTest {
+
+ private final CallbackSet callbacks = new CallbackSet();
+
+ public UpdateVnfInfraTest() throws IOException {
+ callbacks.put("changeassign", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyChangeAssignCallback.xml"));
+ callbacks.put("activate", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
+ callbacks.put("query", FileUtil.readResourceFile(
+ "__files/VfModularity/SDNCTopologyQueryCallback.xml"));
+ callbacks.put("vnfUpdate", FileUtil.readResourceFile(
+ "__files/VfModularity/VNFAdapterRestUpdateCallback.xml"));
+ }
+
+ /**
+ * Sunny day scenario.
+ *
+ * @throws Exception
+ */
+ @Test
+ @Ignore // IGNORED FOR 1710 MERGE TO ONAP
+ @Deployment(resources = {
+ "process/UpdateVnfInfra.bpmn",
+ "subprocess/DoUpdateVfModule.bpmn",
+ "subprocess/DoUpdateVnfAndModules.bpmn",
+ "subprocess/PrepareUpdateAAIVfModule.bpmn",
+ "subprocess/ConfirmVolumeGroupTenant.bpmn",
+ "subprocess/SDNCAdapterV1.bpmn",
+ "subprocess/VnfAdapterRestV1.bpmn",
+ "subprocess/UpdateAAIGenericVnf.bpmn",
+ "subprocess/UpdateAAIVfModule.bpmn",
+ "subprocess/CompleteMsoProcess.bpmn",
+ "subprocess/FalloutHandler.bpmn",
+ "subprocess/BuildingBlock/DecomposeService.bpmn",
+ "subprocess/BuildingBlock/RainyDayHandler.bpmn",
+ "subprocess/BuildingBlock/ManualHandling.bpmn"
+
+ })
+ public void sunnyDay() throws Exception {
+
+ logStart();
+
+ MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");
+ MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+ //MockGetGenericVnfById_404("testVnfId");
+ MockGetServiceResourcesCatalogData("995256d2-5a33-55df-13ab-12abad84e7ff", "1.0", "VIPR/getCatalogServiceResourcesDataForUpdateVnfInfra.json");
+ MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");
+ MockPutGenericVnf(".*");
+ MockAAIVfModule();
+ MockPatchGenericVnf("skask");
+ MockPatchVfModuleId("skask", ".*");
+ mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
+ mockVNFPut("skask", "/supercool", 202);
+ mockVNFPut("skask", "/lukewarm", 202);
+ MockVNFAdapterRestVfModule();
+ MockDBUpdateVfModule();
+ MockGetPserverByVnfId("skask", "AAI/AAI_pserverByVnfId.json", 200);
+ MockGetGenericVnfsByVnfId("skask", "AAI/AAI_genericVnfsByVnfId.json", 200);
+ MockSetInMaintFlagByVnfId("skask", 200);
+ MockPolicySkip();
+
+ mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
+ mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+
+ String businessKey = UUID.randomUUID().toString();
+ String updaetVnfRequest =
+ FileUtil.readResourceFile("__files/InfrastructureFlows/UpdateVnf_VID_request.json");
+
+ Map<String, Object> variables = setupVariablesSunnyDayVID();
+
+
+ TestAsyncResponse asyncResponse = invokeAsyncProcess("UpdateVnfInfra",
+ "v1", businessKey, updaetVnfRequest, variables);
+
+ WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+
+ String responseBody = response.getResponse();
+ System.out.println("Workflow (Synch) Response:\n" + responseBody);
+
+ injectSDNCCallbacks(callbacks, "changeassign, query");
+ injectVNFRestCallbacks(callbacks, "vnfUpdate");
+ injectSDNCCallbacks(callbacks, "activate");
+ injectSDNCCallbacks(callbacks, "changeassign, query");
+ injectVNFRestCallbacks(callbacks, "vnfUpdate");
+ injectSDNCCallbacks(callbacks, "activate");
+
+ // TODO add appropriate assertions
+
+ waitForProcessEnd(businessKey, 10000);
+ checkVariable(businessKey, "UpdateVfModuleInfraSuccessIndicator", true);
+
+ logEnd();
+ }
+
+ // Active Scenario
+ private Map<String, Object> setupVariablesSunnyDayVID() {
+ Map<String, Object> variables = new HashMap<String, Object>();
+ //try {
+ // variables.put("bpmnRequest", FileUtil.readResourceFile("__files/CreateVfModule_VID_request.json"));
+ //}
+ //catch (Exception e) {
+
+ //}
+ //variables.put("mso-request-id", "testRequestId");
+ variables.put("requestId", "testRequestId");
+ variables.put("isDebugLogEnabled", "true");
+ variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");
+ variables.put("vnfId", "skask");
+ variables.put("vnfType", "vSAMP12");
+ variables.put("serviceType", "MOG");
+
+ return variables;
+
+ }
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/AAI_genericVnfsByVnfId.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/AAI_genericVnfsByVnfId.json new file mode 100644 index 0000000000..c7361f88ef --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/AAI_genericVnfsByVnfId.json @@ -0,0 +1,329 @@ +{ + "vnf-id": "example-vnf-id-val-90603", + "vnf-name": "example-vnf-name-val-56838", + "vnf-name2": "example-vnf-name2-val-56319", + "vnf-type": "example-vnf-type-val-30533", + "service-id": "example-service-id-val-28290", + "regional-resource-zone": "example-regional-resource-zone-val-11059", + "prov-status": "example-prov-status-val-59777", + "operational-status": "example-operational-status-val-22513", + "in-maint": true, + + "equipment-role": "example-equipment-role-val-23396", + "orchestration-status": "example-orchestration-status-val-59435", + "heat-stack-id": "example-heat-stack-id-val-96869", + "mso-catalog-key": "example-mso-catalog-key-val-30721", + "management-option": "example-management-option-val-61927", + "ipv4-oam-address": "example-ipv4-oam-address-val-23494", + "ipv4-loopback0-address": "example-ipv4-loopback0-address-val-87072", + "nm-lan-v6-address": "example-nm-lan-v6-address-val-91063", + "management-v6-address": "example-management-v6-address-val-80466", + "vcpu": 45837298, + "vcpu-units": "example-vcpu-units-val-86249", + "vmemory": 57288956, + "vmemory-units": "example-vmemory-units-val-13291", + "vdisk": 16937143, + "vdisk-units": "example-vdisk-units-val-73197", + + "is-closed-loop-disabled": true, + "summary-status": "example-summary-status-val-86438", + "encrypted-access-flag": true, + + + + + "model-invariant-id": "example-model-invariant-id-val-14704", + "model-version-id": "example-model-version-id-val-47847", + "model-customization-id": "example-model-customization-id-val-52688", + "widget-model-id": "example-widget-model-id-val-20939", + "widget-model-version": "example-widget-model-version-val-72210", + "as-number": "example-as-number-val-68358", + "regional-resource-subzone": "example-regional-resource-subzone-val-34391", + "nf-type": "example-nf-type-val-54866", + "nf-function": "example-nf-function-val-24790", + "nf-role": "example-nf-role-val-4780", + "nf-naming-code": "example-nf-naming-code-val-25118", + "selflink": "example-selflink-val-68404", + + + + + "l-interfaces": { + "l-interface": [ + { + "interface-name": "example-interface-name-val-50593", + "interface-role": "example-interface-role-val-23375", + "v6-wan-link-ip": "example-v6-wan-link-ip-val-5921", + "selflink": "example-selflink-val-75663", + "interface-id": "example-interface-id-val-37465", + "macaddr": "example-macaddr-val-62657", + "network-name": "example-network-name-val-7252", + "management-option": "example-management-option-val-32963", + "interface-description": "example-interface-description-val-89453", + "is-port-mirrored": true, + "vlans": { + "vlan": [ + { + "vlan-interface": "example-vlan-interface-val-16684", + "vlan-id-inner": 8602916, + "vlan-id-outer": 97348542, + "speed-value": "example-speed-value-val-90330", + "speed-units": "example-speed-units-val-15849", + "vlan-description": "example-vlan-description-val-46942", + "backdoor-connection": "example-backdoor-connection-val-78445", + + "orchestration-status": "example-orchestration-status-val-44994", + + + + "l3-interface-ipv4-address-list": [ + { + "l3-interface-ipv4-address": "example-l3-interface-ipv4-address-val-90277", + "l3-interface-ipv4-prefix-length": 3364150, + "vlan-id-inner": 44021171, + "vlan-id-outer": 55708677, + "is-floating": true, + "neutron-network-id": "example-neutron-network-id-val-43267", + "neutron-subnet-id": "example-neutron-subnet-id-val-62870" + } + ], + "l3-interface-ipv6-address-list": [ + { + "l3-interface-ipv6-address": "example-l3-interface-ipv6-address-val-45323", + "l3-interface-ipv6-prefix-length": 56688923, + "vlan-id-inner": 5703071, + "vlan-id-outer": 86682265, + "is-floating": true, + "neutron-network-id": "example-neutron-network-id-val-28366", + "neutron-subnet-id": "example-neutron-subnet-id-val-53034" + } + ] + } + ] + }, + "sriov-vfs": { + "sriov-vf": [ + { + "pci-id": "example-pci-id-val-4720", + "vf-vlan-filter": "example-vf-vlan-filter-val-42594", + "vf-mac-filter": "example-vf-mac-filter-val-13375", + "vf-vlan-strip": true, + "vf-vlan-anti-spoof-check": true, + "vf-mac-anti-spoof-check": true, + "vf-mirrors": "example-vf-mirrors-val-6057", + "vf-broadcast-allow": true, + "vf-unknown-multicast-allow": true, + "vf-unknown-unicast-allow": true, + "vf-insert-stag": true, + "vf-link-status": "example-vf-link-status-val-81448", + "neutron-network-id": "example-neutron-network-id-val-9504" + } + ] + }, + "l-interfaces": { + "l-interface": [ + { + "interface-name": "example-interface-name-val-16738", + "interface-role": "example-interface-role-val-13943", + "v6-wan-link-ip": "example-v6-wan-link-ip-val-63173", + "selflink": "example-selflink-val-43085", + "interface-id": "example-interface-id-val-51379", + "macaddr": "example-macaddr-val-16195", + "network-name": "example-network-name-val-45683", + "management-option": "example-management-option-val-78983", + "interface-description": "example-interface-description-val-34414", + "is-port-mirrored": true + } + ] + }, + "l3-interface-ipv4-address-list": [ + { + "l3-interface-ipv4-address": "example-l3-interface-ipv4-address-val-99078", + "l3-interface-ipv4-prefix-length": 55755841, + "vlan-id-inner": 81525473, + "vlan-id-outer": 90908072, + "is-floating": true, + "neutron-network-id": "example-neutron-network-id-val-47919", + "neutron-subnet-id": "example-neutron-subnet-id-val-84236" + } + ], + "l3-interface-ipv6-address-list": [ + { + "l3-interface-ipv6-address": "example-l3-interface-ipv6-address-val-21939", + "l3-interface-ipv6-prefix-length": 50057584, + "vlan-id-inner": 75774660, + "vlan-id-outer": 4421090, + "is-floating": true, + "neutron-network-id": "example-neutron-network-id-val-46377", + "neutron-subnet-id": "example-neutron-subnet-id-val-16585" + } + ] + } + ] + }, + "lag-interfaces": { + "lag-interface": [ + { + "interface-name": "example-interface-name-val-39234", + "interface-description": "example-interface-description-val-1037", + "speed-value": "example-speed-value-val-1929", + "speed-units": "example-speed-units-val-74937", + "interface-id": "example-interface-id-val-91265", + "interface-role": "example-interface-role-val-19613", + + + "l-interfaces": { + "l-interface": [ + { + "interface-name": "example-interface-name-val-10722", + "interface-role": "example-interface-role-val-95194", + "v6-wan-link-ip": "example-v6-wan-link-ip-val-24328", + "selflink": "example-selflink-val-24987", + "interface-id": "example-interface-id-val-75726", + "macaddr": "example-macaddr-val-36940", + "network-name": "example-network-name-val-65359", + "management-option": "example-management-option-val-49521", + "interface-description": "example-interface-description-val-70528", + "is-port-mirrored": true, + "vlans": { + "vlan": [ + { + "vlan-interface": "example-vlan-interface-val-70827", + "vlan-id-inner": 55659612, + "vlan-id-outer": 90335612, + "speed-value": "example-speed-value-val-54761", + "speed-units": "example-speed-units-val-91398", + "vlan-description": "example-vlan-description-val-17018", + "backdoor-connection": "example-backdoor-connection-val-4021", + + "orchestration-status": "example-orchestration-status-val-18315", + + + "l3-interface-ipv4-address-list": [ + { + "l3-interface-ipv4-address": "example-l3-interface-ipv4-address-val-59336", + "l3-interface-ipv4-prefix-length": 57636053, + "vlan-id-inner": 34068397, + "vlan-id-outer": 48570286, + "is-floating": true, + "neutron-network-id": "example-neutron-network-id-val-69862", + "neutron-subnet-id": "example-neutron-subnet-id-val-75795" + } + ], + "l3-interface-ipv6-address-list": [ + { + "l3-interface-ipv6-address": "example-l3-interface-ipv6-address-val-15038", + "l3-interface-ipv6-prefix-length": 42694503, + "vlan-id-inner": 15929806, + "vlan-id-outer": 87413856, + "is-floating": true, + "neutron-network-id": "example-neutron-network-id-val-52519", + "neutron-subnet-id": "example-neutron-subnet-id-val-24471" + } + ] + } + ] + }, + "sriov-vfs": { + "sriov-vf": [ + { + "pci-id": "example-pci-id-val-44669", + "vf-vlan-filter": "example-vf-vlan-filter-val-53436", + "vf-mac-filter": "example-vf-mac-filter-val-71902", + "vf-vlan-strip": true, + "vf-vlan-anti-spoof-check": true, + "vf-mac-anti-spoof-check": true, + "vf-mirrors": "example-vf-mirrors-val-54963", + "vf-broadcast-allow": true, + "vf-unknown-multicast-allow": true, + "vf-unknown-unicast-allow": true, + "vf-insert-stag": true, + "vf-link-status": "example-vf-link-status-val-1546", + "neutron-network-id": "example-neutron-network-id-val-92159" + } + ] + }, + "l-interfaces": { + "l-interface": [ + { + "interface-name": "example-interface-name-val-9327", + "interface-role": "example-interface-role-val-21859", + "v6-wan-link-ip": "example-v6-wan-link-ip-val-21445", + "selflink": "example-selflink-val-6085", + "interface-id": "example-interface-id-val-39854", + "macaddr": "example-macaddr-val-14433", + "network-name": "example-network-name-val-3722", + "management-option": "example-management-option-val-64739", + "interface-description": "example-interface-description-val-5814", + "is-port-mirrored": true + + + + } + ] + }, + "l3-interface-ipv4-address-list": [ + { + "l3-interface-ipv4-address": "example-l3-interface-ipv4-address-val-64531", + "l3-interface-ipv4-prefix-length": 66545882, + "vlan-id-inner": 12194134, + "vlan-id-outer": 29589286, + "is-floating": true, + "neutron-network-id": "example-neutron-network-id-val-91108", + "neutron-subnet-id": "example-neutron-subnet-id-val-56984" + } + ], + "l3-interface-ipv6-address-list": [ + { + "l3-interface-ipv6-address": "example-l3-interface-ipv6-address-val-37408", + "l3-interface-ipv6-prefix-length": 5116459, + "vlan-id-inner": 39229896, + "vlan-id-outer": 15091934, + "is-floating": true, + "neutron-network-id": "example-neutron-network-id-val-87700", + "neutron-subnet-id": "example-neutron-subnet-id-val-37352" + } + ] + } + ] + } + } + ] + }, + "vf-modules": { + "vf-module": [ + { + "vf-module-id": "example-vf-module-id-val-56249", + "vf-module-name": "example-vf-module-name-val-18987", + "heat-stack-id": "example-heat-stack-id-val-80110", + "orchestration-status": "example-orchestration-status-val-8226", + "is-base-vf-module": true, + "model-invariant-id": "example-model-invariant-id-val-5071", + "model-version-id": "example-model-version-id-val-80793", + "model-customization-id": "example-model-customization-id-val-83277", + "widget-model-id": "example-widget-model-id-val-99814", + "widget-model-version": "example-widget-model-version-val-22799", + "contrail-service-instance-fqdn": "example-contrail-service-instance-fqdn-val-52133", + "module-index": 1933, + "selflink": "example-selflink-val-69992" + } + ] + }, + "licenses": { + "license": [ + { + "group-uuid": "example-group-uuid-val-73012", + "resource-uuid": "example-resource-uuid-val-80045" + } + ] + }, + "entitlements": { + "entitlement": [ + { + "group-uuid": "example-group-uuid-val-14874", + "resource-uuid": "example-resource-uuid-val-49146" + } + ] + } + +}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/AAI_pserverByVnfId.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/AAI_pserverByVnfId.json new file mode 100644 index 0000000000..1059d8c9a9 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/AAI_pserverByVnfId.json @@ -0,0 +1,72 @@ + { + + "result": [{ + + "hostname": "8862-PserverHOSTNAME-LB1113", + "equipType": "JUNIPER UCPE", + "equipVendor": "JUNIPER", + "equipModel": "QFX51010-PNF", + "ipv4OamAddress": "190.8.5.199", + "serialNumber": "VX986001PNF", + "pserverId": "5715CE4F-8600-58E103FE60C79", + "internetTopology": "WAN", + "inMaint": false, + "resourceVersion": "1500495668780", + "pserverName2": "test81600", + "relationshipList": { + "relationship": [ + { + "relatedTo": "vserver", + "relatedLink": "/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/tenants/tenant/8862-tenantl-LB1113/vservers/vserver/8862-Lvserver-LB1113", + "relationshipData": [ + { + "relationshipKey": "cloud-region.cloud-owner", + "relationshipValue": "att-aic" + }, + { + "relationshipKey": "cloud-region.cloud-region-id", + "relationshipValue": "AAIAIC25" + }, + { + "relationshipKey": "tenant.tenant-id", + "relationshipValue": "8862-tenantl-LB1113" + }, + { + "relationshipKey": "vserver.vserver-id", + "relationshipValue": "8862-Lvserver-LB1113" + } + ], + "relatedToProperty": [ + { + "propertyKey": "vserver.vserver-name", + "propertyValue": "hjZAYKyl5LO" + } + ] + } + ] + }, + "pinterfaces": { + "pinterface": [ + { + "interfaceName": "ge-0/5/8", + "speedValue": "1", + "speedUnits": "GBPS", + "resourceVersion": "1500495668784", + "inMaint": false + }, + { + "interfaceName": "ge-1/5/8", + "speedValue": "1", + "speedUnits": "GBPS", + "resourceVersion": "1500495668788", + "inMaint": false + } + ] + } + } + + + + ] +} +
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2mock/sdncCreateNetworkTopologyRsrcAssignResponse.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2mock/sdncCreateNetworkTopologyRsrcAssignResponse.xml new file mode 100644 index 0000000000..e6af14123e --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2mock/sdncCreateNetworkTopologyRsrcAssignResponse.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:v1="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> + <soapenv:Header /> + <soapenv:Body> + <v1:SDNCAdapterCallback> + <SDNCAdapterCallbackRequest xmlns="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> + <CallbackHeader> + <RequestId>79ec9006-3695-4fcc-93a8-be6f9e248beb</RequestId> + <ResponseCode>200</ResponseCode> + <ResponseMessage>OK</ResponseMessage> + </CallbackHeader> + <RequestData xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><output xmlns="com:att:sdnctl:generic-resource"><response-message></response-message><svc-request-id>79ec9006-3695-4fcc-93a8-be6f9e248beb</svc-request-id><service-response-information><instance-id>f805ec2b-b4d8-473e-8325-67f110139e5d</instance-id></service-response-information><response-code>200</response-code><network-response-information><instance-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</instance-id><object-path>restconf/config/GENERIC-RESOURCE-API:services/service/f805ec2b-b4d8-473e-8325-67f110139e5d/service-data/networks/network/f7e4db56-aab5-4065-8e65-cec1cd1de24f</object-path></network-response-information><ack-final-indicator>Y</ack-final-indicator></output></RequestData> + </SDNCAdapterCallbackRequest> + </v1:SDNCAdapterCallback> + </soapenv:Body> +</soapenv:Envelope> diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2mock/sdncCreateNetworkTopologySimResponse.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2mock/sdncCreateNetworkTopologySimResponse.xml new file mode 100644 index 0000000000..40bb93bda0 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2mock/sdncCreateNetworkTopologySimResponse.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:v1="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> + <soapenv:Header /> + <soapenv:Body> + <v1:SDNCAdapterCallback> + <SDNCAdapterCallbackRequest xmlns="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> + <CallbackHeader> + <RequestId>testRequestId</RequestId> + <ResponseCode>200</ResponseCode> + <ResponseMessage>OK</ResponseMessage> + </CallbackHeader> + <RequestData xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="xs:string"><?xml version="1.0" encoding="UTF-8"?><output xmlns="com:att:sdnctl:vnf"><svc-request-id>19174929-3809-49ca-89eb-17f84a035389</svc-request-id><response-code>200</response-code><ack-final-indicator>Y</ack-final-indicator><network-information><network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id></network-information><service-information><service-type>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-type><service-instance-id>HSL_direct_net_2</service-instance-id><subscriber-name>notsurewecare</subscriber-name></service-information></output></RequestData> + </SDNCAdapterCallbackRequest> + </v1:SDNCAdapterCallback> + </soapenv:Body> +</soapenv:Envelope> diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json index 91048eca9b..5a7ef5e2c7 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json @@ -2,11 +2,11 @@ "requestDetails": { "modelInfo": { "modelType": "volumeGroup", - "modelId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff", + "modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12::base::module-0", "modelVersion": "1", - "modelCustomizationId": "ee6478e5-ea33-3346-ac12-ab121484a3fe" + "modelCustomizationUuid": "ee6478e5-ea33-3346-ac12-ab121484a3fe" }, "cloudConfiguration": { "lcpCloudRegionId": "mdt1", @@ -23,8 +23,8 @@ "instanceId": "{service-instance-id}", "modelInfo": { "modelType": "service", - "modelId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff", + "modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "Test", "modelVersion": "2.0" } @@ -34,11 +34,11 @@ "instanceId": "{vnf-instance-id}", "modelInfo": { "modelType": "vnf", - "modelId": "ff5256d1-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid": "ff5256d1-5a33-55df-13ab-12abad84e7ff", + "modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12", "modelVersion": "1", - "modelCustomizationName": "vSAMP12" + "modelInstanceName": "vSAMP12" } } } diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request_noreqparm.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request_noreqparm.json index 72e41839fb..de99a6da56 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request_noreqparm.json +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request_noreqparm.json @@ -3,7 +3,7 @@ "modelInfo": { "modelType": "volumeGroup", "modelId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12::base::module-0", "modelVersion": "1" }, @@ -23,7 +23,7 @@ "modelInfo": { "modelType": "service", "modelId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "{parent service model name}", "modelVersion": "1" } @@ -34,7 +34,7 @@ "modelInfo": { "modelType": "vnf", "modelId": "ff5256d1-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "Test/vSAMP12", "modelVersion": "1" } diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_queryVolumeName_AAIResponse_Success.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_queryVolumeName_AAIResponse_Success.xml index cb20a41ca0..8d9efb3b39 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_queryVolumeName_AAIResponse_Success.xml +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_queryVolumeName_AAIResponse_Success.xml @@ -29,6 +29,7 @@ <heat-stack-id/>
<vnf-type>simple_cinder_master</vnf-type>
<orchestration-status>Pending</orchestration-status>
+ <vf-module-model-customization-id>ee6478e5-ea33-3346-ac12-ab121484a3fe</vf-module-model-customization-id>
<resource-version>1460134360</resource-version>
<relationship-list>
<relationship>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/queryVolumeId_AAIResponse_HasVfModRelationship.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/queryVolumeId_AAIResponse_HasVfModRelationship.xml new file mode 100644 index 0000000000..8d9c5c0a43 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/queryVolumeId_AAIResponse_HasVfModRelationship.xml @@ -0,0 +1,62 @@ +<volume-group xmlns="http://com.att.aai.inventory/v8">
+ <volume-group-id>78987</volume-group-id>
+ <volume-group-name>MSOTESTVOL102a-vSAMP12_base_vol_module-0</volume-group-name>
+ <heat-stack-id/>
+ <vnf-type>Test/vSAMP12</vnf-type>
+ <orchestration-status>Pending</orchestration-status>
+ <resource-version>0000020</resource-version>
+ <relationship-list>
+ <relationship>
+ <related-to>generic-vnf</related-to>
+ <related-link>https://aai-ext1.test.att.com:8443/aai/v8/network/generic-vnfs/generic-vnf/9e48f6ea-f786-46de-800a-d480e5ccc846/</related-link>
+ <relationship-data>
+ <relationship-key>generic-vnf.vnf-id</relationship-key>
+ <relationship-value>9e48f6ea-f786-46de-800a-d480e5ccc846</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>generic-vnf.vnf-name</property-key>
+ <property-value>MSOSTSAMP12-10601</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>tenant</related-to>
+ <related-link>https://aai-ext1.test.att.com:8443/aai/v7/cloud-infrastructure/cloud-regions/cloud-region/att-aic/mdt1/tenants/tenant/fba1bd1e195a404cacb9ce17a9b2b421/</related-link>
+ <relationship-data>
+ <relationship-key>tenant.tenant-id</relationship-key>
+ <relationship-value>fba1bd1e195a404cacb9ce17a9b2b421</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-owner</relationship-key>
+ <relationship-value>att-aic</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-region-id</relationship-key>
+ <relationship-value>mdt1</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>tenant.tenant-name</property-key>
+ <property-value>ECOMP_MDT1</property-value>
+ </related-to-property>
+ </relationship>
+ <relationship>
+ <related-to>vf-module</related-to>
+ <related-link>https://aai-ext1.test.att.com:8443/aai/v7/cloud-infrastructure/cloud-regions/cloud-region/att-aic/mdt1/tenants/tenant/fba1bd1e195a404cacb9ce17a9b2b421/</related-link>
+ <relationship-data>
+ <relationship-key>vf-module.vf-module-id</relationship-key>
+ <relationship-value>fba1bd1e195a404cacb9ce17a9b2b421</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-owner</relationship-key>
+ <relationship-value>att-aic</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>cloud-region.cloud-region-id</relationship-key>
+ <relationship-value>mdt1</relationship-value>
+ </relationship-data>
+ <related-to-property>
+ <property-key>vf-module.vf-module-name</property-key>
+ <property-value>ECOMP_MDT1</property-value>
+ </related-to-property>
+ </relationship>
+ </relationship-list>
+</volume-group>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request.json index 1b56dbddbc..d1e5ee1bc6 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request.json +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request.json @@ -2,8 +2,8 @@ "requestDetails": {
"modelInfo": {
"modelType": "vfModule",
-"modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
-"modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
"modelName": "STMTN5MMSC21-MMSC::model-1-0",
"modelVersion": "1",
"modelCustomizationUuid": "ee6478e5-ea33-3346-ac12-ab121484a3fe"
@@ -28,8 +28,8 @@ "instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol",
"modelInfo": {
"modelType": "volumeGroup",
-"modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
-"modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
"modelName": "vSAMP12..base..module-0",
"modelVersion": "1"
}
@@ -40,8 +40,8 @@ "instanceId": "123456",
"modelInfo": {
"modelType": "service",
-"modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
-"modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+"modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+"modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
"modelName": "SERVICE_MODEL_NAME",
"modelVersion": "1.0"
}
@@ -53,11 +53,11 @@ "instanceName": "skask-test",
"modelInfo": {
"modelType": "vnf",
-"modelInvariantId": "skask",
-"modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+"modelInvariantUuid": "skask",
+"modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
"modelName": "vSAMP12",
"modelVersion": "1.0",
-"modelCustomizationName": "vSAMP12 1"
+"modelInstanceName": "vSAMP12 1"
}
}
}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request_noPreloads.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request_noPreloads.json index f8cac48f1f..55dc31309b 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request_noPreloads.json +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request_noPreloads.json @@ -2,8 +2,8 @@ "requestDetails": {
"modelInfo": {
"modelType": "vfModule",
-"modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
-"modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
"modelName": "STMTN5MMSC21-MMSC::model-1-0",
"modelVersion": "1",
"modelCustomizationUuid": "ee6478e5-ea33-3346-ac12-ab121484a3fe"
@@ -28,8 +28,8 @@ "instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol",
"modelInfo": {
"modelType": "volumeGroup",
-"modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
-"modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
"modelName": "vSAMP12..base..module-0",
"modelVersion": "1"
}
@@ -40,8 +40,8 @@ "instanceId": "123456",
"modelInfo": {
"modelType": "service",
-"modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
-"modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+"modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+"modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
"modelName": "SERVICE_MODEL_NAME",
"modelVersion": "1.0"
}
@@ -53,11 +53,11 @@ "instanceName": "skask-test",
"modelInfo": {
"modelType": "vnf",
-"modelInvariantId": "skask",
-"modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+"modelInvariantUuid": "skask",
+"modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
"modelName": "vSAMP12",
"modelVersion": "1.0",
-"modelCustomizationName": "vSAMP12 1"
+"modelInstanceName": "vSAMP12 1"
}
}
}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DBUpdateResponse.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DBUpdateResponse.xml new file mode 100644 index 0000000000..40e2344f36 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DBUpdateResponse.xml @@ -0,0 +1,4 @@ + + +<ns2:updateRequestResponse xmlns:ns2="http://org.openecomp/requestsdb" + xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"/>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DeleteNetworkV2mock/sdncDeleteNetworkTopologySimResponse.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DeleteNetworkV2mock/sdncDeleteNetworkTopologySimResponse.xml new file mode 100644 index 0000000000..8ec4f520c1 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DeleteNetworkV2mock/sdncDeleteNetworkTopologySimResponse.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:v1="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+ <soapenv:Header />
+ <soapenv:Body>
+ <v1:SDNCAdapterCallback>
+ <SDNCAdapterCallbackRequest xmlns="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+ <CallbackHeader>
+ <RequestId>19174929-3809-49ca-89eb-17f84a035389</RequestId>
+ <ResponseCode>200</ResponseCode>
+ <ResponseMessage>OK</ResponseMessage>
+ </CallbackHeader>
+ <RequestData xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:type="xs:string"><?xml version="1.0" encoding="UTF-8"?><output xmlns="com:att:sdnctl:vnf"><svc-request-id>19174929-3809-49ca-89eb-17f84a035389</svc-request-id><response-code>200</response-code><ack-final-indicator>Y</ack-final-indicator><network-information><network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id></network-information><service-information><service-type>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-type><service-instance-id>HSL_direct_net_2</service-instance-id><subscriber-name>notsurewecare</subscriber-name></service-information></output></RequestData>
+ </SDNCAdapterCallbackRequest>
+ </v1:SDNCAdapterCallback>
+ </soapenv:Body>
+</soapenv:Envelope>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DeleteNetworkV2mock/sdncDeleteNetworkTopologySimResponse_noExtraTag.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DeleteNetworkV2mock/sdncDeleteNetworkTopologySimResponse_noExtraTag.xml new file mode 100644 index 0000000000..f180e61366 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DeleteNetworkV2mock/sdncDeleteNetworkTopologySimResponse_noExtraTag.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:v1="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+ <soapenv:Header />
+ <soapenv:Body>
+ <SDNCAdapterCallbackRequest xmlns="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+ <CallbackHeader>
+ <RequestId>19174929-3809-49ca-89eb-17f84a035389</RequestId>
+ <ResponseCode>200</ResponseCode>
+ <ResponseMessage>OK</ResponseMessage>
+ </CallbackHeader>
+ <RequestData xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:type="xs:string"><?xml version="1.0" encoding="UTF-8"?><output xmlns="com:att:sdnctl:vnf"><svc-request-id>19174929-3809-49ca-89eb-17f84a035389</svc-request-id><response-code>200</response-code><ack-final-indicator>Y</ack-final-indicator><network-information><network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id></network-information><service-information><service-type>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-type><service-instance-id>HSL_direct_net_2</service-instance-id><subscriber-name>notsurewecare</subscriber-name></service-information></output></RequestData>
+ </SDNCAdapterCallbackRequest>
+ </soapenv:Body>
+</soapenv:Envelope>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DeleteVfModuleCallbackResponse.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DeleteVfModuleCallbackResponse.xml new file mode 100644 index 0000000000..74a3beb221 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DeleteVfModuleCallbackResponse.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<deleteVfModuleResponse> + <messageId>86651f79-057e-4245-8f5f-174db3cef553-1502888133261</messageId> + <vfModuleDeleted>true</vfModuleDeleted> + <vfModuleId>20928949-5230-495d-86a6-f3690b9b5d60</vfModuleId> + <vfModuleOutputs> + <entry> + <key>shared_private_network_id</key> + <value>bcd04543-b3d7-4c64-a910-1735b875ebb2</value> + </entry> + <entry> + <key>server1_port</key> + <value>d1605e82-50ba-4544-9f8d-a8a37b678046</value> + </entry> + <entry> + <key>vnf_id</key> + <value>7da56895-6be1-4bec-856b-525e0e573199</value> + </entry> + </vfModuleOutputs> + <vnfId>7da56895-6be1-4bec-856b-525e0e573199</vnfId> +</deleteVfModuleResponse> diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DeleteVfModuleVolumeInfraV1/deleteVfModuleVolume_VID_request_st.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DeleteVfModuleVolumeInfraV1/deleteVfModuleVolume_VID_request_st.json index 35ba121086..c6cc1ca428 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DeleteVfModuleVolumeInfraV1/deleteVfModuleVolume_VID_request_st.json +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DeleteVfModuleVolumeInfraV1/deleteVfModuleVolume_VID_request_st.json @@ -2,7 +2,7 @@ "requestDetails": { "modelInfo": { "modelType": "volumeGroup", - "modelInvariantId": "0b01b8c2-8416-11e6-ae22-56b6b6499611", + "modelInvariantUuid": "0b01b8c2-8416-11e6-ae22-56b6b6499611", "modelName": "vSAMP12::base::module-0", "modelVersion": "1.0" }, diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DoCreateVfModuleVolumeV1/createVfModuleVolume_VID_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DoCreateVfModuleVolumeV1/createVfModuleVolume_VID_request.json index 5ff965f7e2..5a05061098 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DoCreateVfModuleVolumeV1/createVfModuleVolume_VID_request.json +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DoCreateVfModuleVolumeV1/createVfModuleVolume_VID_request.json @@ -3,7 +3,7 @@ "modelInfo": { "modelType": "volumeGroup", "modelId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12::base::module-0", "modelVersion": "1" }, @@ -23,7 +23,7 @@ "modelInfo": { "modelType": "service", "modelId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "{parent service model name}", "modelVersion": "1" } @@ -34,7 +34,7 @@ "modelInfo": { "modelType": "vnf", "modelId": "ff5256d1-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", + "modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "Test/vSAMP12", "modelVersion": "1" } diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DoCreateVfModule_getVnfResponse.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DoCreateVfModule_getVnfResponse.xml new file mode 100644 index 0000000000..021a8a73d1 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DoCreateVfModule_getVnfResponse.xml @@ -0,0 +1,26 @@ +<generic-vnf xmlns="http://org.openecomp.aai.inventory/v7">
+ <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>
+ <vnf-name>STMTN5MMSC21</vnf-name>
+ <vnf-type>mmsc-capacity</vnf-type>
+ <service-id>SDN-MOBILITY</service-id>
+ <equipment-role>vMMSC</equipment-role>
+ <orchestration-status>pending-create</orchestration-status>
+ <in-maint>false</in-maint>
+ <is-closed-loop-disabled>false</is-closed-loop-disabled>
+ <resource-version>1508691</resource-version>
+ <vf-modules>
+ <vf-module>
+ <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>
+ <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>
+ <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</persona-model-id>
+ <persona-model-version>1.0</persona-model-version>
+ <is-base-vf-module>true</is-base-vf-module>
+ <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>
+ <orchestration-status>pending-create</orchestration-status>
+ <resource-version>1508692</resource-version>
+ </vf-module>
+ </vf-modules>
+ <relationship-list/>
+ <l-interfaces/>
+ <lag-interfaces/>
+ </generic-vnf>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getSINoRelations.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getSINoRelations.xml new file mode 100644 index 0000000000..adb7aab35f --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getSINoRelations.xml @@ -0,0 +1,6 @@ +<service-instance>
+ <service-instance-id>MIS/1604/0026/SW_INTERNET</service-instance-id>
+ <resource-version>123456789</resource-version>
+ <relationship-list/>
+ <metadata/>
+</service-instance>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getSIUrlByIdVipr.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getSIUrlByIdVipr.xml new file mode 100644 index 0000000000..80b035979a --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getSIUrlByIdVipr.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<search-results xmlns="http://org.openecomp.aai.inventory/v8">
+ <result-data>
+ <resource-type>service-instance</resource-type>
+ <resource-link>https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/aa8428ac-7dd2-441f-aa3e-e175802574fb</resource-link>
+ </result-data>
+</search-results>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/CreateVnfInfraRequest.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/CreateVnfInfraRequest.json index 2b9c2879a7..3595c25584 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/CreateVnfInfraRequest.json +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/CreateVnfInfraRequest.json @@ -2,11 +2,12 @@ "requestDetails": { "modelInfo": { "modelType": "vnf", - "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid": "ff5256d1-5a33-55df-13ab-12abad84e7ff", + "modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12", "modelVersion": "1.0", - "modelCustomizationName": "vSAMP12 1" + "modelInstanceName": "vSAMP12 1", + "modelCustomizationUuid": "customizationId123" }, "cloudConfiguration": { "lcpCloudRegionId": "mdt1", @@ -24,8 +25,8 @@ "instanceId": "{serviceInstanceId}", "modelInfo": { "modelType": "service", - "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff", + "modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "{parent service model name}", "modelVersion": "1.0" } diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/DeleteVnfInfraRequestCascadeDelete.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/DeleteVnfInfraRequestCascadeDelete.json index f90b9678f0..e8d9fc29b1 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/DeleteVnfInfraRequestCascadeDelete.json +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/DeleteVnfInfraRequestCascadeDelete.json @@ -2,11 +2,11 @@ "requestDetails": { "modelInfo": { "modelType": "vnf", - "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid": "ff5256d1-5a33-55df-13ab-12abad84e7ff", + "modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12", "modelVersion": "1.0", - "modelCustomizationName": "vSAMP12 1" + "modelInstanceName": "vSAMP12 1" }, "cloudConfiguration": { "lcpCloudRegionId": "mdt1", @@ -24,8 +24,8 @@ "instanceId": "{serviceInstanceId}", "modelInfo": { "modelType": "service", - "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff", + "modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "{parent service model name}", "modelVersion": "1.0" } diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/ReplaceVnf_VID_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/ReplaceVnf_VID_request.json new file mode 100644 index 0000000000..7c9717244b --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/ReplaceVnf_VID_request.json @@ -0,0 +1,49 @@ +{ +"requestDetails": { +"modelInfo": { +"modelType": "vnf", +"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff", +"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", +"modelName": "vSAMP12", +"modelVersion": "1.0", +"modelCustomizationUuid": "MODEL-ID-1234" +}, +"cloudConfiguration": { +"lcpCloudRegionId": "mdt1", +"tenantId": "88a6ca3ee0394ade9403f075db23167e" +}, +"requestInfo": { +"instanceName": "STMTN", +"instanceId": "a27ce5a9-29c4-4c22-a017-6615ac73c721", +"source": "VID", +"suppressRollback": true +}, +"relatedInstanceList": [ +{ +"relatedInstance": { +"instanceId": "MIS%2F1604%2F0026%2FSW_INTERNET", +"modelInfo": { +"modelType": "service", +"modelInvariantUuid": "995256d2-5a33-55df-13ab-12abad84e7ff", +"modelUuid": "ab6478e5-ea33-3346-ac12-ab121484a3fe", +"modelName": "ServicevSAMP12", +"modelVersion": "1.0" +} +} +} +], +"requestParameters": { +"usePreload": false, +"userParams" : [ + { + "name" : "someUserParam", + "value" : "someValue" + }, + { + "name": "sgi_protected_subnet_id", + "value": "thisissomefakevalue" + } +] +} +} +} diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVfModule_VID_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVfModule_VID_request.json index e3556e7b4a..c40a99ef34 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVfModule_VID_request.json +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVfModule_VID_request.json @@ -2,11 +2,11 @@ "requestDetails": { "modelInfo": { "modelType": "vfModule", -"modelInvariantId": "introvert", -"modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "introvert", +"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "STMTN5MMSC21-MMSC::model-1-0", "modelVersion": "1", -"modelCustomizationId": "MODEL12345" +"modelCustomizationUuid": "MODEL12345" }, "cloudConfiguration": { "lcpCloudRegionId": "MDTWNJ21", @@ -24,8 +24,8 @@ "instanceId": "123456", "modelInfo": { "modelType": "service", -"modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", -"modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff", +"modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "SERVICE_MODEL_NAME", "modelVersion": "1.0" } @@ -36,16 +36,26 @@ "instanceId": "skask", "modelInfo": { "modelType": "vnf", -"modelInvariantId": "skask", -"modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", +"modelInvariantUuid": "skask", +"modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12", "modelVersion": "1.0", -"modelCustomizationName": "vSAMP12 1" +"modelInstanceName": "vSAMP12 1" } } } ], "requestParameters": { -"userParams": {} +"usePreload": false, +"userParams" : [ + { + "name" : "someUserParam", + "value" : "someValue" + }, + { + "name": "sgi_protected_subnet_id", + "value": "thisissomefakevalue" + } +] } }
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVnf_VID_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVnf_VID_request.json new file mode 100644 index 0000000000..cdeaf92bb9 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVnf_VID_request.json @@ -0,0 +1,49 @@ +{ +"requestDetails": { +"modelInfo": { +"modelType": "vnf", +"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff", +"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", +"modelName": "vSAMP12", +"modelVersion": "1.0", +"modelCustomizationUuid": "MODEL-ID-1234" +}, +"cloudConfiguration": { +"lcpCloudRegionId": "mdt1", +"tenantId": "88a6ca3ee0394ade9403f075db23167e" +}, +"requestInfo": { +"instanceName": "STMTN", +"instanceId": "skask", +"source": "VID", +"suppressRollback": true +}, +"relatedInstanceList": [ +{ +"relatedInstance": { +"instanceId": "MIS%2F1604%2F0026%2FSW_INTERNET", +"modelInfo": { +"modelType": "service", +"modelInvariantUuid": "995256d2-5a33-55df-13ab-12abad84e7ff", +"modelUuid": "ab6478e5-ea33-3346-ac12-ab121484a3fe", +"modelName": "ServicevSAMP12", +"modelVersion": "1.0" +} +} +} +], +"requestParameters": { +"usePreload": false, +"userParams" : [ + { + "name" : "someUserParam", + "value" : "someValue" + }, + { + "name": "sgi_protected_subnet_id", + "value": "thisissomefakevalue" + } +] +} +} +} diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/Policy/policyAbortResponse.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/Policy/policyAbortResponse.json new file mode 100644 index 0000000000..c315b1ed1d --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/Policy/policyAbortResponse.json @@ -0,0 +1 @@ +{"decision":"PERMIT","details":"Abort"}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/Policy/policySkipResponse.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/Policy/policySkipResponse.json new file mode 100644 index 0000000000..7cbdebb6b3 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/Policy/policySkipResponse.json @@ -0,0 +1 @@ +{"decision":"PERMIT","details":"Skip"}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/queryVolumeId_AAIResponse_Success.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/queryVolumeId_AAIResponse_Success.xml index 244a51e160..c48c6a661f 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/queryVolumeId_AAIResponse_Success.xml +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/queryVolumeId_AAIResponse_Success.xml @@ -9,7 +9,7 @@ <relationship-list>
<relationship>
<related-to>tenant</related-to>
- <related-link>https://aai-ext1.test.com:8443/aai/v7/cloud-infrastructure/cloud-regions/cloud-region/att-aic/mdt1/tenants/tenant/fba1bd1e195a404cacb9ce17a9b2b421/</related-link>
+ <related-link>/aai/v7/cloud-infrastructure/cloud-regions/cloud-region/att-aic/mdt1/tenants/tenant/fba1bd1e195a404cacb9ce17a9b2b421/</related-link>
<relationship-data>
<relationship-key>tenant.tenant-id</relationship-key>
<relationship-value>fba1bd1e195a404cacb9ce17a9b2b421</relationship-value>
@@ -29,7 +29,7 @@ </relationship>
<relationship>
<related-to>vf-module</related-to>
- <related-link>http://localhost:28090/aai/v8/network/generic-vnfs/generic-vnf/9e48f6ea-f786-46de-800a-d480e5ccc846/vf-modules/vf-module/6a1dc898-b590-47b9-bbf0-34424a7a2ec3/</related-link>
+ <related-link>/aai/v8/network/generic-vnfs/generic-vnf/9e48f6ea-f786-46de-800a-d480e5ccc846/vf-modules/vf-module/6a1dc898-b590-47b9-bbf0-34424a7a2ec3/</related-link>
<relationship-data>
<relationship-key>generic-vnf.vnf-id</relationship-key>
<relationship-value>9e48f6ea-f786-46de-800a-d480e5ccc846</relationship-value>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/updateVfModuleVolume_VID_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/updateVfModuleVolume_VID_request.json index 8ab460e24d..603c1f452f 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/updateVfModuleVolume_VID_request.json +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/updateVfModuleVolume_VID_request.json @@ -2,8 +2,8 @@ "requestDetails": { "modelInfo": { "modelType": "volumeGroup", - "modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff", + "modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12::base::module-0", "modelVersion": "1" }, @@ -22,8 +22,8 @@ "instanceId": "{service-instance-id}", "modelInfo": { "modelType": "service", - "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff", + "modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "Test", "modelVersion": "2.0" } @@ -33,11 +33,11 @@ "instanceId": "{vnf-instance-id}", "modelInfo": { "modelType": "vnf", - "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid": "ff5256d1-5a33-55df-13ab-12abad84e7ff", + "modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "Test/vSAMP12", "modelVersion": "1", - "modelCustomizationName": "vSAMP12" + "modelInstanceName": "vSAMP12" } } } diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/updateVfModuleVolume_VID_request_2.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/updateVfModuleVolume_VID_request_2.json index 963e2dd7d7..f32ba2994b 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/updateVfModuleVolume_VID_request_2.json +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/updateVfModuleVolume_VID_request_2.json @@ -2,8 +2,8 @@ "requestDetails": { "modelInfo": { "modelType": "volumeGroup", - "modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff", + "modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe", "modelName": "vSAMP12::base::module-0", "modelVersion": "1" }, @@ -22,8 +22,8 @@ "instanceId": "{service-instance-id}", "modelInfo": { "modelType": "service", - "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff-x", - "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff-x", + "modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe", "modelName": "Test", "modelVersion": "2.0" } @@ -33,11 +33,11 @@ "instanceId": "{vnf-instance-id}", "modelInfo": { "modelType": "vnf", - "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff", - "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid": "ff5256d1-5a33-55df-13ab-12abad84e7ff", + "modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe", "modelName": "Test/vSAMP12", "modelVersion": "1", - "modelCustomizationName": "vSAMP12" + "modelInstanceName": "vSAMP12" } } } diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/vf_module_aai_response.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/vf_module_aai_response.xml index 58b8708809..85773cdb07 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/vf_module_aai_response.xml +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateVfModuleVolumeInfraV1/vf_module_aai_response.xml @@ -5,8 +5,8 @@ <orchestration-status>active</orchestration-status>
<is-base-vf-module>true</is-base-vf-module>
<resource-version>1475077639</resource-version>
- <persona-model-id>ff5256d2-5a33-55df-13ab-12abad84e7ff</persona-model-id>
- <persona-model-version>1.0</persona-model-version>
+ <model-invariant-id>ff5256d2-5a33-55df-13ab-12abad84e7ff</model-invariant-id>
+ <model-version-id>1.0</model-version-id>
<relationship-list>
<relationship>
<related-to>volume-group</related-to>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesDataForReplaceVnfInfra.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesDataForReplaceVnfInfra.json new file mode 100644 index 0000000000..9126442ddb --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesDataForReplaceVnfInfra.json @@ -0,0 +1,93 @@ +{ "serviceResources" : { + "modelInfo" : { + "modelName" : "MSO Test Network", + "modelUuid" : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e", + "modelInvariantUuid" : "52b49b5d-3086-4ffd-b5e6-1b1e5e7e062f", + "modelVersion" : null + }, + "serviceVnfs": [ + { "modelInfo" : { + "modelName" : "vHNF for DHV Test", + "modelUuid" : "fe6478e5-ea33-3346-ac12-ab121484a3fe", + "modelInvariantUuid" : "ff5256d2-5a33-55df-13ab-12abad84e7ff", + "modelVersion" : "1.0", + "modelCustomizationUuid" : "MODEL-ID-1234", + "modelInstanceName" : "vHNF for DHV Test 17" + }, + "toscaNodeType" : null, + "nfFunction" : null, + "nfType" : null, + "nfRole" : "vSCP", + "nfNamingCode" : null, + "vfModules": [ + { + "modelInfo" : { + "modelName" : "VhnfForDhvTest..base_TEST..module-0", + "modelUuid" : "ebc3d18c-3e62-4c24-bcd6-961e98701a0a", + "modelInvariantUuid" : "introvert", + "modelVersion" : "1", + "modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a787" + }, "isBase" : true, + "vfModuleLabel" : "base_TEST", + "initialCount" : 1, + "hasVolumeGroup" : true + } + ] + } + ], + "serviceNetworks": [ + { + "modelInfo" : { + "modelName" : "CONTRAIL_BASIC", + "modelUuid" : "fe5be3a6-dbe0-46d6-bcac-44dc841a7edc", + "modelInvariantUuid" : "ab07fbd8-185a-45ac-be45-db3eb02e98d5", + "modelVersion" : null, + "modelCustomizationUuid" : "0cb9b26a-9820-48a7-86e5-16c510e993d9", + "modelInstanceName" : "CONTRAIL_BASIC 5" + }, + "toscaNodeType" : null, + "networkType" : null, + "networkTechnology" : null, + "networkRole" : null, + "networkScope" : null + } + ], + "serviceAllottedResources": [ + { + "modelInfo" : { + "modelName" : "IP_MUX_Demux", + "modelUuid" : "64a1a718-556b-48ce-b3b7-ed3237ccc94f", + "modelInvariantUuid" : "f110ef53-a0a6-4d72-ab91-fd88a835e8c4", + "modelVersion" : "2.0", + "modelCustomizationUuid" : "4bab0880-2f06-4aeb-87cb-3734c8e8bf93", + "modelInstanceName" : "Pri_IP_MUX_Demux 1" + }, + "toscaNodeType" : null, + "allottedResourceType" : "ContrailRoute", + "allottedResourceRole" : null, + "providingServiceModelInvariantUuid" : null, + "nfFunction" : null, + "nfType" : null, + "nfRole" : null, + "nfNamingCode" : null + }, + { + "modelInfo" : { + "modelName" : "Service_Admin", + "modelUuid" : "73501e03-ee76-4509-a8ce-96d2a9f33ee9", + "modelInvariantUuid" : "462edf71-1a3c-487b-bf55-497460ab7de3", + "modelVersion" : "2.0", + "modelCustomizationUuid" : "a896ffad-c8f9-404e-a527-7a8d0cc99ce6", + "modelInstanceName" : "Pri_Service_Admin 5" + }, + "toscaNodeType" : null, + "allottedResourceType" : "SecurityZone", + "allottedResourceRole" : null, + "providingServiceModelInvariantUuid" : null, + "nfFunction" : null, + "nfType" : null, + "nfRole" : null, + "nfNamingCode" : null + } + ] + }}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesDataForUpdateVnfInfra.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesDataForUpdateVnfInfra.json new file mode 100644 index 0000000000..eac0957fd3 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesDataForUpdateVnfInfra.json @@ -0,0 +1,105 @@ +{ "serviceResources" : {
+ "modelInfo" : {
+ "modelName" : "MSO Test Network",
+ "modelUuid" : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e",
+ "modelInvariantUuid" : "52b49b5d-3086-4ffd-b5e6-1b1e5e7e062f",
+ "modelVersion" : null
+ },
+ "serviceVnfs": [
+ { "modelInfo" : {
+ "modelName" : "vHNF for DHV Test",
+ "modelUuid" : "7097d8bb-f6ad-4cf7-866e-6a04c8f1b332",
+ "modelInvariantUuid" : "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+ "modelVersion" : "2.0",
+ "modelCustomizationUuid" : "da86dd87-43c5-458c-b226-5315b7be9ad5",
+ "modelInstanceName" : "vHNF for DHV Test 17"
+ },
+ "toscaNodeType" : null,
+ "nfFunction" : null,
+ "nfType" : null,
+ "nfRole" : "vSCP",
+ "nfNamingCode" : null,
+ "vfModules": [
+ {
+ "modelInfo" : {
+ "modelName" : "VhnfForDhvTest..base_TEST..module-0",
+ "modelUuid" : "ebc3d18c-3e62-4c24-bcd6-961e98701a0a",
+ "modelInvariantUuid" : "introvert",
+ "modelVersion" : "1",
+ "modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a787"
+ }, "isBase" : true,
+ "vfModuleLabel" : "base_TEST",
+ "initialCount" : 1,
+ "hasVolumeGroup" : true
+ },
+ {
+ "modelInfo" : {
+ "modelName" : "VhnfForDhvTest..base_TEST..module-1",
+ "modelUuid" : "ebc3d18c-3e62-4c24-bcd6-961e98701a0b",
+ "modelInvariantUuid" : "extrovert",
+ "modelVersion" : "1",
+ "modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a788"
+ }, "isBase" : false,
+ "vfModuleLabel" : "addon_TEST",
+ "initialCount" : 1,
+ "hasVolumeGroup" : true
+ }
+ ]
+ }
+ ],
+ "serviceNetworks": [
+ {
+ "modelInfo" : {
+ "modelName" : "CONTRAIL_BASIC",
+ "modelUuid" : "fe5be3a6-dbe0-46d6-bcac-44dc841a7edc",
+ "modelInvariantUuid" : "ab07fbd8-185a-45ac-be45-db3eb02e98d5",
+ "modelVersion" : null,
+ "modelCustomizationUuid" : "0cb9b26a-9820-48a7-86e5-16c510e993d9",
+ "modelInstanceName" : "CONTRAIL_BASIC 5"
+ },
+ "toscaNodeType" : null,
+ "networkType" : null,
+ "networkTechnology" : null,
+ "networkRole" : null,
+ "networkScope" : null
+ }
+ ],
+ "serviceAllottedResources": [
+ {
+ "modelInfo" : {
+ "modelName" : "IP_MUX_Demux",
+ "modelUuid" : "64a1a718-556b-48ce-b3b7-ed3237ccc94f",
+ "modelInvariantUuid" : "f110ef53-a0a6-4d72-ab91-fd88a835e8c4",
+ "modelVersion" : "2.0",
+ "modelCustomizationUuid" : "4bab0880-2f06-4aeb-87cb-3734c8e8bf93",
+ "modelInstanceName" : "Pri_IP_MUX_Demux 1"
+ },
+ "toscaNodeType" : null,
+ "allottedResourceType" : "ContrailRoute",
+ "allottedResourceRole" : null,
+ "providingServiceModelInvariantUuid" : null,
+ "nfFunction" : null,
+ "nfType" : null,
+ "nfRole" : null,
+ "nfNamingCode" : null
+ },
+ {
+ "modelInfo" : {
+ "modelName" : "Service_Admin",
+ "modelUuid" : "73501e03-ee76-4509-a8ce-96d2a9f33ee9",
+ "modelInvariantUuid" : "462edf71-1a3c-487b-bf55-497460ab7de3",
+ "modelVersion" : "2.0",
+ "modelCustomizationUuid" : "a896ffad-c8f9-404e-a527-7a8d0cc99ce6",
+ "modelInstanceName" : "Pri_Service_Admin 5"
+ },
+ "toscaNodeType" : null,
+ "allottedResourceType" : "SecurityZone",
+ "allottedResourceRole" : null,
+ "providingServiceModelInvariantUuid" : null,
+ "nfFunction" : null,
+ "nfType" : null,
+ "nfRole" : null,
+ "nfNamingCode" : null
+ }
+ ]
+ }}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/serviceDecompositionATMFW.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/serviceDecompositionATMFW.json new file mode 100644 index 0000000000..94c1152204 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/serviceDecompositionATMFW.json @@ -0,0 +1,110 @@ +{
+"serviceResources" : {
+ "modelInfo" : {
+ "modelName" : "CMW_Service",
+ "modelUuid" : "",
+ "modelInvariantId" : "cmw-123-456-789",
+ "modelVersion" : "",
+ "modelCustomizationUuid" : "",
+ "modelInstanceName" : "",
+ "modelCustomizationName" : "",
+ "modelVersionId" : "Cmw_123",
+ "modelType" : ""
+ },
+ "serviceInstanceData" : {
+ "instanceId" : "ff5256d2-5a33-55df-13ab-12abad84e7ff"
+ },
+ "serviceNetworks" : [ {
+ "modelInfo" : {
+ "modelName" : "CONTRAIL30_BASIC",
+ "modelUuid" : "",
+ "modelInvariantId" : "not yet implemented",
+ "modelVersion" : "1.0",
+ "modelCustomizationUuid" : "z_network_123",
+ "modelInstanceName" : "",
+ "modelCustomizationName" : "",
+ "modelVersionId" : "mod-inst-uuid-123",
+ "modelType" : "network"
+ },
+ "instanceData" : { },
+ "networkType" : "CONTRAIL30_BASIC"
+ } ],
+ "serviceVnfs" : [ {
+ "modelInfo" : {
+ "modelName" : "vSAMP12",
+ "modelUuid" : "",
+ "modelInvariantId" : "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+ "modelVersion" : "1.0",
+ "modelCustomizationUuid" : "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+ "modelInstanceName" : "",
+ "modelCustomizationName" : "",
+ "modelVersionId" : "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+ "modelType" : "vnf"
+ },
+ "instanceData" : { },
+ "vfModules" : [ {
+ "modelInfo" : {
+ "modelName" : "vSAMP12::base::module-0",
+ "modelUuid" : "",
+ "modelInvariantId" : "miu-1001",
+ "modelVersion" : "1",
+ "modelCustomizationUuid" : "1001",
+ "modelInstanceName" : "",
+ "modelCustomizationName" : "",
+ "modelVersionId" : "",
+ "modelType" : "vfModule"
+ },
+ "instanceData" : { },
+ "hasVolumeGroup" : false,
+ "isBase" : true,
+ "initialCount" : 1
+ }, {
+ "modelInfo" : {
+ "modelName" : "base::module-0",
+ "modelUuid" : "",
+ "modelInvariantId" : "miu-1002",
+ "modelVersion" : "1",
+ "modelCustomizationUuid" : "1002",
+ "modelInstanceName" : "",
+ "modelCustomizationName" : "",
+ "modelVersionId" : "",
+ "modelType" : "vfModule"
+ },
+ "instanceData" : { },
+ "hasVolumeGroup" : false,
+ "isBase" : true,
+ "initialCount" : 1
+ }, {
+ "modelInfo" : {
+ "modelName" : "vSAMP12DEV::base::module-0",
+ "modelUuid" : "",
+ "modelInvariantId" : "miu-1003",
+ "modelVersion" : "1",
+ "modelCustomizationUuid" : "f86e8800-7629-427f-b284-3dbfd04db01f",
+ "modelInstanceName" : "",
+ "modelCustomizationName" : "",
+ "modelVersionId" : "",
+ "modelType" : "vfModule"
+ },
+ "instanceData" : { },
+ "hasVolumeGroup" : false,
+ "isBase" : true,
+ "initialCount" : 0
+ } ]
+ } ],
+ "serviceAllottedResources" : [ {
+ "modelInfo" : {
+ "modelName" : "Bruce Wayne",
+ "modelUuid" : "",
+ "modelInvariantId" : "not yet implemented",
+ "modelVersion" : "1.0",
+ "modelCustomizationUuid" : "ar-mod-custid-456-456",
+ "modelInstanceName" : "Clark Kent",
+ "modelCustomizationName" : "",
+ "modelVersionId" : "123-123",
+ "modelType" : "allottedResource"
+ },
+ "instanceData" : { }
+ } ]
+ }
+}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/DBUpdateResponse.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/DBUpdateResponse.xml index 110e4327df..7c30f75497 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/DBUpdateResponse.xml +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/DBUpdateResponse.xml @@ -1,4 +1,4 @@ -<ns2:updateRequestResponse xmlns:ns2="http://com.att.mso/requestsdb" +<ns2:updateRequestResponse xmlns:ns2="http://org.openecomp.mso/requestsdb" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"/>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/GenerateVfModuleName_AAIResponse_Success.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/GenerateVfModuleName_AAIResponse_Success.xml index 181473543f..fe874717a8 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/GenerateVfModuleName_AAIResponse_Success.xml +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/GenerateVfModuleName_AAIResponse_Success.xml @@ -1,4 +1,4 @@ -<generic-vnf xmlns="http://com.att.aai.inventory/v7">
+<generic-vnf xmlns="http://org.openecomp.aai.inventory/v7">
<vnf-id>12345678-f41f-4822-9323-b75962763d74</vnf-id>
<vnf-name>STMTN5MMSC20</vnf-name>
<vnf-type>pcrf-capacity</vnf-type>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/GenericVnf.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/GenericVnf.xml index 85427e2fcc..4712a5a464 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/GenericVnf.xml +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/GenericVnf.xml @@ -1,4 +1,4 @@ -<generic-vnf xmlns="http://com.att.aai.inventory/v7">
+<generic-vnf xmlns="http://org.openecomp.aai.inventory/v7">
<vnf-id>skask</vnf-id>
<vnf-name>STMTN5MMSC20</vnf-name>
<vnf-type>pcrf-capacity</vnf-type>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallback.xml index 27cab6b422..10af29a210 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallback.xml +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallback.xml @@ -6,7 +6,7 @@ <sdnc-request-header>
<svc-request-id>9ddf628a-9eca-430e-8974-22d520a31be1</svc-request-id>
<svc-action>assign</svc-action>
- <svc-notification-url>https://msojra.infra.aic.att.net:8443/adapters/rest/SDNCNotify</svc-notification-url>
+ <svc-notification-url>https://msojra.infra.aic.net:8443/adapters/rest/SDNCNotify</svc-notification-url>
</sdnc-request-header>
<service-information>
<subscriber-name>notsurewecare</subscriber-name>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVfModule.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVfModule.xml index be6f973260..f96a073ef6 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVfModule.xml +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVfModule.xml @@ -20,7 +20,7 @@ </service-information>
<sdnc-request-header>
<svc-request-id>5e168556-a5c6-4813-bff3-cc03007afbbc</svc-request-id>
- <svc-notification-url>http://mtanjv9moja01-eth1-0.aic.cip.att.com:8080/adapters/rest/SDNCNotify</svc-notification-url>
+ <svc-notification-url>http://mtanjv9moja01-eth1-0.aic.cip.com:8080/adapters/rest/SDNCNotify</svc-notification-url>
<svc-action>assign</svc-action>
</sdnc-request-header>
<vnf-request-information>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVfModuleNoVnf.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVfModuleNoVnf.xml new file mode 100644 index 0000000000..50a71c110e --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVfModuleNoVnf.xml @@ -0,0 +1,81 @@ +<output xmlns="com:att:sdnctl:vnf">
+<vf-module-topology xmlns="com:att:sdnctl:generic-resource">
+ <vf-module-topology-identifier>
+ <vf-module-id>0725b072-b854-4705-bf8e-c1a1eb08651e</vf-module-id>
+ <vf-module-type>vSAMP10aDEV::base::module-0</vf-module-type>
+ <vf-module-name>zmtn6nf-code-111_base_0</vf-module-name>
+ </vf-module-topology-identifier>
+ <ecomp-model-information>
+ <model-name>vSAMP10aDEV::base::module-0</model-name>
+ <model-customization-uuid>819ef122-ca19-4141-a61e-62922f8fc279</model-customization-uuid>
+ <model-version>ff2ae348-214a-11e7-93ae-92361f002673</model-version>
+ <model-invariant-uuid>3a97db99-c4bb-498a-a13a-38f65f1ced3d</model-invariant-uuid>
+ <model-uuid>ff2ae348-214a-11e7-93ae-92361f002673</model-uuid>
+ </ecomp-model-information>
+ <tenant>19123c2924c648eb8e42a3c1f14b7682</tenant>
+ <aic-cloud-region>mtn6</aic-cloud-region>
+ <aic-clli>AUSTTXGR</aic-clli>
+ <vf-module-parameters>
+ <param>
+ <name>image</name>
+ <value>Ubuntu_Perf</value>
+ </param>
+ <param>
+ <name>flavor</name>
+ <value>m1.small</value>
+ </param>
+ </vf-module-parameters>
+ <vf-module-assignments>
+ <vms>
+ <vm>
+ <vm-type>cm</vm-type>
+ <vm-names>
+ <vm-name>ZVNN1MOGX01MCM001</vm-name>
+ </vm-names>
+ <vm-names>
+ <vm-name>ZVNN1MOGX01OAM002</vm-name>
+ </vm-names>
+ <vm-count>1</vm-count>
+ <vm-networks>
+ <network-role>mog_cor_B</network-role>
+ <network-ips>
+ <ip-address>107.224.36.249</ip-address>
+ </network-ips>
+ <network-ips>
+ <ip-address>107.224.36.250</ip-address>
+ </network-ips>
+ <network-ips-v6>
+ <ip-address-ipv6>2606:ae00:2e01:800::67</ip-address-ipv6>
+ </network-ips-v6>
+ <use-dhcp>N</use-dhcp>
+ <floating-ip>107.224.41.252</floating-ip>
+ <floating-ip-v6>2001:1890:1001:2B32::29:C</floating-ip-v6>
+ </vm-networks>
+ <vm-networks>
+ <network-role>mog_oam</network-role>
+ <network-ips>
+ <ip-address>107.239.167.250</ip-address>
+ </network-ips>
+ <network-ips>
+ <ip-address>107.239.167.251</ip-address>
+ </network-ips>
+ <network-ips-v6>
+ <ip-address-ipv6>aa::aa::aa::aa::aa::aa</ip-address-ipv6>
+ </network-ips-v6>
+ <network-ips-v6>
+ <ip-address-ipv6>bb::bb::bb::bb::bb::bb</ip-address-ipv6>
+ </network-ips-v6>
+ <interface-route-prefixes>
+ <interface-route-prefix-cidr>1.2.3.4/26</interface-route-prefix-cidr>
+ </interface-route-prefixes>
+ <interface-route-prefixes>
+ <interface-route-prefix-cidr>2002::/64</interface-route-prefix-cidr>
+ </interface-route-prefixes>
+ <use-dhcp>N</use-dhcp>
+ <floating-ip-v6>1111:1890:1001:2B32::29:D</floating-ip-v6>
+ </vm-networks>
+ </vm>
+ </vms>
+ </vf-module-assignments>
+</vf-module-topology>
+</output>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVnf.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVnf.xml new file mode 100644 index 0000000000..bc2c7b9e63 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVnf.xml @@ -0,0 +1,82 @@ +<output xmlns="com:att:sdnctl:vnf">
+<vnf-topology xmlns="com:att:sdnctl:generic-resource">
+ <vnf-topology-identifier-structure>
+ <nf-type>nf-type-1</nf-type>
+ <vnf-name>zmtn6nf-code-111</vnf-name>
+ <nf-role>nf-role-1</nf-role>
+ <nf-function>nf-function-1</nf-function>
+ <nf-code>nf-code-1</nf-code>
+ <vnf-id>eac30f85-f61f-4c5f-862e-2c62f9e135de</vnf-id>
+ <vnf-type>null</vnf-type>
+ </vnf-topology-identifier-structure>
+ <ecomp-model-information>
+ <model-name>vSAMP10a_macro</model-name>
+ <model-customization-uuid>819ef122-ca19-4141-a61e-62922f8fc279</model-customization-uuid>
+ <model-version>1.0</model-version>
+ <model-invariant-uuid>ef176121-f02c-4dd3-927c-22131d48446b</model-invariant-uuid>
+ <model-uuid>ff2ae348-214a-11e7-93ae-92361f002672</model-uuid>
+ </ecomp-model-information>
+ <vnf-resource-assignments>
+ <vnf-networks>
+ <network-role>mog_exn</network-role>
+ <network-id>03dbd833-785c-40c0-bf32-37594b5334bc</network-id>
+ <network-name>MNS-25180-P-VNNYCA01_exn_protected_net_1</network-name>
+ <contrail-network-fqdn/>
+ <subnet-id/>
+ <neutron-id>6f82d234-41a4-48e9-a9e8-415667a72929</neutron-id>
+ <sriov-vlan-filter-list>
+ <sriov-vlan-filter>filter1</sriov-vlan-filter>
+ </sriov-vlan-filter-list>
+ <sriov-vlan-filter-list>
+ <sriov-vlan-filter>filter2</sriov-vlan-filter>
+ </sriov-vlan-filter-list>
+ </vnf-networks>
+ <vnf-networks>
+ <network-role>mog_oam</network-role>
+ <network-id>3f181cde-9380-4c20-9d3a-e1a4ee74f994</network-id>
+ <network-name>MNS-25180-P-VNNYCA01_oam_protected_net_1</network-name>
+ <contrail-network-fqdn/>
+ <subnet-id/>
+ <neutron-id>713b6770-13fa-4949-8dbb-a1288c5e5932</neutron-id>
+ </vnf-networks>
+ <vnf-networks>
+ <network-role>mog_cor_B</network-role>
+ <network-id>821a550a-3f50-4725-995b-f212d5caec7c</network-id>
+ <network-name>MNS-25180-P-VNNYCA01_cor_direct_net_1</network-name>
+ <contrail-network-fqdn/>
+ <subnet-id/>
+ <neutron-id>18926e56-12b6-4a4d-98b6-37e0c05626ee</neutron-id>
+ </vnf-networks>
+ <vnf-networks>
+ <network-role>mog_cor_A</network-role>
+ <network-id>3dabf5c0-cffb-420c-8960-8499c74eb25f</network-id>
+ <network-name>MNS-25180-P-VNNYCA01_cor_direct_net_2</network-name>
+ <contrail-network-fqdn/>
+ <subnet-id/>
+ <neutron-id>35530b29-a4de-48ff-a014-111110ccc652</neutron-id>
+ </vnf-networks>
+ <vnf-networks>
+ <network-role>mog_gn</network-role>
+ <network-id>3ce97321-6e7f-49af-bd12-f833e377c310</network-id>
+ <network-name>MNS-25180-P-VNNYCA01_gn_direct_net_1</network-name>
+ <contrail-network-fqdn/>
+ <subnet-id/>
+ <neutron-id>32bfdd2c-28e1-4895-87a6-373bf12c3129</neutron-id>
+ </vnf-networks>
+ <vnf-networks>
+ <network-role>mog_dmz</network-role>
+ <network-id>d43ca910-02a5-47dc-8510-100a68a3c9e0</network-id>
+ <network-name>MNS-25180-P-VNNYCA01_dmz_protected_net_1</network-name>
+ <contrail-network-fqdn/>
+ <subnet-id/>
+ <neutron-id>cb9500fb-943f-412e-aea6-458711564a75</neutron-id>
+ </vnf-networks>
+ <availability-zones>
+ <availability-zone>nova</availability-zone>
+ </availability-zones>
+ </vnf-resource-assignments>
+ <tenant>19123c2924c648eb8e42a3c1f14b7682</tenant>
+ <aic-cloud-region>mtn6</aic-cloud-region>
+ <aic-clli>AUSTTXGR</aic-clli>
+</vnf-topology>
+</output>
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-lukewarm.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-lukewarm.xml index 8de2f95901..8db8610501 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-lukewarm.xml +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-lukewarm.xml @@ -1,4 +1,4 @@ -<vf-module xmlns="http://com.att.aai.inventory/v7">
+<vf-module xmlns="http://org.openecomp.aai.inventory/v7">
<vf-module-id>lukewarm</vf-module-id>
<vf-module-name>PCRF::module-1</vf-module-name>
<heat-stack-id>slowburn</heat-stack-id>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-new.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-new.xml index e72d23d9d9..10e85c0568 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-new.xml +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-new.xml @@ -1,4 +1,4 @@ -<vf-module xmlns="http://com.att.aai.inventory/v7">
+<vf-module xmlns="http://org.openecomp.aai.inventory/v7">
<vf-module-id>b37d96db-7d2c-47ce-bf61-a6c7b82fe161</vf-module-id>
<vf-module-name>PCRF::module-0-2</vf-module-name>
<model-invariant-id>00000000-0000-0000-0000-000000000000</model-invariant-id>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-supercool.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-supercool.xml index 15a84aad05..4e7d567564 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-supercool.xml +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-supercool.xml @@ -1,4 +1,4 @@ -<vf-module xmlns="http://com.att.aai.inventory/v7">
+<vf-module xmlns="http://org.openecomp.aai.inventory/v7">
<vf-module-id>supercool</vf-module-id>
<vf-module-name>PCRF::module-2</vf-module-name>
<heat-stack-id>fastburn</heat-stack-id>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties b/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties index b14d49511a..8a557c433a 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties +++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties @@ -9,10 +9,12 @@ mso.csi.pwd=4EA237303511EFBBC37F17A351562131 mso.csi.usrname=mso
mso.msoKey=07a7159d3bf51a0e53be7a8f89699be7
+mso.healthcheck.log.debug=false
+
mso.adapters.completemsoprocess.endpoint=http://localhost:28090/CompleteMsoProcess
mso.workflow.message.endpoint=http://localhost:8080/mso/WorkflowMessage
-mso.catalog.db.endpoint=http://localhost:8090
-mso.adapters.db.endpoint=http://localhost:28090/dbadapters/RequestsDbAdapter
+mso.adapters.db.endpoint=http://localhost:28090/dbadapters/MsoRequestsDbAdapter
+mso.openecomp.adapters.db.endpoint=http://localhost:28090/dbadapters/RequestsDbAdapter
mso.adapters.db.auth=757A94191D685FD2092AC1490730A4FC
mso.adapters.network.endpoint=http://localhost:28090/networks/NetworkAdapter
@@ -24,6 +26,7 @@ mso.po.timeout=PT60S aai.auth=757A94191D685FD2092AC1490730A4FC
+mso.default.adapter.namespace=http://org.openecomp.mso
mso.adapters.sdnc.endpoint=http://localhost:28090/SDNCAdapter
mso.adapters.sdnc.rest.endpoint=http://localhost:28090/SDNCAdapter/v1/sdnc
mso.adapters.sdnc.timeout=PT60S
@@ -38,7 +41,7 @@ mso.sdnc.timeout.ucpe.async.minutes=5 mso.workflow.message.endpoint=http://localhost:28080/mso/WorkflowMesssage
mso.workflow.sdncadapter.callback=http://localhost:28080/mso/SDNCAdapterCallbackService
-mso.catalog.db.endpoint=http://localhost:28090/
+mso.catalog.db.endpoint=http://localhost:28090
mso.adapters.tenant.endpoint=http://localhost:28090/tenantAdapterMock
mso.adapters.vnf-async.endpoint=http://localhost:28090/vnfs/VnfAdapterAsync
@@ -84,4 +87,31 @@ log.debug.FalloutHandler=true log.debug.GenericGetService=true
log.debug.sdncAdapter=true
log.debug.UpdateNetworkInstanceInfra=true
-log.debug.VnfAdapterRestV1=true
\ No newline at end of file +log.debug.VnfAdapterRestV1=true
+log.debug.CreateNetworkInstance=true
+log.debug.DoCreateNetworkInstance=true
+log.debug.DoCreateNetworkInstanceRollback=true
+log.debug.DeleteNetworkInstance=true
+log.debug.DoDeleteNetworkInstance=true
+log.debug.DoDeleteNetworkInstanceRollback=true
+log.debug.UpdateNetworkInstance=true
+log.debug.DoUpdateNetworkInstance=true
+log.debug.DoUpdateNetworkInstanceRollback=true
+log.debug.CreateVnfInfra=true
+log.debug.DoCreateVnf=true
+
+policy.client.auth=Basic bTAzNzQzOnBvbGljeVIwY2sk
+policy.auth=Basic dGVzdHBkcDphbHBoYTEyMw==
+policy.environment=TEST
+policy.endpoint=http://localhost:28090/pdp/api/getDecision
+
+appc.topic.read=APPC-CL-FUSION-LCM-RESPONSE
+appc.topic.read.timeout=60000
+appc.client.response.timeout=3600000
+appc.topic.write=APPC-CL-FUSION-LCM
+appc.pool.members=uebsb91bodc.it.openecomp.org:3904,uebsb92bodc.it.openecomp.org:3904,uebsb93bodc.it.openecomp.org:3904
+appc.client.key=iaEMAfjsVsZnraBP
+appc.client.secret=wcivUjsjXzmGFBfxMmyJu9dz
+
+
+
diff --git a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseAAI.java b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseAAI.java index c4139c99cf..be1c19e05d 100644 --- a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseAAI.java +++ b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseAAI.java @@ -161,6 +161,12 @@ public class StubResponseAAI { .withHeader("Content-Type", "text/xml")));
}
+ public static void MockDeleteServiceInstance(String customer, String serviceSubscription, String serviceInstanceId, String resourceVersion, int statusCode){
+ stubFor(delete(urlMatching("/aai/v[0-9]+/business/customers/customer/" + customer + "/service-subscriptions/service-subscription/" + serviceSubscription + "/service-instances/service-instance/" + serviceInstanceId + "[?]resource-version=" + resourceVersion))
+ .willReturn(aResponse()
+ .withStatus(statusCode)));
+ }
+
public static void MockDeleteServiceInstance(String customer, String serviceSubscription, String resourceVersion, int statusCode){
stubFor(delete(urlMatching("/aai/v[0-9]+/business/customers/customer/" + customer + "/service-subscriptions/service-subscription/" + serviceSubscription + "[?]resource-version=" +1234))
.willReturn(aResponse()
@@ -262,6 +268,15 @@ public class StubResponseAAI { /**
* Generic-Vnf Mock StubResponses below
*/
+
+ public static void MockGetGenericVnfById(String vnfId, String responseFile){
+ stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/" + vnfId + "[?]depth=1"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile(responseFile)));
+ }
+
public static void MockGetGenericVnfById(String vnfId, String responseFile, int statusCode){
stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf" + vnfId))
.willReturn(aResponse()
@@ -454,6 +469,44 @@ public class StubResponseAAI { .withHeader("Content-Type", "text/xml")
.withBodyFile(responseFile)));
}
+
+ public static void MockGetNetworkByIdWithDepth(String networkId, String responseFile, String depth) {
+ stubFor(get(urlMatching("/aai/v[0-9]+/network/l3-networks/l3-network/" + networkId + "[?]depth=" + depth))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile(responseFile)));
+ }
+
+ public static void MockGetNetworkCloudRegion(String responseFile, String cloudRegion) {
+ stubFor(get(urlMatching("/aai/v[0-9]+/cloud-infrastructure/cloud-regions/cloud-region/att-aic/"+cloudRegion))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile(responseFile)));
+ }
+
+ public static void MockGetNetworkByName(String networkName, String responseFile) {
+ stubFor(get(urlMatching("/aai/v[0-9]+/network/l3-networks/l3-network[?]network-name="+networkName))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile(responseFile)));
+ }
+
+ public static void MockGetNetworkByName_404(String responseFile, String networkName) {
+ stubFor(get(urlMatching("/aai/v[0-9]+/network/l3-networks/l3-network[?]network-name="+networkName))
+ .willReturn(aResponse()
+ .withStatus(404)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile(responseFile)));
+ }
+
+ public static void MockGetNetworkCloudRegion_404(String cloudRegion) {
+ stubFor(get(urlMatching("/aai/v[0-9]+/cloud-infrastructure/cloud-regions/cloud-region/att-aic/"+cloudRegion))
+ .willReturn(aResponse()
+ .withStatus(404)));
+ }
public static void MockPutNetwork(String networkId, int statusCode, String responseFile) {
stubFor(put(urlMatching("/aai/v[0-9]+/network/l3-networks/l3-network/" + networkId))
@@ -478,6 +531,22 @@ public class StubResponseAAI { .withHeader("Content-Type", "text/xml")
.withBodyFile(responseFile)));
}
+
+ public static void MockGetNetworkVpnBinding(String responseFile, String vpnBinding) {
+ stubFor(get(urlMatching("/aai/v[0-9]+/network/vpn-bindings/vpn-binding/"+vpnBinding + "[?]depth=all"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile(responseFile)));
+ }
+
+ public static void MockGetNetworkPolicy(String responseFile, String policy) {
+ stubFor(get(urlMatching("/aai/v[0-9]+/network/network-policies/network-policy/"+policy + "[?]depth=all"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile(responseFile)));
+ }
public static void MockGetNetworkVpnBinding(String networkBindingId, String responseFile, int statusCode) {
stubFor(get(urlMatching("/aai/v[0-9]+/network/vpn-bindings/vpn-binding/" + networkBindingId))
@@ -495,6 +564,22 @@ public class StubResponseAAI { .withBodyFile(responseFile)));
}
+ public static void MockGetNetworkTableReference(String responseFile, String tableReference) {
+ stubFor(get(urlMatching("/aai/v[0-9]+/network/route-table-references/route-table-reference/"+tableReference + "[?]depth=all"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile(responseFile)));
+ }
+
+ public static void MockPutNetworkIdWithDepth(String responseFile, String networkId, String depth) {
+ stubFor(put(urlMatching("/aai/v[0-9]+/network/l3-networks/l3-network/"+networkId+"[?]depth="+depth ))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "text/xml")
+ .withBodyFile(responseFile)));
+ }
+
public static void MockGetNetworkPolicyfqdn(String networkPolicy, String responseFile, int statusCode) {
stubFor(get(urlMatching("/aai/v[0-9]+/network/network-policies/network-policy[?]network-policy-fqdn=" + networkPolicy))
.willReturn(aResponse()
@@ -686,6 +771,18 @@ public class StubResponseAAI { .withStatus(statusCode)));
}
+ public static void MockGetVolumeGroupByName_404(String cloudRegionId, String volumeGroupName) {
+ stubFor(get(urlMatching("/aai/v9/cloud-infrastructure/cloud-regions/cloud-region/att-aic/" + cloudRegionId + "/volume-groups[?]volume-group-name=" + volumeGroupName))
+ .willReturn(aResponse()
+ .withStatus(404)));
+ }
+
+ public static void MockDeleteVolumeGroup(String cloudRegionId, String volumeGroupId, String resourceVersion) {
+ stubFor(delete(urlMatching("/aai/v[0-9]+/cloud-infrastructure/cloud-regions/cloud-region/att-aic/" + cloudRegionId + "/volume-groups/volume-group/" + volumeGroupId + "[?]resource-version=" + resourceVersion))
+ .willReturn(aResponse()
+ .withStatus(200)));
+ }
+
/**
* VF-Module StubResponse below
* @param statusCode TODO
@@ -737,6 +834,30 @@ public class StubResponseAAI { .withStatus(statusCode)));
}
+ /* AAI Pserver Queries */
+ public static void MockGetPserverByVnfId(String vnfId, String responseFile, int statusCode) {
+ stubFor(put(urlMatching("/v10/query.*"))
+ .willReturn(aResponse()
+ .withStatus(statusCode)
+ .withHeader("Content-Type", "application/json")
+ .withBodyFile(responseFile)));
+ }
+
+ public static void MockGetGenericVnfsByVnfId(String vnfId, String responseFile, int statusCode) {
+ stubFor(get(urlMatching("/v10/network/generic-vnfs/.*"))
+ .willReturn(aResponse()
+ .withStatus(statusCode)
+ .withHeader("Content-Type", "application/json; charset=utf-8")
+ .withBodyFile(responseFile)));
+ }
+
+ public static void MockSetInMaintFlagByVnfId(String vnfId, int statusCode) {
+ stubFor(patch(urlMatching("/v10/network/generic-vnfs/.*"))
+ .willReturn(aResponse()
+ .withStatus(statusCode)
+ ));
+ }
+
//// Deprecated Stubs below - to be deleted once unit test that reference them are refactored to use common ones above ////
@Deprecated
public static void MockGetVceById(){
diff --git a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseDatabase.java b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseDatabase.java index 7eefa4bc39..f691043297 100644 --- a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseDatabase.java +++ b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseDatabase.java @@ -40,6 +40,14 @@ public class StubResponseDatabase { } + public static void MockUpdateRequestDB(String fileName){ + stubFor(post(urlEqualTo("/dbadapters/RequestsDbAdapter")) + .willReturn(aResponse() + .withStatus(200) + .withHeader("Content-Type", "text/xml") + .withBodyFile(fileName))); + } + public static void mockUpdateRequestDB(int statusCode, String reponseFile) { stubFor(post(urlEqualTo("/dbadapters/RequestsDbAdapter")) .willReturn(aResponse() @@ -61,5 +69,39 @@ public class StubResponseDatabase { .willReturn(aResponse() .withStatus(500))); } + + public static void MockGetVnfCatalogDataCustomizationUuid(String vnfModelCustomizationUuid, String responseFile){ + stubFor(get(urlEqualTo("/v2/serviceVnfs?vnfModelCustomizationUuid=" + vnfModelCustomizationUuid)) + .willReturn(aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/json") + .withBodyFile(responseFile))); + } + + public static void MockGetVfModuleByModelNameCatalogData(String vfModuleModelName, String responseFile){ + stubFor(get(urlEqualTo("/v2/vfModules?vfModuleModelName=" + vfModuleModelName)) + .willReturn(aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/json") + .withBodyFile(responseFile))); + } + + public static void MockGetServiceResourcesCatalogData(String serviceModelInvariantUuid, String serviceModelVersion, String responseFile){ + stubFor(get(urlEqualTo("/v2/serviceResources?serviceModelInvariantUuid=" + serviceModelInvariantUuid + + "&serviceModelVersion=" + serviceModelVersion)) + .willReturn(aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/json") + .withBodyFile(responseFile))); + } + + public static void MockGetServiceResourcesCatalogData(String serviceModelInvariantUuid, String responseFile){ + stubFor(get(urlEqualTo("/v2/serviceResources?serviceModelInvariantUuid=" + serviceModelInvariantUuid)) + .willReturn(aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/json") + .withBodyFile(responseFile))); + } + } diff --git a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseNetworkAdapter.java b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseNetworkAdapter.java index c81578a998..e496020ee0 100644 --- a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseNetworkAdapter.java +++ b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseNetworkAdapter.java @@ -64,6 +64,15 @@ public class StubResponseNetworkAdapter { .withStatus(500))); } + public static void MockNetworkAdapterPost(String responseFile, String requestContaining) { + stubFor(post(urlEqualTo("/networks/NetworkAdapter")) + .withRequestBody(containing(requestContaining)) + .willReturn(aResponse() + .withStatus(200) + .withHeader("Content-Type", "text/xml") + .withBodyFile(responseFile))); + } + public static void MockNetworkAdapter(String networkId, int statusCode, String responseFile) { stubFor(delete(urlEqualTo("/networks/NetworkAdapter/" + networkId)) .willReturn(aResponse() @@ -89,5 +98,21 @@ public class StubResponseNetworkAdapter { .withHeader("Content-Type", "text/xml") .withBodyFile(responseFile))); } - + + public static void MockNetworkAdapterRestRollbackDelete(String responseFile, String networkId) { + stubFor(delete(urlEqualTo("/networks/NetworkAdapter/"+networkId+"/rollback")) + .willReturn(aResponse() + .withStatus(200) + .withHeader("Content-Type", "text/xml") + .withBodyFile(responseFile))); + } + + public static void MockNetworkAdapterRestPut(String responseFile, String networkId) { + stubFor(put(urlEqualTo("/networks/NetworkAdapter/"+networkId)) + .willReturn(aResponse() + .withStatus(200) + .withHeader("Content-Type", "text/xml") + .withBodyFile(responseFile))); + } + } diff --git a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponsePolicy.java b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponsePolicy.java new file mode 100644 index 0000000000..7093b649d4 --- /dev/null +++ b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponsePolicy.java @@ -0,0 +1,99 @@ +/*
+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.bpmn.mock;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.containing;
+import static com.github.tomakehurst.wiremock.client.WireMock.delete;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.patch;
+import static com.github.tomakehurst.wiremock.client.WireMock.put;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
+
+/**
+ * Reusable Mock StubResponses for Policy
+ *
+ */
+public class StubResponsePolicy {
+
+ public static void setupAllMocks() {
+
+ }
+
+ // start of Policy mocks
+ public static void MockPolicyAbort() {
+ stubFor(post(urlEqualTo("/pdp/api/getDecision"))
+ .withRequestBody(containing("BB1"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "application/json")
+ .withBodyFile("policyAbortResponse.json")));
+
+ stubFor(post(urlEqualTo("/pdp/api/getDecision"))
+ .withRequestBody(containing("UPDVnfI"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "application/json")
+ .withBodyFile("policyAbortResponse.json")));
+
+ stubFor(post(urlEqualTo("/pdp/api/getDecision"))
+ .withRequestBody(containing("RPLVnfI"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "application/json")
+ .withBodyFile("policyAbortResponse.json")));
+
+
+ }
+
+ public static void MockPolicySkip() {
+ stubFor(post(urlEqualTo("/pdp/api/getDecision"))
+ .withRequestBody(containing("BB1"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "application/json")
+ .withBodyFile("Policy/policySkipResponse.json")));
+
+ stubFor(post(urlEqualTo("/pdp/api/getDecision"))
+ .withRequestBody(containing("UPDVnfI"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "application/json")
+ .withBodyFile("Policy/policySkipResponse.json")));
+
+ stubFor(post(urlEqualTo("/pdp/api/getDecision"))
+ .withRequestBody(containing("RPLVnfI"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "application/json")
+ .withBodyFile("Policy/policySkipResponse.json")));
+
+
+ }
+
+
+}
diff --git a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseSDNCAdapter.java b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseSDNCAdapter.java index 8e4b789366..230c9d4fbc 100644 --- a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseSDNCAdapter.java +++ b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseSDNCAdapter.java @@ -38,6 +38,19 @@ public class StubResponseSDNCAdapter { } + public static void mockSDNCAdapter_500() { + stubFor(post(urlEqualTo("/SDNCAdapter")) + .willReturn(aResponse() + .withStatus(500))); + } + + public static void mockSDNCAdapter_500(String requestContaining) { + stubFor(post(urlEqualTo("/SDNCAdapter")) + .withRequestBody(containing(requestContaining)) + .willReturn(aResponse() + .withStatus(500))); + } + public static void mockSDNCAdapter(int statusCode) { stubFor(post(urlEqualTo("/SDNCAdapter")) .willReturn(aResponse() diff --git a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseVNFAdapter.java b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseVNFAdapter.java index 7951a48184..f826db2bb5 100644 --- a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseVNFAdapter.java +++ b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseVNFAdapter.java @@ -30,6 +30,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.put; import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; +import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching; /** * Please describe the StubResponseVNF.java class @@ -121,10 +122,42 @@ public class StubResponseVNFAdapter { .withHeader("Content-Type", "application/xml"))); } + public static void mockPutVNFVolumeGroupRollback(String volumeGroupId, int statusCode) { + stubFor(delete(urlMatching("/vnfs/v1/volume-groups/" + volumeGroupId + "/rollback")) + .willReturn(aResponse() + .withStatus(statusCode) + .withHeader("Content-Type", "application/xml"))); + } public static void mockPostVNFVolumeGroup(int statusCode) { stubFor(post(urlEqualTo("/vnfs/v1/volume-groups")) .willReturn(aResponse() .withStatus(statusCode) .withHeader("Content-Type", "application/xml"))); } + + public static void mockVNFAdapterRest(String vnfId) { + stubFor(post(urlEqualTo("/vnfs/v1/vnfs/" + vnfId + "/vf-modules")) + .willReturn(aResponse() + .withStatus(200))); + } + + public static void mockVNFAdapterRest_500(String vnfId) { + stubFor(post(urlEqualTo("/vnfs/v1/vnfs/" + vnfId + "/vf-modules")) + .willReturn(aResponse() + .withStatus(500))); + } + + public static void mockVfModuleDelete(String volumeGroupId) { + stubFor(delete(urlMatching("/vnfs/v1/volume-groups/"+ volumeGroupId)) + .willReturn(aResponse() + .withStatus(202) + .withHeader("Content-Type", "application/xml"))); + } + + public static void mockVfModuleDelete(String volumeGroupId, int statusCode) { + stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987")) + .willReturn(aResponse() + .withStatus(statusCode) + .withHeader("Content-Type", "application/xml"))); + } } diff --git a/bpmn/MSORESTClient/pom.xml b/bpmn/MSORESTClient/pom.xml index e17a58f488..b042a9e82c 100644 --- a/bpmn/MSORESTClient/pom.xml +++ b/bpmn/MSORESTClient/pom.xml @@ -6,7 +6,7 @@ <parent>
<groupId>org.openecomp.so</groupId>
<artifactId>bpmn</artifactId>
- <version>1.1.0-SNAPSHOT</version> + <version>1.1.0-SNAPSHOT</version>
</parent>
<groupId>org.openecomp.so</groupId>
@@ -18,12 +18,6 @@ <dependencies>
<dependency>
- <groupId>org.evosuite</groupId>
- <artifactId>evosuite-standalone-runtime</artifactId>
- <version>${evosuiteVersion}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5</version>
diff --git a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/APIResponseESTest.java b/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/APIResponseESTest.java deleted file mode 100644 index e44a44d118..0000000000 --- a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/APIResponseESTest.java +++ /dev/null @@ -1,237 +0,0 @@ -/* - * This file was automatically generated by EvoSuite - * Mon Nov 14 11:46:25 GMT 2016 - */ - -/*- - * ============LICENSE_START======================================================= - * OPENECOMP - MSO - * ================================================================================ - * 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.mso.rest; - -import org.junit.Test; -import static org.junit.Assert.*; -import static org.evosuite.shaded.org.mockito.Mockito.*; -import static org.evosuite.runtime.MockitoExtension.*; -import static org.evosuite.runtime.EvoAssertions.*; - -import java.util.Locale; -import org.apache.http.HttpResponse; -import org.apache.http.ProtocolVersion; -import org.apache.http.ReasonPhraseCatalog; -import org.apache.http.StatusLine; -import org.apache.http.entity.ByteArrayEntity; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.EnglishReasonPhraseCatalog; -import org.apache.http.message.BasicHttpResponse; -import org.apache.http.message.BasicStatusLine; -import org.evosuite.runtime.EvoRunner; -import org.evosuite.runtime.EvoRunnerParameters; -import org.evosuite.runtime.PrivateAccess; -import org.evosuite.runtime.ViolatedAssumptionAnswer; -import org.junit.runner.RunWith; - -@RunWith(EvoRunner.class) @EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, useJEE = true) -public class APIResponseESTest extends APIResponseESTestscaffolding { - - @Test(timeout = 4000) - public void test00() throws Throwable { - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse((ProtocolVersion) null, 0, "Uc"); - basicHttpResponse0.addHeader("Uc", "org.apache.http.entity.ContentType"); - APIResponse aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - assertEquals(0, aPIResponse0.getStatusCode()); - } - - @Test(timeout = 4000) - public void test01() throws Throwable { - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse((ProtocolVersion) null, 1471, "0fVXWr>"); - APIResponse aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - int int0 = aPIResponse0.getStatusCode(); - assertEquals(1471, int0); - } - - @Test(timeout = 4000) - public void test02() throws Throwable { - ProtocolVersion protocolVersion0 = mock(ProtocolVersion.class, new ViolatedAssumptionAnswer()); - StatusLine statusLine0 = mock(StatusLine.class, new ViolatedAssumptionAnswer()); - doReturn(protocolVersion0).when(statusLine0).getProtocolVersion(); - doReturn("Gi|Heay:?O.-PvSJFp").when(statusLine0).getReasonPhrase(); - doReturn((-1730834464), (-1730834464)).when(statusLine0).getStatusCode(); - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse(statusLine0); - APIResponse aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - int int0 = aPIResponse0.getStatusCode(); - assertEquals((-1730834464), int0); - } - - @Test(timeout = 4000) - public void test03() throws Throwable { - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse((ProtocolVersion) null, 1471, "0fVXWr>"); - byte[] byteArray0 = new byte[3]; - ByteArrayEntity byteArrayEntity0 = new ByteArrayEntity(byteArray0); - basicHttpResponse0.setEntity(byteArrayEntity0); - APIResponse aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - byte[] byteArray1 = aPIResponse0.getResponseBodyAsByteArray(); - assertFalse(byteArray1.equals((Object)byteArray0)); - } - - @Test(timeout = 4000) - public void test04() throws Throwable { - ProtocolVersion protocolVersion0 = new ProtocolVersion("", 548, 548); - BasicStatusLine basicStatusLine0 = new BasicStatusLine(protocolVersion0, 1196, " len: "); - EnglishReasonPhraseCatalog englishReasonPhraseCatalog0 = EnglishReasonPhraseCatalog.INSTANCE; - Locale locale0 = Locale.ITALY; - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse((StatusLine) basicStatusLine0, (ReasonPhraseCatalog) englishReasonPhraseCatalog0, locale0); - StringEntity stringEntity0 = new StringEntity(""); - basicHttpResponse0.setEntity(stringEntity0); - APIResponse aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - byte[] byteArray0 = aPIResponse0.getResponseBodyAsByteArray(); - assertArrayEquals(new byte[] {}, byteArray0); - } - - @Test(timeout = 4000) - public void test05() throws Throwable { - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse((ProtocolVersion) null, 0, "'"); - basicHttpResponse0.addHeader("'", "'"); - APIResponse aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - String string0 = aPIResponse0.getFirstHeader("'"); - assertEquals("'", string0); - } - - @Test(timeout = 4000) - public void test06() throws Throwable { - APIResponse aPIResponse0 = null; - try { - aPIResponse0 = new APIResponse((HttpResponse) null); - fail("Expecting exception: NullPointerException"); - - } catch(NullPointerException e) { - // - // no message in exception (getMessage() returned null) - // - verifyException("org.openecomp.mso.rest.APIResponse", e); - } - } - - @Test(timeout = 4000) - public void test07() throws Throwable { - ProtocolVersion protocolVersion0 = new ProtocolVersion("=", 1, 2); - BasicStatusLine basicStatusLine0 = new BasicStatusLine(protocolVersion0, 1, "="); - EnglishReasonPhraseCatalog englishReasonPhraseCatalog0 = EnglishReasonPhraseCatalog.INSTANCE; - Locale locale0 = Locale.UK; - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse((StatusLine) basicStatusLine0, (ReasonPhraseCatalog) englishReasonPhraseCatalog0, locale0); - basicHttpResponse0.setStatusLine(protocolVersion0, 1); - APIResponse aPIResponse0 = null; - try { - aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - fail("Expecting exception: IllegalArgumentException"); - - } catch(IllegalArgumentException e) { - // - // Unknown category for status code 1 - // - verifyException("org.apache.http.util.Args", e); - } - } - - @Test(timeout = 4000) - public void test08() throws Throwable { - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse((ProtocolVersion) null, 0, ""); - basicHttpResponse0.addHeader("", ""); - APIResponse aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - String string0 = aPIResponse0.getFirstHeader(",n6_`^Oyzn6YprnX"); - assertNull(string0); - } - - @Test(timeout = 4000) - public void test09() throws Throwable { - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse((ProtocolVersion) null, 0, ""); - basicHttpResponse0.addHeader("", ""); - APIResponse aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - String string0 = aPIResponse0.getFirstHeader(""); - assertEquals("", string0); - } - - @Test(timeout = 4000) - public void test10() throws Throwable { - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse((ProtocolVersion) null, 0, ""); - basicHttpResponse0.addHeader("", ""); - APIResponse aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - HttpHeader[] httpHeaderArray0 = aPIResponse0.getAllHeaders(); - assertNotNull(httpHeaderArray0); - } - - @Test(timeout = 4000) - public void test11() throws Throwable { - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse((ProtocolVersion) null, 1471, "0fVXWr>"); - APIResponse aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - HttpHeader[] httpHeaderArray0 = aPIResponse0.getAllHeaders(); - assertNotNull(httpHeaderArray0); - } - - @Test(timeout = 4000) - public void test12() throws Throwable { - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse((ProtocolVersion) null, 0, "c"); - APIResponse aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - String string0 = aPIResponse0.getResponseBodyAsString(); - assertEquals("", string0); - } - - @Test(timeout = 4000) - public void test13() throws Throwable { - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse((ProtocolVersion) null, 1471, "0fVXWr>"); - byte[] byteArray0 = new byte[3]; - ByteArrayEntity byteArrayEntity0 = new ByteArrayEntity(byteArray0); - basicHttpResponse0.setEntity(byteArrayEntity0); - APIResponse aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - String string0 = aPIResponse0.getResponseBodyAsString(); - assertEquals("\u0000\u0000\u0000", string0); - } - - @Test(timeout = 4000) - public void test14() throws Throwable { - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse((ProtocolVersion) null, 0, "c"); - basicHttpResponse0.addHeader("c", "c"); - APIResponse aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - aPIResponse0.getResponseBodyAsString(); - basicHttpResponse0.getStatusLine(); - aPIResponse0.getStatusCode(); - HttpHeader[] httpHeaderArray0 = new HttpHeader[2]; - HttpHeader httpHeader0 = mock(HttpHeader.class, new ViolatedAssumptionAnswer()); - doReturn((String) null).when(httpHeader0).getName(); - httpHeaderArray0[0] = httpHeader0; - HttpHeader httpHeader1 = mock(HttpHeader.class, new ViolatedAssumptionAnswer()); - httpHeaderArray0[1] = httpHeader1; - PrivateAccess.setVariable((Class<APIResponse>) APIResponse.class, aPIResponse0, "headers", (Object) httpHeaderArray0); - // Undeclared exception! - try { - aPIResponse0.getFirstHeader(""); - fail("Expecting exception: NullPointerException"); - - } catch(NullPointerException e) { - } - } - - @Test(timeout = 4000) - public void test15() throws Throwable { - BasicHttpResponse basicHttpResponse0 = new BasicHttpResponse((ProtocolVersion) null, 1471, "0fVXWr>"); - APIResponse aPIResponse0 = new APIResponse((HttpResponse) basicHttpResponse0); - byte[] byteArray0 = aPIResponse0.getResponseBodyAsByteArray(); - assertNull(byteArray0); - } -} diff --git a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/APIResponseESTestscaffolding.java b/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/APIResponseESTestscaffolding.java deleted file mode 100644 index 80915d74cf..0000000000 --- a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/APIResponseESTestscaffolding.java +++ /dev/null @@ -1,160 +0,0 @@ -/** - * Scaffolding file used to store all the setups needed to run - * tests automatically generated by EvoSuite - * Mon Nov 14 11:46:25 GMT 2016 - */ - -/*- - * ============LICENSE_START======================================================= - * OPENECOMP - MSO - * ================================================================================ - * 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.mso.rest; - -import org.evosuite.runtime.annotation.EvoSuiteClassExclude; -import org.junit.BeforeClass; -import org.junit.Before; -import org.junit.After; -import org.junit.AfterClass; -import org.evosuite.runtime.sandbox.Sandbox; - -@EvoSuiteClassExclude -public class APIResponseESTestscaffolding { - - @org.junit.Rule - public org.evosuite.runtime.vnet.NonFunctionalRequirementRule nfr = new org.evosuite.runtime.vnet.NonFunctionalRequirementRule(); - - private static final java.util.Properties defaultProperties = (java.util.Properties) java.lang.System.getProperties().clone(); - - private org.evosuite.runtime.thread.ThreadStopper threadStopper = new org.evosuite.runtime.thread.ThreadStopper (org.evosuite.runtime.thread.KillSwitchHandler.getInstance(), 3000); - - @BeforeClass - public static void initEvoSuiteFramework() { - org.evosuite.runtime.RuntimeSettings.className = "org.openecomp.mso.rest.APIResponse"; - org.evosuite.runtime.GuiSupport.initialize(); - org.evosuite.runtime.RuntimeSettings.maxNumberOfThreads = 100; - org.evosuite.runtime.RuntimeSettings.maxNumberOfIterationsPerLoop = 10000; - org.evosuite.runtime.RuntimeSettings.mockSystemIn = true; - org.evosuite.runtime.RuntimeSettings.sandboxMode = org.evosuite.runtime.sandbox.Sandbox.SandboxMode.RECOMMENDED; - org.evosuite.runtime.sandbox.Sandbox.initializeSecurityManagerForSUT(); - org.evosuite.runtime.classhandling.JDKClassResetter.init(); - initializeClasses(); - org.evosuite.runtime.Runtime.getInstance().resetRuntime(); - } - - @AfterClass - public static void clearEvoSuiteFramework(){ - Sandbox.resetDefaultSecurityManager(); - java.lang.System.setProperties((java.util.Properties) defaultProperties.clone()); - } - - @Before - public void initTestCase(){ - threadStopper.storeCurrentThreads(); - threadStopper.startRecordingTime(); - org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().initHandler(); - org.evosuite.runtime.sandbox.Sandbox.goingToExecuteSUTCode(); - - org.evosuite.runtime.GuiSupport.setHeadless(); - org.evosuite.runtime.Runtime.getInstance().resetRuntime(); - org.evosuite.runtime.agent.InstrumentingAgent.activate(); - } - - @After - public void doneWithTestCase(){ - threadStopper.killAndJoinClientThreads(); - org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().safeExecuteAddedHooks(); - org.evosuite.runtime.classhandling.JDKClassResetter.reset(); - resetClasses(); - org.evosuite.runtime.sandbox.Sandbox.doneWithExecutingSUTCode(); - org.evosuite.runtime.agent.InstrumentingAgent.deactivate(); - org.evosuite.runtime.GuiSupport.restoreHeadlessMode(); - } - - - private static void initializeClasses() { - org.evosuite.runtime.classhandling.ClassStateSupport.initializeClasses(APIResponseESTestscaffolding.class.getClassLoader() , - "org.apache.http.HttpVersion", - "org.apache.http.message.BasicNameValuePair", - "org.apache.http.message.HeaderGroup", - "org.apache.http.message.HeaderValueParser", - "org.apache.http.message.BasicStatusLine", - "org.apache.http.message.BasicHeaderValueParser", - "org.apache.http.message.BasicLineFormatter", - "org.apache.http.entity.ByteArrayEntity", - "org.apache.http.Header", - "org.apache.http.StatusLine", - "org.apache.http.util.EntityUtils", - "org.apache.http.message.BasicHttpResponse", - "org.apache.http.FormattedHeader", - "org.apache.http.RequestLine", - "org.apache.http.HttpMessage", - "org.apache.http.message.AbstractHttpMessage", - "org.apache.http.Consts", - "org.apache.http.protocol.HTTP", - "org.apache.http.util.ByteArrayBuffer", - "org.apache.http.ParseException", - "org.apache.http.HeaderIterator", - "org.apache.http.entity.AbstractHttpEntity", - "org.openecomp.mso.rest.RESTException", - "org.apache.http.util.Args", - "org.apache.http.ReasonPhraseCatalog", - "org.apache.http.HttpEntity", - "org.apache.http.entity.ContentType", - "org.apache.http.message.LineFormatter", - "org.apache.http.entity.StringEntity", - "org.openecomp.mso.rest.HttpHeader", - "org.apache.http.HeaderElement", - "org.apache.http.message.BufferedHeader", - "org.openecomp.mso.rest.APIResponse", - "org.apache.http.util.CharArrayBuffer", - "org.apache.http.ProtocolVersion", - "org.apache.http.util.TextUtils", - "org.apache.http.impl.EnglishReasonPhraseCatalog", - "org.apache.http.params.HttpParams", - "org.apache.http.message.BasicHeader", - "org.apache.http.HttpResponse", - "org.apache.http.NameValuePair", - "org.apache.http.message.ParserCursor" - ); - } - - private static void resetClasses() { - org.evosuite.runtime.classhandling.ClassResetter.getInstance().setClassLoader(APIResponseESTestscaffolding.class.getClassLoader()); - - org.evosuite.runtime.classhandling.ClassStateSupport.resetClasses( - "org.apache.http.message.HeaderGroup", - "org.apache.http.ProtocolVersion", - "org.apache.http.message.BasicStatusLine", - "org.apache.http.message.BasicLineFormatter", - "org.apache.http.util.CharArrayBuffer", - "org.apache.http.HttpVersion", - "org.apache.http.impl.EnglishReasonPhraseCatalog", - "org.apache.http.message.BasicHeader", - "org.apache.http.message.BasicHeaderValueParser", - "org.apache.http.Consts", - "org.apache.http.protocol.HTTP", - "org.apache.http.message.BasicNameValuePair", - "org.apache.http.message.BufferedHeader", - "org.apache.http.ParseException", - "org.apache.http.entity.AbstractHttpEntity", - "org.apache.http.util.ByteArrayBuffer", - "org.apache.http.entity.ContentType" - ); - } -} diff --git a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/HttpHeaderESTest.java b/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/HttpHeaderESTest.java deleted file mode 100644 index f0aeee0f99..0000000000 --- a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/HttpHeaderESTest.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * This file was automatically generated by EvoSuite - * Mon Nov 14 11:47:07 GMT 2016 - */ - -/*- - * ============LICENSE_START======================================================= - * OPENECOMP - MSO - * ================================================================================ - * 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.mso.rest; - -import org.junit.Test; -import static org.junit.Assert.*; -import static org.evosuite.runtime.EvoAssertions.*; - -import org.evosuite.runtime.EvoRunner; -import org.evosuite.runtime.EvoRunnerParameters; -import org.evosuite.runtime.PrivateAccess; -import org.junit.runner.RunWith; - -@RunWith(EvoRunner.class) @EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, useJEE = true) -public class HttpHeaderESTest extends HttpHeaderESTestscaffolding { - - @Test(timeout = 4000) - public void test0() throws Throwable { - HttpHeader httpHeader0 = new HttpHeader("Fw", "WD#>QF/v6_|_A"); - String string0 = httpHeader0.getValue(); - assertEquals("WD#>QF/v6_|_A", string0); - assertEquals("Fw", httpHeader0.getName()); - } - - @Test(timeout = 4000) - public void test1() throws Throwable { - HttpHeader httpHeader0 = new HttpHeader("", ""); - String string0 = httpHeader0.getValue(); - assertEquals("", string0); - } - - @Test(timeout = 4000) - public void test2() throws Throwable { - HttpHeader httpHeader0 = new HttpHeader("Nae may no be null.", "Nae may no be null."); - PrivateAccess.setVariable((Class<HttpHeader>) HttpHeader.class, httpHeader0, "name", (Object) null); - String string0 = httpHeader0.getName(); - assertNull(string0); - } - - @Test(timeout = 4000) - public void test3() throws Throwable { - HttpHeader httpHeader0 = new HttpHeader("", "EIqJp"); - String string0 = httpHeader0.getName(); - assertEquals("EIqJp", httpHeader0.getValue()); - assertEquals("", string0); - } - - @Test(timeout = 4000) - public void test4() throws Throwable { - HttpHeader httpHeader0 = null; - try { - httpHeader0 = new HttpHeader((String) null, (String) null); - fail("Expecting exception: IllegalArgumentException"); - - } catch(IllegalArgumentException e) { - // - // Name may not be null. - // - verifyException("org.openecomp.mso.rest.HttpHeader", e); - } - } - - @Test(timeout = 4000) - public void test5() throws Throwable { - HttpHeader httpHeader0 = new HttpHeader("Nae may no be null.", "Nae may no be null."); - String string0 = httpHeader0.getName(); - assertEquals("Nae may no be null.", string0); - } - - @Test(timeout = 4000) - public void test6() throws Throwable { - HttpHeader httpHeader0 = new HttpHeader("|SJ`pSz:BCB1o8~", (String) null); - String string0 = httpHeader0.getValue(); - assertNull(string0); - } -} diff --git a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/HttpHeaderESTestscaffolding.java b/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/HttpHeaderESTestscaffolding.java deleted file mode 100644 index 0438c1fba6..0000000000 --- a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/HttpHeaderESTestscaffolding.java +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Scaffolding file used to store all the setups needed to run - * tests automatically generated by EvoSuite - * Mon Nov 14 11:47:07 GMT 2016 - */ - -/*- - * ============LICENSE_START======================================================= - * OPENECOMP - MSO - * ================================================================================ - * 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.mso.rest; - -import org.evosuite.runtime.annotation.EvoSuiteClassExclude; -import org.junit.BeforeClass; -import org.junit.Before; -import org.junit.After; -import org.junit.AfterClass; -import org.evosuite.runtime.sandbox.Sandbox; - -@EvoSuiteClassExclude -public class HttpHeaderESTestscaffolding { - - @org.junit.Rule - public org.evosuite.runtime.vnet.NonFunctionalRequirementRule nfr = new org.evosuite.runtime.vnet.NonFunctionalRequirementRule(); - - private static final java.util.Properties defaultProperties = (java.util.Properties) java.lang.System.getProperties().clone(); - - private org.evosuite.runtime.thread.ThreadStopper threadStopper = new org.evosuite.runtime.thread.ThreadStopper (org.evosuite.runtime.thread.KillSwitchHandler.getInstance(), 3000); - - @BeforeClass - public static void initEvoSuiteFramework() { - org.evosuite.runtime.RuntimeSettings.className = "org.openecomp.mso.rest.HttpHeader"; - org.evosuite.runtime.GuiSupport.initialize(); - org.evosuite.runtime.RuntimeSettings.maxNumberOfThreads = 100; - org.evosuite.runtime.RuntimeSettings.maxNumberOfIterationsPerLoop = 10000; - org.evosuite.runtime.RuntimeSettings.mockSystemIn = true; - org.evosuite.runtime.RuntimeSettings.sandboxMode = org.evosuite.runtime.sandbox.Sandbox.SandboxMode.RECOMMENDED; - org.evosuite.runtime.sandbox.Sandbox.initializeSecurityManagerForSUT(); - org.evosuite.runtime.classhandling.JDKClassResetter.init(); - initializeClasses(); - org.evosuite.runtime.Runtime.getInstance().resetRuntime(); - } - - @AfterClass - public static void clearEvoSuiteFramework(){ - Sandbox.resetDefaultSecurityManager(); - java.lang.System.setProperties((java.util.Properties) defaultProperties.clone()); - } - - @Before - public void initTestCase(){ - threadStopper.storeCurrentThreads(); - threadStopper.startRecordingTime(); - org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().initHandler(); - org.evosuite.runtime.sandbox.Sandbox.goingToExecuteSUTCode(); - - org.evosuite.runtime.GuiSupport.setHeadless(); - org.evosuite.runtime.Runtime.getInstance().resetRuntime(); - org.evosuite.runtime.agent.InstrumentingAgent.activate(); - } - - @After - public void doneWithTestCase(){ - threadStopper.killAndJoinClientThreads(); - org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().safeExecuteAddedHooks(); - org.evosuite.runtime.classhandling.JDKClassResetter.reset(); - resetClasses(); - org.evosuite.runtime.sandbox.Sandbox.doneWithExecutingSUTCode(); - org.evosuite.runtime.agent.InstrumentingAgent.deactivate(); - org.evosuite.runtime.GuiSupport.restoreHeadlessMode(); - } - - - private static void initializeClasses() { - org.evosuite.runtime.classhandling.ClassStateSupport.initializeClasses(HttpHeaderESTestscaffolding.class.getClassLoader() , - "org.openecomp.mso.rest.HttpHeader" - ); - } - - private static void resetClasses() { - } -} diff --git a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/RESTConfigESTest.java b/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/RESTConfigESTest.java deleted file mode 100644 index bb7460dfc6..0000000000 --- a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/RESTConfigESTest.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * This file was automatically generated by EvoSuite - * Mon Nov 14 11:47:42 GMT 2016 - */ - -/*- - * ============LICENSE_START======================================================= - * OPENECOMP - MSO - * ================================================================================ - * 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.mso.rest; - -import org.junit.Test; -import static org.junit.Assert.*; - -import org.evosuite.runtime.EvoRunner; -import org.evosuite.runtime.EvoRunnerParameters; -import org.junit.runner.RunWith; - -@RunWith(EvoRunner.class) @EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, useJEE = true) -public class RESTConfigESTest extends RESTConfigESTestscaffolding { - - @Test(timeout = 4000) - public void test00() throws Throwable { - RESTConfig rESTConfig0 = new RESTConfig((String) null, "", (-3449)); - String string0 = rESTConfig0.getURL(); - assertEquals(-3449, rESTConfig0.getProxyPort()); - assertNull(string0); - assertFalse(rESTConfig0.trustAllCerts()); - } - - @Test(timeout = 4000) - public void test01() throws Throwable { - RESTConfig rESTConfig0 = new RESTConfig(";A,GC~!-_.>+R=>rIO", "", (-3449), false); - String string0 = rESTConfig0.getURL(); - assertEquals("", rESTConfig0.getProxyHost()); - assertEquals(-3449, rESTConfig0.getProxyPort()); - assertFalse(rESTConfig0.trustAllCerts()); - assertEquals(";A,GC~!-_.>+R=>rIO", string0); - } - - @Test(timeout = 4000) - public void test02() throws Throwable { - RESTConfig rESTConfig0 = new RESTConfig("", "", 0); - int int0 = rESTConfig0.getProxyPort(); - assertFalse(rESTConfig0.trustAllCerts()); - assertEquals(0, int0); - } - - @Test(timeout = 4000) - public void test03() throws Throwable { - RESTConfig rESTConfig0 = new RESTConfig((String) null); - int int0 = rESTConfig0.getProxyPort(); - assertEquals((-1), int0); - assertFalse(rESTConfig0.trustAllCerts()); - } - - @Test(timeout = 4000) - public void test04() throws Throwable { - RESTConfig rESTConfig0 = new RESTConfig((String) null, "zZu8", (-1933), true); - String string0 = rESTConfig0.getProxyHost(); - assertEquals(-1933, rESTConfig0.getProxyPort()); - assertTrue(rESTConfig0.trustAllCerts()); - assertNotNull(string0); - } - - @Test(timeout = 4000) - public void test05() throws Throwable { - RESTConfig rESTConfig0 = new RESTConfig("", "", 2708, true); - boolean boolean0 = rESTConfig0.trustAllCerts(); - assertTrue(boolean0); - assertEquals(2708, rESTConfig0.getProxyPort()); - } - - @Test(timeout = 4000) - public void test06() throws Throwable { - RESTConfig rESTConfig0 = new RESTConfig("", "", 2708, true); - rESTConfig0.getURL(); - assertTrue(rESTConfig0.trustAllCerts()); - assertEquals(2708, rESTConfig0.getProxyPort()); - } - - @Test(timeout = 4000) - public void test07() throws Throwable { - RESTConfig rESTConfig0 = new RESTConfig("", true); - String string0 = rESTConfig0.getProxyHost(); - assertTrue(rESTConfig0.trustAllCerts()); - assertNull(string0); - assertEquals(-1, rESTConfig0.getProxyPort()); - } - - @Test(timeout = 4000) - public void test08() throws Throwable { - RESTConfig rESTConfig0 = new RESTConfig("", "", 2708, true); - int int0 = rESTConfig0.getProxyPort(); - assertEquals(2708, int0); - assertTrue(rESTConfig0.trustAllCerts()); - } - - @Test(timeout = 4000) - public void test09() throws Throwable { - RESTConfig rESTConfig0 = new RESTConfig("", "", 2708, true); - rESTConfig0.getProxyHost(); - assertEquals(2708, rESTConfig0.getProxyPort()); - assertTrue(rESTConfig0.trustAllCerts()); - } - - @Test(timeout = 4000) - public void test10() throws Throwable { - RESTConfig rESTConfig0 = new RESTConfig(""); - boolean boolean0 = rESTConfig0.trustAllCerts(); - assertEquals(-1, rESTConfig0.getProxyPort()); - assertFalse(boolean0); - } -} diff --git a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/RESTConfigESTestscaffolding.java b/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/RESTConfigESTestscaffolding.java deleted file mode 100644 index 1fabc6bc5d..0000000000 --- a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/RESTConfigESTestscaffolding.java +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Scaffolding file used to store all the setups needed to run - * tests automatically generated by EvoSuite - * Mon Nov 14 11:47:42 GMT 2016 - */ - -/*- - * ============LICENSE_START======================================================= - * OPENECOMP - MSO - * ================================================================================ - * 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.mso.rest; - -import org.evosuite.runtime.annotation.EvoSuiteClassExclude; -import org.junit.BeforeClass; -import org.junit.Before; -import org.junit.After; -import org.junit.AfterClass; -import org.evosuite.runtime.sandbox.Sandbox; - -@EvoSuiteClassExclude -public class RESTConfigESTestscaffolding { - - @org.junit.Rule - public org.evosuite.runtime.vnet.NonFunctionalRequirementRule nfr = new org.evosuite.runtime.vnet.NonFunctionalRequirementRule(); - - private static final java.util.Properties defaultProperties = (java.util.Properties) java.lang.System.getProperties().clone(); - - private org.evosuite.runtime.thread.ThreadStopper threadStopper = new org.evosuite.runtime.thread.ThreadStopper (org.evosuite.runtime.thread.KillSwitchHandler.getInstance(), 3000); - - @BeforeClass - public static void initEvoSuiteFramework() { - org.evosuite.runtime.RuntimeSettings.className = "org.openecomp.mso.rest.RESTConfig"; - org.evosuite.runtime.GuiSupport.initialize(); - org.evosuite.runtime.RuntimeSettings.maxNumberOfThreads = 100; - org.evosuite.runtime.RuntimeSettings.maxNumberOfIterationsPerLoop = 10000; - org.evosuite.runtime.RuntimeSettings.mockSystemIn = true; - org.evosuite.runtime.RuntimeSettings.sandboxMode = org.evosuite.runtime.sandbox.Sandbox.SandboxMode.RECOMMENDED; - org.evosuite.runtime.sandbox.Sandbox.initializeSecurityManagerForSUT(); - org.evosuite.runtime.classhandling.JDKClassResetter.init(); - initializeClasses(); - org.evosuite.runtime.Runtime.getInstance().resetRuntime(); - } - - @AfterClass - public static void clearEvoSuiteFramework(){ - Sandbox.resetDefaultSecurityManager(); - java.lang.System.setProperties((java.util.Properties) defaultProperties.clone()); - } - - @Before - public void initTestCase(){ - threadStopper.storeCurrentThreads(); - threadStopper.startRecordingTime(); - org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().initHandler(); - org.evosuite.runtime.sandbox.Sandbox.goingToExecuteSUTCode(); - - org.evosuite.runtime.GuiSupport.setHeadless(); - org.evosuite.runtime.Runtime.getInstance().resetRuntime(); - org.evosuite.runtime.agent.InstrumentingAgent.activate(); - } - - @After - public void doneWithTestCase(){ - threadStopper.killAndJoinClientThreads(); - org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().safeExecuteAddedHooks(); - org.evosuite.runtime.classhandling.JDKClassResetter.reset(); - resetClasses(); - org.evosuite.runtime.sandbox.Sandbox.doneWithExecutingSUTCode(); - org.evosuite.runtime.agent.InstrumentingAgent.deactivate(); - org.evosuite.runtime.GuiSupport.restoreHeadlessMode(); - } - - - private static void initializeClasses() { - org.evosuite.runtime.classhandling.ClassStateSupport.initializeClasses(RESTConfigESTestscaffolding.class.getClassLoader() , - "org.openecomp.mso.rest.RESTConfig" - ); - } - - private static void resetClasses() { - } -} diff --git a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/RESTExceptionESTest.java b/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/RESTExceptionESTest.java deleted file mode 100644 index e4ac23b3bd..0000000000 --- a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/RESTExceptionESTest.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * This file was automatically generated by EvoSuite - * Mon Nov 14 11:47:59 GMT 2016 - */ - -/*- - * ============LICENSE_START======================================================= - * OPENECOMP - MSO - * ================================================================================ - * 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.mso.rest; - -import org.junit.Test; -import static org.junit.Assert.*; -import static org.evosuite.runtime.EvoAssertions.*; - -import org.evosuite.runtime.EvoRunner; -import org.evosuite.runtime.EvoRunnerParameters; -import org.evosuite.runtime.mock.java.lang.MockThrowable; -import org.junit.runner.RunWith; - -@RunWith(EvoRunner.class) @EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, useJEE = true) -public class RESTExceptionESTest extends RESTExceptionESTestscaffolding { - - @Test(timeout = 4000) - public void test0() throws Throwable { - RESTException rESTException0 = new RESTException(0, (String) null); - int int0 = rESTException0.getStatusCode(); - assertEquals(0, int0); - } - - @Test(timeout = 4000) - public void test1() throws Throwable { - RESTException rESTException0 = new RESTException(1619, ""); - int int0 = rESTException0.getStatusCode(); - assertEquals(1619, int0); - } - - @Test(timeout = 4000) - public void test2() throws Throwable { - RESTException rESTException0 = new RESTException(""); - String string0 = rESTException0.getErrorMessage(); - assertEquals("", string0); - } - - @Test(timeout = 4000) - public void test3() throws Throwable { - RESTException rESTException0 = null; - try { - rESTException0 = new RESTException((Throwable) null); - fail("Expecting exception: NullPointerException"); - - } catch(NullPointerException e) { - // - // no message in exception (getMessage() returned null) - // - verifyException("org.openecomp.mso.rest.RESTException", e); - } - } - - @Test(timeout = 4000) - public void test4() throws Throwable { - RESTException rESTException0 = new RESTException((-489), "org.evosuite.runtime.mock.java.lang.MockThrowable: org.evosuite.runtime.mock.java.lang.MockThrowable"); - String string0 = rESTException0.getErrorMessage(); - assertEquals("org.evosuite.runtime.mock.java.lang.MockThrowable: org.evosuite.runtime.mock.java.lang.MockThrowable", string0); - } - - @Test(timeout = 4000) - public void test5() throws Throwable { - MockThrowable mockThrowable0 = new MockThrowable(); - RESTException rESTException0 = new RESTException((Throwable) mockThrowable0); - int int0 = rESTException0.getStatusCode(); - assertEquals((-1), int0); - } - - @Test(timeout = 4000) - public void test6() throws Throwable { - MockThrowable mockThrowable0 = new MockThrowable(); - RESTException rESTException0 = new RESTException((Throwable) mockThrowable0); - String string0 = rESTException0.getErrorMessage(); - assertNull(string0); - } -} diff --git a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/RESTExceptionESTestscaffolding.java b/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/RESTExceptionESTestscaffolding.java deleted file mode 100644 index 3e3c9873b7..0000000000 --- a/bpmn/MSORESTClient/src/test/java/org/openecomp/mso/rest/RESTExceptionESTestscaffolding.java +++ /dev/null @@ -1,103 +0,0 @@ -/** - * Scaffolding file used to store all the setups needed to run - * tests automatically generated by EvoSuite - * Mon Nov 14 11:47:59 GMT 2016 - */ - -/*- - * ============LICENSE_START======================================================= - * OPENECOMP - MSO - * ================================================================================ - * 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.mso.rest; - -import org.evosuite.runtime.annotation.EvoSuiteClassExclude; -import org.junit.BeforeClass; -import org.junit.Before; -import org.junit.After; -import org.junit.AfterClass; -import org.evosuite.runtime.sandbox.Sandbox; - -@EvoSuiteClassExclude -public class RESTExceptionESTestscaffolding { - - @org.junit.Rule - public org.evosuite.runtime.vnet.NonFunctionalRequirementRule nfr = new org.evosuite.runtime.vnet.NonFunctionalRequirementRule(); - - private static final java.util.Properties defaultProperties = (java.util.Properties) java.lang.System.getProperties().clone(); - - private org.evosuite.runtime.thread.ThreadStopper threadStopper = new org.evosuite.runtime.thread.ThreadStopper (org.evosuite.runtime.thread.KillSwitchHandler.getInstance(), 3000); - - @BeforeClass - public static void initEvoSuiteFramework() { - org.evosuite.runtime.RuntimeSettings.className = "org.openecomp.mso.rest.RESTException"; - org.evosuite.runtime.GuiSupport.initialize(); - org.evosuite.runtime.RuntimeSettings.maxNumberOfThreads = 100; - org.evosuite.runtime.RuntimeSettings.maxNumberOfIterationsPerLoop = 10000; - org.evosuite.runtime.RuntimeSettings.mockSystemIn = true; - org.evosuite.runtime.RuntimeSettings.sandboxMode = org.evosuite.runtime.sandbox.Sandbox.SandboxMode.RECOMMENDED; - org.evosuite.runtime.sandbox.Sandbox.initializeSecurityManagerForSUT(); - org.evosuite.runtime.classhandling.JDKClassResetter.init(); - initializeClasses(); - org.evosuite.runtime.Runtime.getInstance().resetRuntime(); - } - - @AfterClass - public static void clearEvoSuiteFramework(){ - Sandbox.resetDefaultSecurityManager(); - java.lang.System.setProperties((java.util.Properties) defaultProperties.clone()); - } - - @Before - public void initTestCase(){ - threadStopper.storeCurrentThreads(); - threadStopper.startRecordingTime(); - org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().initHandler(); - org.evosuite.runtime.sandbox.Sandbox.goingToExecuteSUTCode(); - - org.evosuite.runtime.GuiSupport.setHeadless(); - org.evosuite.runtime.Runtime.getInstance().resetRuntime(); - org.evosuite.runtime.agent.InstrumentingAgent.activate(); - } - - @After - public void doneWithTestCase(){ - threadStopper.killAndJoinClientThreads(); - org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().safeExecuteAddedHooks(); - org.evosuite.runtime.classhandling.JDKClassResetter.reset(); - resetClasses(); - org.evosuite.runtime.sandbox.Sandbox.doneWithExecutingSUTCode(); - org.evosuite.runtime.agent.InstrumentingAgent.deactivate(); - org.evosuite.runtime.GuiSupport.restoreHeadlessMode(); - } - - - private static void initializeClasses() { - org.evosuite.runtime.classhandling.ClassStateSupport.initializeClasses(RESTExceptionESTestscaffolding.class.getClassLoader() , - "org.openecomp.mso.rest.RESTException" - ); - } - - private static void resetClasses() { - org.evosuite.runtime.classhandling.ClassResetter.getInstance().setClassLoader(RESTExceptionESTestscaffolding.class.getClassLoader()); - - org.evosuite.runtime.classhandling.ClassStateSupport.resetClasses( - "org.openecomp.mso.rest.RESTException" - ); - } -} diff --git a/bpmn/MSOURN-plugin/pom.xml b/bpmn/MSOURN-plugin/pom.xml index a8b198de58..40dcd1f666 100644 --- a/bpmn/MSOURN-plugin/pom.xml +++ b/bpmn/MSOURN-plugin/pom.xml @@ -61,11 +61,5 @@ <version>${project.version}</version>
<scope>compile</scope>
</dependency>
- <dependency>
- <groupId>org.evosuite</groupId>
- <artifactId>evosuite-standalone-runtime</artifactId>
- <version>${evosuiteVersion}</version>
- <scope>test</scope>
- </dependency>
</dependencies>
-</project>
\ No newline at end of file +</project>
diff --git a/bpmn/MSOURN-plugin/src/main/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNResource.java b/bpmn/MSOURN-plugin/src/main/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNResource.java index 5ef77eec40..1a4c16dc7a 100644 --- a/bpmn/MSOURN-plugin/src/main/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNResource.java +++ b/bpmn/MSOURN-plugin/src/main/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNResource.java @@ -82,21 +82,21 @@ public class URNResource extends AbstractCockpitPluginResource{ } catch (Exception e)
{
- msoLogger.debug("Exception in getUrnDataMap " + e);
+ msoLogger.debug("Exception in getUrnDataMap ", e);
} finally {
if(psData != null){
try {
psData.close();
conn.close();
} catch (SQLException e) {
- msoLogger.debug("Exception while closing the PreparedStatement: " + e);
+ msoLogger.debug("Exception while closing the PreparedStatement: ", e);
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
- msoLogger.debug("Exception while closing the connection: " + e);
+ msoLogger.debug("Exception while closing the connection: ", e);
}
}
}
@@ -143,7 +143,7 @@ public class URNResource extends AbstractCockpitPluginResource{ } catch (Exception e)
{
- msoLogger.debug("Exception in DBConnection " + e);
+ msoLogger.debug("Exception in DBConnection ", e);
}
return conn;
@@ -183,21 +183,21 @@ public class URNResource extends AbstractCockpitPluginResource{ } catch (Exception e)
{
- msoLogger.debug("Exception in insertNewRow " + e);
+ msoLogger.debug("Exception in insertNewRow ", e);
}finally {
if(psData != null){
try {
psData.close();
conn.close();
} catch (SQLException e) {
- msoLogger.debug("Exception while closing the PreparedStatement: " + e);
+ msoLogger.debug("Exception while closing the PreparedStatement: ", e);
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
- msoLogger.debug("Exception while closing the connection: " + e);
+ msoLogger.debug("Exception while closing the connection: ", e);
}
}
}
@@ -219,21 +219,21 @@ public class URNResource extends AbstractCockpitPluginResource{ } catch (Exception e)
{
- msoLogger.debug("Exception in PersistData " + e);
+ msoLogger.debug("Exception in PersistData ", e);
}finally {
if(psData != null){
try {
psData.close();
conn.close();
} catch (SQLException e) {
- msoLogger.debug("Exception while closing the PreparedStatement: " + e);
+ msoLogger.debug("Exception while closing the PreparedStatement: ", e);
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
- msoLogger.debug("Exception while closing the connection: " + e);
+ msoLogger.debug("Exception while closing the connection: ", e);
}
}
}
diff --git a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/URNMapPluginESTest.java b/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/URNMapPluginESTest.java deleted file mode 100644 index e8d1af566a..0000000000 --- a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/URNMapPluginESTest.java +++ /dev/null @@ -1,43 +0,0 @@ -/*
- * This file was automatically generated by EvoSuite
- * Mon Nov 14 13:49:02 GMT 2016
- */
-
-package org.openecomp.camunda.bpmn.plugin.urnmap;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-import java.util.List;
-import java.util.Set;
-
-import org.evosuite.runtime.EvoRunner;
-import org.evosuite.runtime.EvoRunnerParameters;
-import org.junit.runner.RunWith;
-import org.openecomp.camunda.bpmn.plugin.urnmap.URNMapPlugin;
-
-@RunWith(EvoRunner.class) @EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, useJEE = true)
-public class URNMapPluginESTest extends URNMapPluginESTestscaffolding {
-
- @Test(timeout = 4000)
- public void test0() throws Throwable {
- URNMapPlugin uRNMapPlugin0 = new URNMapPlugin();
- Set<Class<?>> set0 = uRNMapPlugin0.getResourceClasses();
- assertFalse(set0.isEmpty());
- }
-
- @Test(timeout = 4000)
- public void test1() throws Throwable {
- URNMapPlugin uRNMapPlugin0 = new URNMapPlugin();
- String string0 = uRNMapPlugin0.getId();
- assertEquals("urnMap-plugin", string0);
- }
-
- @Test(timeout = 4000)
- public void test2() throws Throwable {
- URNMapPlugin uRNMapPlugin0 = new URNMapPlugin();
- List<String> list0 = uRNMapPlugin0.getMappingFiles();
- assertEquals(1, list0.size());
- }
-}
diff --git a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/URNMapPluginESTestscaffolding.java b/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/URNMapPluginESTestscaffolding.java deleted file mode 100644 index 8a24352bd4..0000000000 --- a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/URNMapPluginESTestscaffolding.java +++ /dev/null @@ -1,91 +0,0 @@ -/**
- * Scaffolding file used to store all the setups needed to run
- * tests automatically generated by EvoSuite
- * Mon Nov 14 13:49:02 GMT 2016
- */
-
-package org.openecomp.camunda.bpmn.plugin.urnmap;
-
-import org.evosuite.runtime.annotation.EvoSuiteClassExclude;
-import org.junit.BeforeClass;
-import org.junit.Before;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.evosuite.runtime.sandbox.Sandbox;
-
-@EvoSuiteClassExclude
-public class URNMapPluginESTestscaffolding {
-
- @org.junit.Rule
- public org.evosuite.runtime.vnet.NonFunctionalRequirementRule nfr = new org.evosuite.runtime.vnet.NonFunctionalRequirementRule();
-
- private static final java.util.Properties defaultProperties = (java.util.Properties) java.lang.System.getProperties().clone();
-
- private org.evosuite.runtime.thread.ThreadStopper threadStopper = new org.evosuite.runtime.thread.ThreadStopper (org.evosuite.runtime.thread.KillSwitchHandler.getInstance(), 3000);
-
- @BeforeClass
- public static void initEvoSuiteFramework() {
- org.evosuite.runtime.RuntimeSettings.className = "org.openecomp.camunda.bpmn.plugin.urnmap.URNMapPlugin";
- org.evosuite.runtime.GuiSupport.initialize();
- org.evosuite.runtime.RuntimeSettings.maxNumberOfThreads = 100;
- org.evosuite.runtime.RuntimeSettings.maxNumberOfIterationsPerLoop = 10000;
- org.evosuite.runtime.RuntimeSettings.mockSystemIn = true;
- org.evosuite.runtime.RuntimeSettings.sandboxMode = org.evosuite.runtime.sandbox.Sandbox.SandboxMode.RECOMMENDED;
- org.evosuite.runtime.sandbox.Sandbox.initializeSecurityManagerForSUT();
- org.evosuite.runtime.classhandling.JDKClassResetter.init();
- initializeClasses();
- org.evosuite.runtime.Runtime.getInstance().resetRuntime();
- }
-
- @AfterClass
- public static void clearEvoSuiteFramework(){
- Sandbox.resetDefaultSecurityManager();
- java.lang.System.setProperties((java.util.Properties) defaultProperties.clone());
- }
-
- @Before
- public void initTestCase(){
- threadStopper.storeCurrentThreads();
- threadStopper.startRecordingTime();
- org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().initHandler();
- org.evosuite.runtime.sandbox.Sandbox.goingToExecuteSUTCode();
-
- org.evosuite.runtime.GuiSupport.setHeadless();
- org.evosuite.runtime.Runtime.getInstance().resetRuntime();
- org.evosuite.runtime.agent.InstrumentingAgent.activate();
- }
-
- @After
- public void doneWithTestCase(){
- threadStopper.killAndJoinClientThreads();
- org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().safeExecuteAddedHooks();
- org.evosuite.runtime.classhandling.JDKClassResetter.reset();
- resetClasses();
- org.evosuite.runtime.sandbox.Sandbox.doneWithExecutingSUTCode();
- org.evosuite.runtime.agent.InstrumentingAgent.deactivate();
- org.evosuite.runtime.GuiSupport.restoreHeadlessMode();
- }
-
-
- private static void initializeClasses() {
- org.evosuite.runtime.classhandling.ClassStateSupport.initializeClasses(URNMapPluginESTestscaffolding.class.getClassLoader() ,
- "org.camunda.bpm.webapp.plugin.spi.impl.AbstractAppPlugin",
- "org.camunda.bpm.webapp.plugin.spi.AppPlugin",
- "org.camunda.bpm.cockpit.plugin.resource.AbstractPluginRootResource",
- "org.camunda.bpm.cockpit.plugin.spi.impl.AbstractCockpitPlugin",
- "org.camunda.bpm.webapp.plugin.resource.AbstractAppPluginRootResource",
- "org.camunda.bpm.cockpit.plugin.spi.CockpitPlugin",
- "org.openecomp.camunda.bpmn.plugin.urnmap.resources.URNMapPluginRootResource",
- "org.camunda.bpm.cockpit.plugin.resource.AbstractCockpitPluginRootResource",
- "org.openecomp.camunda.bpmn.plugin.urnmap.URNMapPlugin"
- );
- }
-
- private static void resetClasses() {
- org.evosuite.runtime.classhandling.ClassResetter.getInstance().setClassLoader(URNMapPluginESTestscaffolding.class.getClassLoader());
-
- org.evosuite.runtime.classhandling.ClassStateSupport.resetClasses(
- "org.openecomp.camunda.bpmn.plugin.urnmap.URNMapPlugin"
- );
- }
-}
diff --git a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/db/URNDataESTest.java b/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/db/URNDataESTest.java deleted file mode 100644 index dedd6b37fc..0000000000 --- a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/db/URNDataESTest.java +++ /dev/null @@ -1,88 +0,0 @@ -/*
- * This file was automatically generated by EvoSuite
- * Mon Nov 14 13:48:50 GMT 2016
- */
-
-package org.openecomp.camunda.bpmn.plugin.urnmap.db;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-import org.evosuite.runtime.EvoRunner;
-import org.evosuite.runtime.EvoRunnerParameters;
-import org.junit.runner.RunWith;
-import org.openecomp.camunda.bpmn.plugin.urnmap.db.URNData;
-
-@RunWith(EvoRunner.class) @EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, useJEE = true)
-public class URNDataESTest extends URNDataESTestscaffolding {
-
- @Test(timeout = 4000)
- public void test0() throws Throwable {
- URNData uRNData0 = new URNData();
- uRNData0.setVer_("yE)");
- String string0 = uRNData0.getVer_();
- assertEquals("yE)", string0);
- }
-
- @Test(timeout = 4000)
- public void test1() throws Throwable {
- URNData uRNData0 = new URNData();
- uRNData0.setURNValue("Dw]M@,~.D");
- String string0 = uRNData0.getURNValue();
- assertEquals("Dw]M@,~.D", string0);
- }
-
- @Test(timeout = 4000)
- public void test2() throws Throwable {
- URNData uRNData0 = new URNData();
- uRNData0.setURNName("");
- String string0 = uRNData0.getURNName();
- assertEquals("", string0);
- }
-
- @Test(timeout = 4000)
- public void test3() throws Throwable {
- URNData uRNData0 = new URNData();
- String string0 = uRNData0.getVer_();
- assertNull(string0);
- }
-
- @Test(timeout = 4000)
- public void test4() throws Throwable {
- URNData uRNData0 = new URNData();
- String string0 = uRNData0.getURNValue();
- assertNull(string0);
- }
-
- @Test(timeout = 4000)
- public void test5() throws Throwable {
- URNData uRNData0 = new URNData();
- String string0 = uRNData0.getURNName();
- assertNull(string0);
- }
-
- @Test(timeout = 4000)
- public void test6() throws Throwable {
- URNData uRNData0 = new URNData();
- uRNData0.setURNValue("");
- String string0 = uRNData0.getURNValue();
- assertEquals("", string0);
- }
-
- @Test(timeout = 4000)
- public void test7() throws Throwable {
- URNData uRNData0 = new URNData();
- uRNData0.setVer_("");
- String string0 = uRNData0.getVer_();
- assertEquals("", string0);
- }
-
- @Test(timeout = 4000)
- public void test8() throws Throwable {
- URNData uRNData0 = new URNData();
- uRNData0.setURNName("2Gv9h[mmV=,z\"VSY`t)");
- String string0 = uRNData0.getURNName();
- assertEquals("2Gv9h[mmV=,z\"VSY`t)", string0);
- }
-}
diff --git a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/db/URNDataESTestscaffolding.java b/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/db/URNDataESTestscaffolding.java deleted file mode 100644 index eef0d9b0aa..0000000000 --- a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/db/URNDataESTestscaffolding.java +++ /dev/null @@ -1,78 +0,0 @@ -/**
- * Scaffolding file used to store all the setups needed to run
- * tests automatically generated by EvoSuite
- * Mon Nov 14 13:48:50 GMT 2016
- */
-
-package org.openecomp.camunda.bpmn.plugin.urnmap.db;
-
-import org.evosuite.runtime.annotation.EvoSuiteClassExclude;
-import org.junit.BeforeClass;
-import org.junit.Before;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.evosuite.runtime.sandbox.Sandbox;
-
-@EvoSuiteClassExclude
-public class URNDataESTestscaffolding {
-
- @org.junit.Rule
- public org.evosuite.runtime.vnet.NonFunctionalRequirementRule nfr = new org.evosuite.runtime.vnet.NonFunctionalRequirementRule();
-
- private static final java.util.Properties defaultProperties = (java.util.Properties) java.lang.System.getProperties().clone();
-
- private org.evosuite.runtime.thread.ThreadStopper threadStopper = new org.evosuite.runtime.thread.ThreadStopper (org.evosuite.runtime.thread.KillSwitchHandler.getInstance(), 3000);
-
- @BeforeClass
- public static void initEvoSuiteFramework() {
- org.evosuite.runtime.RuntimeSettings.className = "org.openecomp.camunda.bpmn.plugin.urnmap.db.URNData";
- org.evosuite.runtime.GuiSupport.initialize();
- org.evosuite.runtime.RuntimeSettings.maxNumberOfThreads = 100;
- org.evosuite.runtime.RuntimeSettings.maxNumberOfIterationsPerLoop = 10000;
- org.evosuite.runtime.RuntimeSettings.mockSystemIn = true;
- org.evosuite.runtime.RuntimeSettings.sandboxMode = org.evosuite.runtime.sandbox.Sandbox.SandboxMode.RECOMMENDED;
- org.evosuite.runtime.sandbox.Sandbox.initializeSecurityManagerForSUT();
- org.evosuite.runtime.classhandling.JDKClassResetter.init();
- initializeClasses();
- org.evosuite.runtime.Runtime.getInstance().resetRuntime();
- }
-
- @AfterClass
- public static void clearEvoSuiteFramework(){
- Sandbox.resetDefaultSecurityManager();
- java.lang.System.setProperties((java.util.Properties) defaultProperties.clone());
- }
-
- @Before
- public void initTestCase(){
- threadStopper.storeCurrentThreads();
- threadStopper.startRecordingTime();
- org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().initHandler();
- org.evosuite.runtime.sandbox.Sandbox.goingToExecuteSUTCode();
-
- org.evosuite.runtime.GuiSupport.setHeadless();
- org.evosuite.runtime.Runtime.getInstance().resetRuntime();
- org.evosuite.runtime.agent.InstrumentingAgent.activate();
- }
-
- @After
- public void doneWithTestCase(){
- threadStopper.killAndJoinClientThreads();
- org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().safeExecuteAddedHooks();
- org.evosuite.runtime.classhandling.JDKClassResetter.reset();
- resetClasses();
- org.evosuite.runtime.sandbox.Sandbox.doneWithExecutingSUTCode();
- org.evosuite.runtime.agent.InstrumentingAgent.deactivate();
- org.evosuite.runtime.GuiSupport.restoreHeadlessMode();
- }
-
-
- private static void initializeClasses() {
- org.evosuite.runtime.classhandling.ClassStateSupport.initializeClasses(URNDataESTestscaffolding.class.getClassLoader() ,
- "org.openecomp.camunda.bpmn.plugin.urnmap.db.URNData"
- );
- }
-
- private static void resetClasses() {
- }
-}
diff --git a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/db/URNServiceESTest.java b/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/db/URNServiceESTest.java deleted file mode 100644 index b79468cfd0..0000000000 --- a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/db/URNServiceESTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/*
- * This file was automatically generated by EvoSuite
- * Mon Nov 14 13:47:07 GMT 2016
- */
-
-package org.openecomp.camunda.bpmn.plugin.urnmap.db;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-import static org.evosuite.runtime.EvoAssertions.*;
-
-import org.evosuite.runtime.EvoRunner;
-import org.evosuite.runtime.EvoRunnerParameters;
-import org.junit.runner.RunWith;
-import org.openecomp.camunda.bpmn.plugin.urnmap.db.URNService;
-
-@RunWith(EvoRunner.class) @EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, useJEE = true)
-public class URNServiceESTest extends URNServiceESTestscaffolding {
-
- @Test(timeout = 4000)
- public void test0() throws Throwable {
- URNService uRNService0 = new URNService();
- // Undeclared exception!
- try {
- uRNService0.getProperties();
- fail("Expecting exception: NullPointerException");
-
- } catch(NullPointerException e) {
- //
- // no message in exception (getMessage() returned null)
- //
- verifyException("org.openecomp.camunda.bpmn.plugin.urnmap.db.URNService", e);
- }
- }
-}
diff --git a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/db/URNServiceESTestscaffolding.java b/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/db/URNServiceESTestscaffolding.java deleted file mode 100644 index dbbce2d67b..0000000000 --- a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/db/URNServiceESTestscaffolding.java +++ /dev/null @@ -1,97 +0,0 @@ -/**
- * Scaffolding file used to store all the setups needed to run
- * tests automatically generated by EvoSuite
- * Mon Nov 14 13:47:07 GMT 2016
- */
-
-package org.openecomp.camunda.bpmn.plugin.urnmap.db;
-
-import org.evosuite.runtime.annotation.EvoSuiteClassExclude;
-import org.junit.BeforeClass;
-import org.junit.Before;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.evosuite.runtime.sandbox.Sandbox;
-
-@EvoSuiteClassExclude
-public class URNServiceESTestscaffolding {
-
- @org.junit.Rule
- public org.evosuite.runtime.vnet.NonFunctionalRequirementRule nfr = new org.evosuite.runtime.vnet.NonFunctionalRequirementRule();
-
- private static final java.util.Properties defaultProperties = (java.util.Properties) java.lang.System.getProperties().clone();
-
- private org.evosuite.runtime.thread.ThreadStopper threadStopper = new org.evosuite.runtime.thread.ThreadStopper (org.evosuite.runtime.thread.KillSwitchHandler.getInstance(), 3000);
-
- @BeforeClass
- public static void initEvoSuiteFramework() {
- org.evosuite.runtime.RuntimeSettings.className = "org.openecomp.camunda.bpmn.plugin.urnmap.db.URNService";
- org.evosuite.runtime.GuiSupport.initialize();
- org.evosuite.runtime.RuntimeSettings.maxNumberOfThreads = 100;
- org.evosuite.runtime.RuntimeSettings.maxNumberOfIterationsPerLoop = 10000;
- org.evosuite.runtime.RuntimeSettings.mockSystemIn = true;
- org.evosuite.runtime.RuntimeSettings.sandboxMode = org.evosuite.runtime.sandbox.Sandbox.SandboxMode.RECOMMENDED;
- org.evosuite.runtime.sandbox.Sandbox.initializeSecurityManagerForSUT();
- org.evosuite.runtime.classhandling.JDKClassResetter.init();
- initializeClasses();
- org.evosuite.runtime.Runtime.getInstance().resetRuntime();
- }
-
- @AfterClass
- public static void clearEvoSuiteFramework(){
- Sandbox.resetDefaultSecurityManager();
- java.lang.System.setProperties((java.util.Properties) defaultProperties.clone());
- }
-
- @Before
- public void initTestCase(){
- threadStopper.storeCurrentThreads();
- threadStopper.startRecordingTime();
- org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().initHandler();
- org.evosuite.runtime.sandbox.Sandbox.goingToExecuteSUTCode();
-
- org.evosuite.runtime.GuiSupport.setHeadless();
- org.evosuite.runtime.Runtime.getInstance().resetRuntime();
- org.evosuite.runtime.agent.InstrumentingAgent.activate();
- }
-
- @After
- public void doneWithTestCase(){
- threadStopper.killAndJoinClientThreads();
- org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().safeExecuteAddedHooks();
- org.evosuite.runtime.classhandling.JDKClassResetter.reset();
- resetClasses();
- org.evosuite.runtime.sandbox.Sandbox.doneWithExecutingSUTCode();
- org.evosuite.runtime.agent.InstrumentingAgent.deactivate();
- org.evosuite.runtime.GuiSupport.restoreHeadlessMode();
- }
-
-
- private static void initializeClasses() {
- org.evosuite.runtime.classhandling.ClassStateSupport.initializeClasses(URNServiceESTestscaffolding.class.getClassLoader() ,
- "org.camunda.bpm.engine.ProcessEngineException",
- "org.openecomp.camunda.bpmn.plugin.urnmap.db.URNService",
- "org.camunda.bpm.engine.impl.interceptor.Command",
- "org.camunda.bpm.engine.ClassLoadingException",
- "org.camunda.bpm.engine.ProcessEngine",
- "org.camunda.bpm.engine.ProcessEngines",
- "org.camunda.bpm.engine.ProcessEngineInfo",
- "org.camunda.bpm.application.ProcessApplicationUnavailableException",
- "org.camunda.bpm.engine.impl.ProcessEngineImpl",
- "org.camunda.bpm.engine.impl.context.Context",
- "org.camunda.bpm.engine.impl.util.ReflectUtil",
- "org.camunda.bpm.engine.ProcessEngineServices",
- "org.openecomp.camunda.bpmn.plugin.urnmap.db.URNData"
- );
- }
-
- private static void resetClasses() {
- org.evosuite.runtime.classhandling.ClassResetter.getInstance().setClassLoader(URNServiceESTestscaffolding.class.getClassLoader());
-
- org.evosuite.runtime.classhandling.ClassStateSupport.resetClasses(
- "org.camunda.bpm.engine.impl.context.Context",
- "org.camunda.bpm.engine.ProcessEngines",
- "org.camunda.bpm.engine.impl.util.ReflectUtil"
- );
- }
-}
diff --git a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/ProcessInstanceResourceESTest.java b/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/ProcessInstanceResourceESTest.java deleted file mode 100644 index 21ca18c3f7..0000000000 --- a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/ProcessInstanceResourceESTest.java +++ /dev/null @@ -1,88 +0,0 @@ -/*
- * This file was automatically generated by EvoSuite
- * Mon Nov 14 13:45:16 GMT 2016
- */
-
-package org.openecomp.camunda.bpmn.plugin.urnmap.resources;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-import static org.evosuite.runtime.EvoAssertions.*;
-
-import java.util.NoSuchElementException;
-
-import org.evosuite.runtime.EvoRunner;
-import org.evosuite.runtime.EvoRunnerParameters;
-import org.junit.runner.RunWith;
-import org.openecomp.camunda.bpmn.plugin.urnmap.db.URNData;
-import org.openecomp.camunda.bpmn.plugin.urnmap.resources.ProcessInstanceResource;
-
-@RunWith(EvoRunner.class) @EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, useJEE = true)
-public class ProcessInstanceResourceESTest extends ProcessInstanceResourceESTestscaffolding {
-
- @Test(timeout = 4000)
- public void test0() throws Throwable {
- ProcessInstanceResource processInstanceResource0 = new ProcessInstanceResource((String) null);
- // Undeclared exception!
- try {
- processInstanceResource0.getUrnDataMap();
- fail("Expecting exception: NullPointerException");
-
- } catch(NullPointerException e) {
- //
- // no message in exception (getMessage() returned null)
- //
- verifyException("org.camunda.bpm.cockpit.Cockpit", e);
- }
- }
-
- @Test(timeout = 4000)
- public void test1() throws Throwable {
- ProcessInstanceResource processInstanceResource0 = new ProcessInstanceResource("DEUtDF$-rb|D]l9");
- // Undeclared exception!
- try {
- processInstanceResource0.insertNewRow("DEUtDF$-rb|D]l9");
- fail("Expecting exception: NullPointerException");
-
- } catch(NullPointerException e) {
- //
- // no message in exception (getMessage() returned null)
- //
- verifyException("org.camunda.bpm.cockpit.Cockpit", e);
- }
- }
-
- @Test(timeout = 4000)
- public void test2() throws Throwable {
- URNData uRNData0 = new URNData();
- ProcessInstanceResource processInstanceResource0 = new ProcessInstanceResource("|");
- // Undeclared exception!
- try {
- processInstanceResource0.getPersistData(uRNData0);
- fail("Expecting exception: NullPointerException");
-
- } catch(NullPointerException e) {
- //
- // no message in exception (getMessage() returned null)
- //
- verifyException("org.camunda.bpm.cockpit.Cockpit", e);
- }
- }
-
- @Test(timeout = 4000)
- public void test3() throws Throwable {
- ProcessInstanceResource processInstanceResource0 = new ProcessInstanceResource("xGUKD= Ea6(aT");
- // Undeclared exception!
- try {
- processInstanceResource0.insertNewRow("xGUKD= Ea6(aT");
- fail("Expecting exception: NoSuchElementException");
-
- } catch(NoSuchElementException e) {
- //
- // no message in exception (getMessage() returned null)
- //
- verifyException("java.util.StringTokenizer", e);
- }
- }
-}
diff --git a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/ProcessInstanceResourceESTestscaffolding.java b/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/ProcessInstanceResourceESTestscaffolding.java deleted file mode 100644 index 4408adac67..0000000000 --- a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/ProcessInstanceResourceESTestscaffolding.java +++ /dev/null @@ -1,94 +0,0 @@ -/**
- * Scaffolding file used to store all the setups needed to run
- * tests automatically generated by EvoSuite
- * Mon Nov 14 13:45:16 GMT 2016
- */
-
-package org.openecomp.camunda.bpmn.plugin.urnmap.resources;
-
-import org.evosuite.runtime.annotation.EvoSuiteClassExclude;
-import org.junit.BeforeClass;
-import org.junit.Before;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.evosuite.runtime.sandbox.Sandbox;
-
-@EvoSuiteClassExclude
-public class ProcessInstanceResourceESTestscaffolding {
-
- @org.junit.Rule
- public org.evosuite.runtime.vnet.NonFunctionalRequirementRule nfr = new org.evosuite.runtime.vnet.NonFunctionalRequirementRule();
-
- private static final java.util.Properties defaultProperties = (java.util.Properties) java.lang.System.getProperties().clone();
-
- private org.evosuite.runtime.thread.ThreadStopper threadStopper = new org.evosuite.runtime.thread.ThreadStopper (org.evosuite.runtime.thread.KillSwitchHandler.getInstance(), 3000);
-
- @BeforeClass
- public static void initEvoSuiteFramework() {
- org.evosuite.runtime.RuntimeSettings.className = "org.openecomp.camunda.bpmn.plugin.urnmap.resources.ProcessInstanceResource";
- org.evosuite.runtime.GuiSupport.initialize();
- org.evosuite.runtime.RuntimeSettings.maxNumberOfThreads = 100;
- org.evosuite.runtime.RuntimeSettings.maxNumberOfIterationsPerLoop = 10000;
- org.evosuite.runtime.RuntimeSettings.mockSystemIn = true;
- org.evosuite.runtime.RuntimeSettings.sandboxMode = org.evosuite.runtime.sandbox.Sandbox.SandboxMode.RECOMMENDED;
- org.evosuite.runtime.sandbox.Sandbox.initializeSecurityManagerForSUT();
- org.evosuite.runtime.classhandling.JDKClassResetter.init();
- initializeClasses();
- org.evosuite.runtime.Runtime.getInstance().resetRuntime();
- }
-
- @AfterClass
- public static void clearEvoSuiteFramework(){
- Sandbox.resetDefaultSecurityManager();
- java.lang.System.setProperties((java.util.Properties) defaultProperties.clone());
- }
-
- @Before
- public void initTestCase(){
- threadStopper.storeCurrentThreads();
- threadStopper.startRecordingTime();
- org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().initHandler();
- org.evosuite.runtime.sandbox.Sandbox.goingToExecuteSUTCode();
-
- org.evosuite.runtime.GuiSupport.setHeadless();
- org.evosuite.runtime.Runtime.getInstance().resetRuntime();
- org.evosuite.runtime.agent.InstrumentingAgent.activate();
- }
-
- @After
- public void doneWithTestCase(){
- threadStopper.killAndJoinClientThreads();
- org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().safeExecuteAddedHooks();
- org.evosuite.runtime.classhandling.JDKClassResetter.reset();
- resetClasses();
- org.evosuite.runtime.sandbox.Sandbox.doneWithExecutingSUTCode();
- org.evosuite.runtime.agent.InstrumentingAgent.deactivate();
- org.evosuite.runtime.GuiSupport.restoreHeadlessMode();
- }
-
-
- private static void initializeClasses() {
- org.evosuite.runtime.classhandling.ClassStateSupport.initializeClasses(ProcessInstanceResourceESTestscaffolding.class.getClassLoader() ,
- "org.camunda.bpm.cockpit.plugin.resource.AbstractCockpitPluginResource",
- "org.camunda.bpm.cockpit.CockpitRuntimeDelegate",
- "org.camunda.bpm.webapp.plugin.resource.AbstractAppPluginResource",
- "org.camunda.bpm.webapp.AppRuntimeDelegate",
- "org.camunda.bpm.cockpit.plugin.resource.AbstractPluginResource",
- "org.camunda.bpm.cockpit.db.QueryService",
- "org.camunda.bpm.engine.ProcessEngine",
- "org.openecomp.camunda.bpmn.plugin.urnmap.resources.ProcessInstanceResource",
- "org.camunda.bpm.engine.ProcessEngineServices",
- "org.camunda.bpm.cockpit.db.CommandExecutor",
- "org.camunda.bpm.cockpit.Cockpit",
- "org.openecomp.camunda.bpmn.plugin.urnmap.db.URNData"
- );
- }
-
- private static void resetClasses() {
- org.evosuite.runtime.classhandling.ClassResetter.getInstance().setClassLoader(ProcessInstanceResourceESTestscaffolding.class.getClassLoader());
-
- org.evosuite.runtime.classhandling.ClassStateSupport.resetClasses(
- "org.camunda.bpm.cockpit.Cockpit"
- );
- }
-}
diff --git a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNMapPluginRootResourceESTest.java b/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNMapPluginRootResourceESTest.java deleted file mode 100644 index c1dccfcb2b..0000000000 --- a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNMapPluginRootResourceESTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/*
- * This file was automatically generated by EvoSuite
- * Mon Nov 14 13:48:27 GMT 2016
- */
-
-package org.openecomp.camunda.bpmn.plugin.urnmap.resources;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-import static org.evosuite.shaded.org.mockito.Mockito.*;
-
-import javax.servlet.ServletContext;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.UriInfo;
-
-import org.camunda.bpm.webapp.plugin.resource.AbstractAppPluginRootResource;
-import org.evosuite.runtime.EvoRunner;
-import org.evosuite.runtime.EvoRunnerParameters;
-import org.evosuite.runtime.ViolatedAssumptionAnswer;
-import org.evosuite.runtime.javaee.injection.Injector;
-import org.junit.runner.RunWith;
-import org.openecomp.camunda.bpmn.plugin.urnmap.resources.URNMapPluginRootResource;
-import org.openecomp.camunda.bpmn.plugin.urnmap.resources.URNResource;
-
-@RunWith(EvoRunner.class) @EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, useJEE = true)
-public class URNMapPluginRootResourceESTest extends URNMapPluginRootResourceESTestscaffolding {
-
- @Test(timeout = 4000)
- public void test0() throws Throwable {
- URNMapPluginRootResource uRNMapPluginRootResource0 = new URNMapPluginRootResource();
- HttpHeaders httpHeaders0 = mock(HttpHeaders.class, new ViolatedAssumptionAnswer());
- Injector.inject(uRNMapPluginRootResource0, (Class<?>) AbstractAppPluginRootResource.class, "headers", (Object) httpHeaders0);
- ServletContext servletContext0 = mock(ServletContext.class, new ViolatedAssumptionAnswer());
- Injector.inject(uRNMapPluginRootResource0, (Class<?>) AbstractAppPluginRootResource.class, "servletContext", (Object) servletContext0);
- UriInfo uriInfo0 = mock(UriInfo.class, new ViolatedAssumptionAnswer());
- Injector.inject(uRNMapPluginRootResource0, (Class<?>) AbstractAppPluginRootResource.class, "uriInfo", (Object) uriInfo0);
- Injector.validateBean(uRNMapPluginRootResource0, (Class<?>) URNMapPluginRootResource.class);
- URNResource uRNResource0 = uRNMapPluginRootResource0.getProcessInstanceResource("}+njRy')#n?K^");
- assertNotNull(uRNResource0);
- }
-}
diff --git a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNMapPluginRootResourceESTestscaffolding.java b/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNMapPluginRootResourceESTestscaffolding.java deleted file mode 100644 index 1033de9c54..0000000000 --- a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNMapPluginRootResourceESTestscaffolding.java +++ /dev/null @@ -1,119 +0,0 @@ -/**
- * Scaffolding file used to store all the setups needed to run
- * tests automatically generated by EvoSuite
- * Mon Nov 14 13:48:27 GMT 2016
- */
-
-package org.openecomp.camunda.bpmn.plugin.urnmap.resources;
-
-import org.evosuite.runtime.annotation.EvoSuiteClassExclude;
-import org.junit.BeforeClass;
-import org.junit.Before;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.evosuite.runtime.sandbox.Sandbox;
-
-@EvoSuiteClassExclude
-public class URNMapPluginRootResourceESTestscaffolding {
-
- @org.junit.Rule
- public org.evosuite.runtime.vnet.NonFunctionalRequirementRule nfr = new org.evosuite.runtime.vnet.NonFunctionalRequirementRule();
-
- private static final java.util.Properties defaultProperties = (java.util.Properties) java.lang.System.getProperties().clone();
-
- private org.evosuite.runtime.thread.ThreadStopper threadStopper = new org.evosuite.runtime.thread.ThreadStopper (org.evosuite.runtime.thread.KillSwitchHandler.getInstance(), 3000);
-
- @BeforeClass
- public static void initEvoSuiteFramework() {
- org.evosuite.runtime.RuntimeSettings.className = "org.openecomp.camunda.bpmn.plugin.urnmap.resources.URNMapPluginRootResource";
- org.evosuite.runtime.GuiSupport.initialize();
- org.evosuite.runtime.RuntimeSettings.maxNumberOfThreads = 100;
- org.evosuite.runtime.RuntimeSettings.maxNumberOfIterationsPerLoop = 10000;
- org.evosuite.runtime.RuntimeSettings.mockSystemIn = true;
- org.evosuite.runtime.RuntimeSettings.sandboxMode = org.evosuite.runtime.sandbox.Sandbox.SandboxMode.RECOMMENDED;
- org.evosuite.runtime.sandbox.Sandbox.initializeSecurityManagerForSUT();
- org.evosuite.runtime.classhandling.JDKClassResetter.init();
- initializeClasses();
- org.evosuite.runtime.Runtime.getInstance().resetRuntime();
- }
-
- @AfterClass
- public static void clearEvoSuiteFramework(){
- Sandbox.resetDefaultSecurityManager();
- java.lang.System.setProperties((java.util.Properties) defaultProperties.clone());
- }
-
- @Before
- public void initTestCase(){
- threadStopper.storeCurrentThreads();
- threadStopper.startRecordingTime();
- org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().initHandler();
- org.evosuite.runtime.sandbox.Sandbox.goingToExecuteSUTCode();
-
- org.evosuite.runtime.GuiSupport.setHeadless();
- org.evosuite.runtime.Runtime.getInstance().resetRuntime();
- org.evosuite.runtime.agent.InstrumentingAgent.activate();
- }
-
- @After
- public void doneWithTestCase(){
- threadStopper.killAndJoinClientThreads();
- org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().safeExecuteAddedHooks();
- org.evosuite.runtime.classhandling.JDKClassResetter.reset();
- resetClasses();
- org.evosuite.runtime.sandbox.Sandbox.doneWithExecutingSUTCode();
- org.evosuite.runtime.agent.InstrumentingAgent.deactivate();
- org.evosuite.runtime.GuiSupport.restoreHeadlessMode();
- }
-
-
- private static void initializeClasses() {
- org.evosuite.runtime.classhandling.ClassStateSupport.initializeClasses(URNMapPluginRootResourceESTestscaffolding.class.getClassLoader() ,
- "org.camunda.bpm.webapp.plugin.resource.AbstractAppPluginResource",
- "org.camunda.bpm.webapp.plugin.spi.AppPlugin",
- "org.openecomp.camunda.bpmn.plugin.urnmap.resources.URNResource",
- "com.att.eelf.i18n.EELFResourceManager$RESOURCE_TYPES",
- "org.camunda.bpm.webapp.plugin.resource.AbstractAppPluginRootResource",
- "org.openecomp.mso.logger.MsoLogger$ErrorCode",
- "org.camunda.bpm.cockpit.Cockpit",
- "com.att.eelf.configuration.EELFLogger",
- "org.camunda.bpm.engine.rest.exception.RestException",
- "com.att.eelf.configuration.SLF4jWrapper",
- "com.att.eelf.i18n.EELFResourceManager",
- "org.openecomp.camunda.bpmn.plugin.urnmap.db.URNData",
- "org.openecomp.mso.logger.MsoLogger",
- "org.openecomp.mso.logger.MessageEnum",
- "com.att.eelf.i18n.EELFResolvableErrorEnum",
- "org.openecomp.mso.logger.MsoLogger$ResponseCode",
- "org.camunda.bpm.cockpit.plugin.resource.AbstractPluginRootResource",
- "org.openecomp.mso.entity.MsoRequest",
- "org.camunda.bpm.webapp.AppRuntimeDelegate",
- "org.openecomp.mso.logger.MsoLogger$StatusCode",
- "com.att.eelf.configuration.EELFManager",
- "org.openecomp.camunda.bpmn.plugin.urnmap.resources.URNMapPluginRootResource",
- "com.att.eelf.i18n.EELFMsgs",
- "org.camunda.bpm.cockpit.plugin.resource.AbstractCockpitPluginRootResource",
- "com.att.eelf.configuration.EELFLogger$Level",
- "org.camunda.bpm.cockpit.plugin.resource.AbstractCockpitPluginResource",
- "org.openecomp.mso.logger.MsoLogger$Catalog"
- );
- }
-
- private static void resetClasses() {
- org.evosuite.runtime.classhandling.ClassResetter.getInstance().setClassLoader(URNMapPluginRootResourceESTestscaffolding.class.getClassLoader());
-
- org.evosuite.runtime.classhandling.ClassStateSupport.resetClasses(
- "org.camunda.bpm.cockpit.Cockpit",
- "org.openecomp.mso.logger.MsoLogger$Catalog",
- "org.openecomp.mso.logger.MsoLogger",
- "com.att.eelf.i18n.EELFResourceManager",
- "com.att.eelf.i18n.EELFMsgs",
- "com.att.eelf.i18n.EELFResourceManager$RESOURCE_TYPES",
- "com.att.eelf.configuration.EELFLogger$Level",
- "com.att.eelf.configuration.EELFManager",
- "org.openecomp.mso.logger.MessageEnum",
- "org.openecomp.camunda.bpmn.plugin.urnmap.resources.URNResource",
- "org.camunda.bpm.webapp.plugin.resource.AbstractAppPluginRootResource"
- );
- }
-}
diff --git a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNResourceESTest.java b/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNResourceESTest.java deleted file mode 100644 index ca0426339a..0000000000 --- a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNResourceESTest.java +++ /dev/null @@ -1,165 +0,0 @@ -/*
- * This file was automatically generated by EvoSuite
- * Mon Nov 14 13:47:41 GMT 2016
- */
-
-package org.openecomp.camunda.bpmn.plugin.urnmap.resources;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-import static org.evosuite.shaded.org.mockito.Mockito.*;
-import static org.evosuite.runtime.EvoAssertions.*;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.util.List;
-import java.util.NoSuchElementException;
-
-import org.evosuite.runtime.EvoRunner;
-import org.evosuite.runtime.EvoRunnerParameters;
-import org.evosuite.runtime.PrivateAccess;
-import org.evosuite.runtime.ViolatedAssumptionAnswer;
-import org.junit.runner.RunWith;
-import org.openecomp.camunda.bpmn.plugin.urnmap.db.URNData;
-import org.openecomp.camunda.bpmn.plugin.urnmap.resources.URNResource;
-
-@RunWith(EvoRunner.class) @EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, useJEE = true)
-public class URNResourceESTest extends URNResourceESTestscaffolding {
-
- @Test(timeout = 4000)
- public void test00() throws Throwable {
- URNResource uRNResource0 = new URNResource("pE|b");
- PreparedStatement preparedStatement0 = mock(PreparedStatement.class, new ViolatedAssumptionAnswer());
- doReturn((-3202)).when(preparedStatement0).executeUpdate();
- Connection connection0 = mock(Connection.class, new ViolatedAssumptionAnswer());
- doReturn("").when(connection0).toString();
- doReturn(preparedStatement0).when(connection0).prepareStatement(anyString());
- PrivateAccess.setVariable((Class<URNResource>) URNResource.class, uRNResource0, "conn", (Object) connection0);
- uRNResource0.insertNewRow("pE|b");
- }
-
- @Test(timeout = 4000)
- public void test01() throws Throwable {
- URNResource uRNResource0 = new URNResource("pE|b");
- Connection connection0 = mock(Connection.class, new ViolatedAssumptionAnswer());
- doReturn((String) null).when(connection0).toString();
- doReturn((PreparedStatement) null).when(connection0).prepareStatement(anyString());
- PrivateAccess.setVariable((Class<URNResource>) URNResource.class, uRNResource0, "conn", (Object) connection0);
- uRNResource0.insertNewRow("pE|b");
- }
-
- @Test(timeout = 4000)
- public void test02() throws Throwable {
- URNResource uRNResource0 = new URNResource("");
- List<URNData> list0 = uRNResource0.getUrnDataMap();
- assertTrue(list0.isEmpty());
- }
-
- @Test(timeout = 4000)
- public void test03() throws Throwable {
- URNResource uRNResource0 = new URNResource("pE|b");
- PreparedStatement preparedStatement0 = mock(PreparedStatement.class, new ViolatedAssumptionAnswer());
- doReturn((-3202)).when(preparedStatement0).executeUpdate();
- Connection connection0 = mock(Connection.class, new ViolatedAssumptionAnswer());
- doReturn("").when(connection0).toString();
- doReturn(preparedStatement0).when(connection0).prepareStatement(anyString());
- PrivateAccess.setVariable((Class<URNResource>) URNResource.class, uRNResource0, "conn", (Object) connection0);
- URNData uRNData0 = new URNData();
- uRNResource0.getPersistData(uRNData0);
- assertNull(uRNData0.getVer_());
- }
-
- @Test(timeout = 4000)
- public void test04() throws Throwable {
- URNResource uRNResource0 = new URNResource("pE|b");
- Connection connection0 = mock(Connection.class, new ViolatedAssumptionAnswer());
- doReturn((String) null).when(connection0).toString();
- doReturn((PreparedStatement) null).when(connection0).prepareStatement(anyString());
- PrivateAccess.setVariable((Class<URNResource>) URNResource.class, uRNResource0, "conn", (Object) connection0);
- URNData uRNData0 = new URNData();
- uRNResource0.getPersistData(uRNData0);
- assertNull(uRNData0.getVer_());
- }
-
- @Test(timeout = 4000)
- public void test05() throws Throwable {
- URNResource uRNResource0 = new URNResource("LR6iOYH?>Bg%1-x=lK");
- // Undeclared exception!
- try {
- uRNResource0.insertNewRow("LR6iOYH?>Bg%1-x=lK");
- fail("Expecting exception: NoSuchElementException");
-
- } catch(NoSuchElementException e) {
- //
- // no message in exception (getMessage() returned null)
- //
- verifyException("java.util.StringTokenizer", e);
- }
- }
-
- @Test(timeout = 4000)
- public void test06() throws Throwable {
- URNResource uRNResource0 = new URNResource("");
- // Undeclared exception!
- try {
- uRNResource0.insertNewRow((String) null);
- fail("Expecting exception: NullPointerException");
-
- } catch(NullPointerException e) {
- //
- // no message in exception (getMessage() returned null)
- //
- verifyException("java.util.StringTokenizer", e);
- }
- }
-
- @Test(timeout = 4000)
- public void test07() throws Throwable {
- URNResource uRNResource0 = new URNResource("pE|b");
- // Undeclared exception!
- try {
- uRNResource0.getUrnDataMapOLD();
- fail("Expecting exception: NullPointerException");
-
- } catch(NullPointerException e) {
- //
- // no message in exception (getMessage() returned null)
- //
- verifyException("org.camunda.bpm.cockpit.Cockpit", e);
- }
- }
-
- @Test(timeout = 4000)
- public void test08() throws Throwable {
- URNResource uRNResource0 = new URNResource("");
- Connection connection0 = uRNResource0.getDBConnection();
- assertNull(connection0);
- }
-
- @Test(timeout = 4000)
- public void test09() throws Throwable {
- URNResource uRNResource0 = new URNResource("pE|b");
- Connection connection0 = mock(Connection.class, new ViolatedAssumptionAnswer());
- doReturn((String) null).when(connection0).toString();
- PrivateAccess.setVariable((Class<URNResource>) URNResource.class, uRNResource0, "conn", (Object) connection0);
- Connection connection1 = uRNResource0.getDBConnection();
- assertSame(connection1, connection0);
- }
-
- @Test(timeout = 4000)
- public void test10() throws Throwable {
- URNResource uRNResource0 = new URNResource("pE|b");
- ResultSet resultSet0 = mock(ResultSet.class, new ViolatedAssumptionAnswer());
- doReturn(false).when(resultSet0).next();
- PreparedStatement preparedStatement0 = mock(PreparedStatement.class, new ViolatedAssumptionAnswer());
- doReturn(resultSet0).when(preparedStatement0).executeQuery();
- Connection connection0 = mock(Connection.class, new ViolatedAssumptionAnswer());
- doReturn("").when(connection0).toString();
- doReturn(preparedStatement0).when(connection0).prepareStatement(anyString());
- PrivateAccess.setVariable((Class<URNResource>) URNResource.class, uRNResource0, "conn", (Object) connection0);
- List<URNData> list0 = uRNResource0.getUrnDataMap();
- assertTrue(list0.isEmpty());
- }
-}
diff --git a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNResourceESTestscaffolding.java b/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNResourceESTestscaffolding.java deleted file mode 100644 index 33171b951e..0000000000 --- a/bpmn/MSOURN-plugin/src/test/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNResourceESTestscaffolding.java +++ /dev/null @@ -1,400 +0,0 @@ -/**
- * Scaffolding file used to store all the setups needed to run
- * tests automatically generated by EvoSuite
- * Mon Nov 14 13:47:41 GMT 2016
- */
-
-package org.openecomp.camunda.bpmn.plugin.urnmap.resources;
-
-import org.evosuite.runtime.annotation.EvoSuiteClassExclude;
-import org.junit.BeforeClass;
-import org.junit.Before;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.evosuite.runtime.sandbox.Sandbox;
-
-@EvoSuiteClassExclude
-public class URNResourceESTestscaffolding {
-
- @org.junit.Rule
- public org.evosuite.runtime.vnet.NonFunctionalRequirementRule nfr = new org.evosuite.runtime.vnet.NonFunctionalRequirementRule();
-
- private static final java.util.Properties defaultProperties = (java.util.Properties) java.lang.System.getProperties().clone();
-
- private org.evosuite.runtime.thread.ThreadStopper threadStopper = new org.evosuite.runtime.thread.ThreadStopper (org.evosuite.runtime.thread.KillSwitchHandler.getInstance(), 3000);
-
- @BeforeClass
- public static void initEvoSuiteFramework() {
- org.evosuite.runtime.RuntimeSettings.className = "org.openecomp.camunda.bpmn.plugin.urnmap.resources.URNResource";
- org.evosuite.runtime.GuiSupport.initialize();
- org.evosuite.runtime.RuntimeSettings.maxNumberOfThreads = 100;
- org.evosuite.runtime.RuntimeSettings.maxNumberOfIterationsPerLoop = 10000;
- org.evosuite.runtime.RuntimeSettings.mockSystemIn = true;
- org.evosuite.runtime.RuntimeSettings.sandboxMode = org.evosuite.runtime.sandbox.Sandbox.SandboxMode.RECOMMENDED;
- org.evosuite.runtime.sandbox.Sandbox.initializeSecurityManagerForSUT();
- org.evosuite.runtime.classhandling.JDKClassResetter.init();
- initializeClasses();
- org.evosuite.runtime.Runtime.getInstance().resetRuntime();
- }
-
- @AfterClass
- public static void clearEvoSuiteFramework(){
- Sandbox.resetDefaultSecurityManager();
- java.lang.System.setProperties((java.util.Properties) defaultProperties.clone());
- }
-
- @Before
- public void initTestCase(){
- threadStopper.storeCurrentThreads();
- threadStopper.startRecordingTime();
- org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().initHandler();
- org.evosuite.runtime.sandbox.Sandbox.goingToExecuteSUTCode();
-
- org.evosuite.runtime.GuiSupport.setHeadless();
- org.evosuite.runtime.Runtime.getInstance().resetRuntime();
- org.evosuite.runtime.agent.InstrumentingAgent.activate();
- }
-
- @After
- public void doneWithTestCase(){
- threadStopper.killAndJoinClientThreads();
- org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().safeExecuteAddedHooks();
- org.evosuite.runtime.classhandling.JDKClassResetter.reset();
- resetClasses();
- org.evosuite.runtime.sandbox.Sandbox.doneWithExecutingSUTCode();
- org.evosuite.runtime.agent.InstrumentingAgent.deactivate();
- org.evosuite.runtime.GuiSupport.restoreHeadlessMode();
- }
-
-
- private static void initializeClasses() {
- org.evosuite.runtime.classhandling.ClassStateSupport.initializeClasses(URNResourceESTestscaffolding.class.getClassLoader() ,
- "org.h2.store.LobStorage",
- "com.mysql.jdbc.VersionedStringProperty",
- "com.mysql.jdbc.StatementInterceptorV2",
- "com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty",
- "org.h2.engine.SessionInterface",
- "org.h2.index.BaseIndex",
- "com.mysql.jdbc.ConnectionPropertiesImpl$LongConnectionProperty",
- "org.h2.store.fs.FileNioMemData",
- "org.h2.store.fs.FileNioMem",
- "org.h2.store.fs.FilePathCrypt$FileCrypt",
- "org.h2.result.Row",
- "org.h2.engine.RightOwner",
- "org.h2.table.TableView",
- "com.mysql.jdbc.JDBC4ClientInfoProvider",
- "com.mysql.jdbc.CachedResultSetMetaData",
- "org.h2.store.fs.FileMem$1",
- "com.mysql.jdbc.ConnectionFeatureNotAvailableException",
- "org.h2.security.BlockCipher",
- "org.h2.command.CommandInterface",
- "com.mysql.jdbc.MysqlIO",
- "com.mysql.jdbc.Connection",
- "com.att.eelf.i18n.EELFMsgs",
- "com.mysql.jdbc.ConnectionPropertiesImpl",
- "org.h2.constant.DbSettings",
- "com.mysql.jdbc.SingleByteCharsetConverter",
- "com.mysql.jdbc.PingTarget",
- "org.h2.index.PageIndex",
- "org.h2.util.BitField",
- "org.h2.value.ValueNull",
- "org.h2.value.ValueShort",
- "com.mysql.jdbc.SocketFactory",
- "org.h2.value.ValueDecimal",
- "com.mysql.jdbc.PacketTooBigException",
- "com.mysql.jdbc.log.StandardLogger",
- "com.mysql.jdbc.ConnectionImpl$3",
- "com.mysql.jdbc.ConnectionImpl$2",
- "com.mysql.jdbc.ConnectionImpl$5",
- "com.mysql.jdbc.ConnectionImpl$4",
- "com.mysql.jdbc.ConnectionImpl$7",
- "com.mysql.jdbc.ConnectionImpl$6",
- "org.h2.util.SmallLRUCache",
- "org.h2.mvstore.Chunk",
- "com.mysql.jdbc.ConnectionImpl$9",
- "com.mysql.jdbc.ConnectionImpl$8",
- "com.mysql.jdbc.log.Log",
- "com.mysql.jdbc.ConnectionPropertiesImpl$MemorySizeConnectionProperty",
- "com.mysql.jdbc.StringUtils",
- "org.h2.mvstore.MVStore",
- "org.h2.engine.DbObjectBase",
- "org.h2.store.FileLock",
- "com.mysql.jdbc.ResultSetImpl",
- "org.h2.schema.Sequence",
- "org.h2.value.Value",
- "org.h2.store.fs.FilePathMem",
- "com.mysql.jdbc.ConnectionPropertiesImpl$BooleanConnectionProperty",
- "org.h2.store.fs.FilePath",
- "org.h2.engine.DatabaseCloser",
- "org.h2.expression.ExpressionColumn",
- "com.mysql.jdbc.Statement",
- "com.mysql.jdbc.Buffer",
- "org.h2.store.fs.FilePathNioMem",
- "com.mysql.jdbc.ParameterBindings",
- "org.h2.security.SecureFileStore",
- "org.h2.store.fs.FileMem",
- "com.mysql.jdbc.BufferRow",
- "org.h2.expression.Expression",
- "org.h2.store.fs.FileSplit",
- "org.h2.util.Utils$1",
- "org.h2.value.CompareMode",
- "org.h2.util.Utils",
- "com.mysql.jdbc.exceptions.MySQLTimeoutException",
- "org.h2.command.dml.SetTypes",
- "org.openecomp.mso.logger.MsoLogger$ErrorCode",
- "org.h2.jdbcx.JdbcDataSourceFactory",
- "com.mysql.jdbc.Util",
- "org.camunda.bpm.cockpit.Cockpit",
- "org.h2.value.ValueString",
- "org.h2.value.ValueJavaObject",
- "org.h2.store.PageStore",
- "com.mysql.jdbc.ConnectionPropertiesImpl$XmlMap",
- "org.h2.schema.Schema",
- "org.h2.engine.SettingsBase",
- "com.mysql.jdbc.CommunicationsException",
- "org.h2.value.CompareModeDefault",
- "org.h2.engine.SessionWithState",
- "org.h2.table.TableLinkConnection",
- "org.h2.message.Trace",
- "org.h2.engine.Comment",
- "org.h2.util.New",
- "org.camunda.bpm.engine.ProcessEngine",
- "org.h2.value.ValueInt",
- "org.h2.util.CacheWriter",
- "com.mysql.jdbc.CompressedInputStream",
- "org.h2.result.ResultInterface",
- "org.h2.util.StringUtils",
- "org.camunda.bpm.cockpit.plugin.resource.AbstractCockpitPluginResource",
- "org.h2.table.IndexColumn",
- "org.openecomp.mso.logger.MsoLogger$Catalog",
- "org.h2.value.CompareModeIcu4J",
- "com.mysql.jdbc.ResultSetRow",
- "com.mysql.jdbc.ConnectionImpl",
- "com.mysql.jdbc.log.NullLogger",
- "org.camunda.bpm.cockpit.db.QueryService",
- "org.camunda.bpm.engine.ProcessEngineServices",
- "com.mysql.jdbc.JDBC4PreparedStatement",
- "org.h2.schema.SchemaObject",
- "org.h2.store.FileStore",
- "org.h2.engine.SessionRemote",
- "org.h2.value.ValueUuid",
- "org.h2.mvstore.type.DataType",
- "org.h2.index.IndexType",
- "org.h2.value.ValueDate",
- "org.h2.result.SearchRow",
- "org.h2.table.Table",
- "org.openecomp.camunda.bpmn.plugin.urnmap.db.URNData",
- "org.h2.store.fs.FileMemData",
- "org.h2.value.ValueFloat",
- "org.openecomp.mso.entity.MsoRequest",
- "org.camunda.bpm.webapp.AppRuntimeDelegate",
- "org.h2.value.Transfer",
- "com.mysql.jdbc.Messages",
- "org.h2.store.fs.FileDisk",
- "com.mysql.jdbc.NetworkResources",
- "org.h2.result.RowList",
- "com.mysql.jdbc.CallableStatement$CallableStatementParamInfo",
- "org.h2.constant.ErrorCode",
- "com.mysql.jdbc.Collation",
- "org.h2.message.TraceObject",
- "com.mysql.jdbc.ByteArrayRow",
- "org.h2.store.fs.FileChannelOutputStream",
- "org.h2.value.ValueBoolean",
- "org.h2.value.ValueLobDb",
- "org.h2.util.SourceCompiler",
- "org.h2.engine.UserDataType",
- "org.h2.constraint.Constraint",
- "org.h2.table.TableBase",
- "org.h2.jdbcx.JdbcConnectionPool",
- "com.mysql.jdbc.authentication.Sha256PasswordPlugin",
- "org.h2.value.ValueLong",
- "org.h2.engine.DbObject",
- "com.mysql.jdbc.JDBC4CallableStatement",
- "org.h2.util.SortedProperties",
- "org.h2.value.ValueStringIgnoreCase",
- "org.h2.table.PlanItem",
- "org.h2.jdbcx.JdbcXAConnection",
- "org.h2.engine.UserAggregate",
- "org.h2.message.DbException",
- "com.mysql.jdbc.JDBC4ServerPreparedStatement",
- "org.h2.mvstore.MVMapConcurrent",
- "com.mysql.jdbc.Extension",
- "org.hsqldb.jdbc.JDBCDriver",
- "org.h2.engine.Database",
- "org.h2.api.DatabaseEventListener",
- "org.h2.jdbcx.JdbcDataSource",
- "org.h2.schema.TriggerObject",
- "org.h2.store.DataReader",
- "com.mysql.jdbc.StatementImpl",
- "org.hsqldb.jdbc.JDBCDriver$1",
- "org.h2.value.ValueBytes",
- "org.h2.value.ValueResultSet",
- "com.att.eelf.i18n.EELFResolvableErrorEnum",
- "org.h2.value.ValueDouble",
- "com.mysql.jdbc.CallableStatement$CallableStatementParam",
- "org.h2.schema.SchemaObjectBase",
- "com.att.eelf.configuration.EELFLogger$Level",
- "com.mysql.jdbc.StatementImpl$CancelTask$1",
- "org.h2.mvstore.Page",
- "org.h2.index.PageDelegateIndex",
- "org.h2.store.fs.FileBase",
- "com.mysql.jdbc.StatementImpl$CancelTask",
- "org.openecomp.camunda.bpmn.plugin.urnmap.resources.URNResource",
- "org.h2.message.TraceWriter",
- "com.att.eelf.i18n.EELFResourceManager$RESOURCE_TYPES",
- "com.att.eelf.configuration.EELFLogger",
- "org.h2.table.Column",
- "org.h2.engine.Session",
- "org.h2.engine.Mode",
- "com.mysql.jdbc.exceptions.MySQLTransientException",
- "org.h2.engine.Setting",
- "org.h2.util.SourceCompiler$1",
- "org.h2.value.ValueArray",
- "com.mysql.jdbc.MySQLConnection",
- "org.h2.util.TempFileDeleter",
- "org.h2.store.fs.FileNioMem$1",
- "com.mysql.jdbc.AuthenticationPlugin",
- "org.h2.util.MathUtils",
- "org.h2.mvstore.DataUtils",
- "org.h2.store.fs.FilePathSplit",
- "org.h2.value.ValueStringFixed",
- "com.mysql.jdbc.JDBC4Connection",
- "com.mysql.jdbc.NonRegisteringDriver$1",
- "org.h2.engine.User",
- "org.h2.value.ValueTimestamp",
- "org.h2.value.Value$ValueBlob",
- "org.h2.store.fs.FilePathWrapper",
- "org.h2.constant.SysProperties",
- "com.mysql.jdbc.IterateBlock",
- "org.h2.table.RegularTable",
- "com.mysql.jdbc.Util$RandStructcture",
- "org.h2.store.fs.FileChannelInputStream",
- "com.mysql.jdbc.exceptions.MySQLStatementCancelledException",
- "com.mysql.jdbc.PreparedStatement",
- "org.h2.compress.Compressor",
- "com.mysql.jdbc.util.LRUCache",
- "com.mysql.jdbc.util.ReadAheadInputStream",
- "org.h2.index.Index",
- "com.mysql.jdbc.MysqlDataTruncation",
- "com.mysql.jdbc.CharsetMapping",
- "org.h2.store.fs.FilePathDisk",
- "org.h2.mvstore.MVMap",
- "com.mysql.jdbc.Field",
- "com.att.eelf.configuration.SLF4jWrapper",
- "com.mysql.jdbc.PreparedStatement$BatchVisitor",
- "org.h2.store.DataHandler",
- "org.h2.jdbc.JdbcConnection",
- "org.openecomp.mso.logger.MsoLogger",
- "com.mysql.jdbc.ConnectionPropertiesImpl$StringConnectionProperty",
- "com.mysql.jdbc.ConnectionProperties",
- "org.h2.Driver",
- "org.h2.engine.Role",
- "com.mysql.jdbc.Driver",
- "org.h2.value.ValueByte",
- "com.mysql.jdbc.ServerPreparedStatement",
- "org.camunda.bpm.cockpit.db.CommandExecutor",
- "com.mysql.jdbc.exceptions.MySQLNonTransientException",
- "org.camunda.bpm.cockpit.CockpitRuntimeDelegate",
- "org.camunda.bpm.webapp.plugin.resource.AbstractAppPluginResource",
- "com.mysql.jdbc.MysqlSavepoint",
- "com.mysql.jdbc.CallableStatement",
- "com.mysql.jdbc.RowData",
- "org.h2.value.Value$ValueClob",
- "com.att.eelf.i18n.EELFResourceManager",
- "org.h2.value.ValueJavaObject$NotSerialized",
- "org.h2.value.CaseInsensitiveMap",
- "com.mysql.jdbc.CallableStatement$CallableStatementParamInfoJDBC3",
- "org.h2.util.IOUtils",
- "com.mysql.jdbc.PreparedStatement$ParseInfo",
- "org.h2.message.TraceSystem",
- "org.openecomp.mso.logger.MessageEnum",
- "org.openecomp.mso.logger.MsoLogger$ResponseCode",
- "org.openecomp.mso.logger.MsoLogger$StatusCode",
- "com.att.eelf.configuration.EELFManager",
- "com.mysql.jdbc.StreamingNotifiable",
- "com.mysql.jdbc.ResultSetInternalMethods",
- "org.h2.command.Prepared",
- "com.mysql.jdbc.ConnectionPropertiesImpl$IntegerConnectionProperty",
- "com.mysql.jdbc.NonRegisteringDriver",
- "org.h2.jdbc.JdbcSQLException",
- "org.h2.mvstore.MVMap$MapBuilder",
- "org.h2.engine.ConnectionInfo",
- "com.att.eelf.i18n.EELFResourceManager$1",
- "com.mysql.jdbc.ExceptionInterceptor",
- "org.h2.value.ValueTime"
- );
- }
-
- private static void resetClasses() {
- org.evosuite.runtime.classhandling.ClassResetter.getInstance().setClassLoader(URNResourceESTestscaffolding.class.getClassLoader());
-
- org.evosuite.runtime.classhandling.ClassStateSupport.resetClasses(
- "org.openecomp.mso.logger.MsoLogger$Catalog",
- "org.openecomp.mso.logger.MsoLogger",
- "com.att.eelf.i18n.EELFResourceManager",
- "com.att.eelf.i18n.EELFMsgs",
- "com.att.eelf.i18n.EELFResourceManager$RESOURCE_TYPES",
- "com.att.eelf.configuration.EELFLogger$Level",
- "com.att.eelf.configuration.EELFManager",
- "org.openecomp.mso.logger.MessageEnum",
- "org.openecomp.camunda.bpmn.plugin.urnmap.resources.URNResource",
- "org.camunda.bpm.cockpit.Cockpit",
- "org.h2.jdbcx.JdbcConnectionPool",
- "org.h2.message.TraceObject",
- "com.mysql.jdbc.NonRegisteringDriver",
- "com.mysql.jdbc.Driver",
- "org.hsqldb.jdbc.JDBCDriver",
- "org.h2.Driver",
- "org.h2.jdbcx.JdbcDataSource",
- "org.h2.jdbcx.JdbcDataSourceFactory",
- "org.h2.message.TraceSystem",
- "org.h2.util.Utils",
- "org.h2.util.MathUtils",
- "org.h2.constant.SysProperties",
- "org.h2.message.Trace",
- "org.h2.util.StringUtils",
- "org.h2.value.Value",
- "org.h2.value.ValueDecimal",
- "org.h2.jdbcx.JdbcXAConnection",
- "org.h2.mvstore.MVStore",
- "com.mysql.jdbc.Messages",
- "com.mysql.jdbc.ConnectionPropertiesImpl",
- "com.mysql.jdbc.Util",
- "com.mysql.jdbc.ConnectionImpl",
- "com.mysql.jdbc.JDBC4Connection",
- "com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty",
- "com.mysql.jdbc.ConnectionPropertiesImpl$BooleanConnectionProperty",
- "com.mysql.jdbc.ConnectionPropertiesImpl$IntegerConnectionProperty",
- "com.mysql.jdbc.ConnectionPropertiesImpl$MemorySizeConnectionProperty",
- "com.mysql.jdbc.ConnectionPropertiesImpl$StringConnectionProperty",
- "com.mysql.jdbc.ConnectionPropertiesImpl$LongConnectionProperty",
- "com.mysql.jdbc.StringUtils",
- "com.mysql.jdbc.CharsetMapping",
- "com.mysql.jdbc.log.StandardLogger",
- "org.h2.engine.SessionRemote",
- "org.h2.mvstore.DataUtils",
- "org.h2.message.DbException",
- "org.h2.constant.ErrorCode",
- "org.h2.jdbc.JdbcSQLException",
- "org.h2.command.dml.SetTypes",
- "org.h2.engine.ConnectionInfo",
- "org.h2.engine.Database",
- "org.h2.util.BitField",
- "org.h2.engine.Mode",
- "org.h2.store.fs.FilePath",
- "org.h2.store.fs.FilePathDisk",
- "org.h2.store.fs.FilePathMem",
- "org.h2.store.fs.FilePathNioMem",
- "org.h2.store.fs.FilePathSplit",
- "org.h2.constant.DbSettings",
- "org.h2.value.CompareMode",
- "org.h2.store.FileLock",
- "org.h2.util.SortedProperties",
- "org.h2.table.Table",
- "com.mysql.jdbc.StatementImpl",
- "com.mysql.jdbc.PreparedStatement",
- "com.mysql.jdbc.MysqlIO",
- "com.mysql.jdbc.CallableStatement"
- );
- }
-}
diff --git a/bpmn/pom.xml b/bpmn/pom.xml index 073db573fb..ebaa5c4860 100644 --- a/bpmn/pom.xml +++ b/bpmn/pom.xml @@ -15,7 +15,7 @@ <packaging>pom</packaging> <properties> - <camunda.version>7.6.0</camunda.version> + <camunda.version>7.7.0</camunda.version> <camunda.bpm.assert.version>1.2</camunda.bpm.assert.version> <h2.version>1.3.173</h2.version> <groovy.version>2.4.7</groovy.version> @@ -108,11 +108,6 @@ <testFailureIgnore>false</testFailureIgnore> <argLine>-Xss1m @{argLine}</argLine> <properties> - <property> - <!-- disabling project default evosuite listener--> - <name>usedefaultlisteners</name> - <value>true</value> - </property> </properties> </configuration> |