Merge "Update SQL dump for IPAM tables"
authorDan Timoney <dt5972@att.com>
Fri, 24 Aug 2018 19:35:00 +0000 (19:35 +0000)
committerGerrit Code Review <gerrit@onap.org>
Fri, 24 Aug 2018 19:35:00 +0000 (19:35 +0000)
Former-commit-id: 0b84e06308b58d0308f40755b112cd730132b569

168 files changed:
SdncReports/README.md [new file with mode: 0644]
SdncReports/SdncReportsApi/pom.xml [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/Application.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/ServletInitializer.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/config/EmbeddedMariaDbConfig.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/config/JpaApplicationConfig.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/controller/CertificationController.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/controller/ReportController.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/CertificationClientService.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/IReportService.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/LayerTestService.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/LayerTestServiceImpl.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/ReportServiceImpl.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/application.properties [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/log4j2.xml [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/footer.html [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/form-validationTest.html [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/form-viewReport.html [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/header.html [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/FailImage.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/download.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/downloadImage.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/error.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/fail.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/images.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/networklayer.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/protocaol.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/protocol.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/reachable.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/router.jpg [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/router.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/search.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/success.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/validation.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/images/waning.png [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllDevices.json [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllReports.json [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllTest.json [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllVNF.json [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getTestResult.json [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/style/sdnc-style.css [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/style/w3.css [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/resources/static/tabs.html [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/WEB-INF/views/index.jsp [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/js/app.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-growl.min.css [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-growl.min.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-route.min.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-sanitize.min.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-utils-pagination/dirPagination.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular.min.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.css [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.min.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/bootstrap-3.3.7/package.json [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/jquery.min.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-csv/build/ng-csv.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-csv/build/ng-csv.min.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.min.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.vanilla.min.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/package.json [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/node_modules/tether.min.js [new file with mode: 0644]
SdncReports/SdncReportsApi/src/main/webapp/package.json [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/ApplicationTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/controller/ReportControllerTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/CertificationClientServiceTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/LayerTestServiceImplTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/NetworkCertificationTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/ReportServiceImplTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/CertificationInputsTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/InputTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/OdlResponseTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/OutputTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/PreTestResponseTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/RequestTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/ResponseTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/ValidationTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/VnfListTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/VnfTest.java [new file with mode: 0644]
SdncReports/SdncReportsApi/src/test/resources/application.properties [new file with mode: 0644]
SdncReports/SdncReportsApi/start.sh [new file with mode: 0644]
SdncReports/SdncReportsDao/pom.xml [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/CertificationInputs.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/DeviceConfig.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Input.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/ODLClientResponse.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Output.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/PreTestConfig.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/PreTestResponse.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Request.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Response.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/ValidationTestType.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Vnf.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/VnfList.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/repository/DeviceRepository.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/repository/PreTestConfigRepository.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/ConfigDetailsRestModel.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/JSONTags.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/PreTestModel.java [new file with mode: 0644]
SdncReports/SdncReportsDao/src/main/resources/application.properties [new file with mode: 0644]
SdncReports/SdncReportsDao/src/test/resources/application.properties [new file with mode: 0644]
SdncReports/pom.xml [new file with mode: 0644]
configbackuprestore/getBackupVnfDetailService/pom.xml [new file with mode: 0644]
configbackuprestore/getBackupVnfDetailService/read.md [new file with mode: 0644]
configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/controller/VnfComparisonController.java [new file with mode: 0644]
configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/dao/VnfComparisonRepository.java [new file with mode: 0644]
configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/dao/VnfIds.java [new file with mode: 0644]
configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfCompareResponse.java [new file with mode: 0644]
configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfConfigDetailsDB.java [new file with mode: 0644]
configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfDetails.java [new file with mode: 0644]
configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfComparisonService.java [new file with mode: 0644]
configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfDetailsForVnfIDAndVnfVersionService.java [new file with mode: 0644]
configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfDetailsForVnfIDService.java [new file with mode: 0644]
configbackuprestore/getBackupVnfDetailService/src/test/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfComparisonServiceTest.java [new file with mode: 0644]
configbackuprestore/pom.xml [new file with mode: 0644]
configbackuprestore/read.md [new file with mode: 0644]
configbackuprestore/vnfconfigreportsservice/README.md [new file with mode: 0644]
configbackuprestore/vnfconfigreportsservice/pom.xml [new file with mode: 0644]
configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/controller/VnfReportsServiceController.java [new file with mode: 0644]
configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/dao/VnfReportsServiceRepo.java [new file with mode: 0644]
configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/model/VnfConfigDetailsDB.java [new file with mode: 0644]
configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/service/VnfReportsServiceImpl.java [new file with mode: 0644]
configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/service/Vnfreportsservice.java [new file with mode: 0644]
configbackuprestore/vnfconfigreportsservice/src/test/java/com/onap/sdnc/vnfreportsservice/service/VnfReportsServiceImplTest.java [new file with mode: 0644]
docs/apis/genericresource.rst
installation/ueb-listener/src/main/properties/ueb-listener.properties
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-activate.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-create.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-deactivate.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-delete.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-get-site-param.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-activate.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-create.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-deactivate.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-delete.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-activate.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-create.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-deactivate.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-delete.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-wanport-vnf-topology-operation-underlay.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_site-vnf-topology-operation-activate.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_site-vnf-topology-operation-create.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_site-vnf-topology-operation-deactivate.json
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_site-vnf-topology-operation-delete.json
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-activate.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-create.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-deactivate.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-delete.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-get-site-param.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-activate.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-create.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-deactivate.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-delete.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-activate.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-deactivate.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-delete.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-wanport-vnf-topology-operation-underlay.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_site-vnf-topology-operation-activate.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_site-vnf-topology-operation-create.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_site-vnf-topology-operation-deactivate.xml
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_site-vnf-topology-operation-delete.xml
platform-logic/restapi-templates/src/main/json/sdwan-port.json
platform-logic/restapi-templates/src/main/json/sdwan-wan-port.json
pom.xml

diff --git a/SdncReports/README.md b/SdncReports/README.md
new file mode 100644 (file)
index 0000000..651f64b
--- /dev/null
@@ -0,0 +1,11 @@
+Parent-SdncReports (ccsdk is used as parent)
+---------------------------------------------
+Child-
+       SdncReportsApi
+       SdncReportsDao
+DB information:-
+Need to change below DB details inside application.properties.
+
+       spring.datasource.url=jdbc:mariadb://localhost:3306/testreports
+       spring.datasource.username=root
+       spring.datasource.password=root
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/pom.xml b/SdncReports/SdncReportsApi/pom.xml
new file mode 100644 (file)
index 0000000..2529a05
--- /dev/null
@@ -0,0 +1,210 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+   <packaging>jar</packaging>
+ <artifactId>SdncReportsApi</artifactId>
+  <parent>
+    <groupId>org.onap.ccsdk.parent</groupId>
+    <artifactId>SdncReports</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+  </parent>
+  
+  
+   <properties>
+               <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+               <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+               <java.version>1.8</java.version>
+       </properties>
+       
+  <dependencies>
+       
+  <!-- <dependency>
+    <groupId>com.h2database</groupId>
+    <artifactId>h2</artifactId>
+    <scope>test</scope>
+    <version>1.4.194</version>
+ </dependency> -->
+
+       <dependency>
+    <groupId>ch.vorburger.mariaDB4j</groupId>
+    <artifactId>mariaDB4j</artifactId>
+    <version>2.2.3</version>
+</dependency>
+
+<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
+               <dependency>
+                       <groupId>com.google.code.gson</groupId>
+                       <artifactId>gson</artifactId>
+                       <version>2.8.2</version>
+               </dependency>
+               
+       <!-- <dependency>
+               <groupId>com.sdnc.reports</groupId>
+               <artifactId>sdnc_reports_certification</artifactId>
+               <version>0.0.1-SNAPSHOT</version>
+                 <scope>test</scope>
+                   <classifier>exec</classifier>
+       </dependency> -->
+       
+       <dependency>
+               <groupId>org.onap.ccsdk.parent</groupId>
+               <artifactId>SdncReportsDao</artifactId>
+               <version>0.0.1-SNAPSHOT</version>
+       </dependency>
+       
+       <dependency>
+                       <groupId>org.mariadb.jdbc</groupId>
+                       <artifactId>mariadb-java-client</artifactId>
+                       <version>1.1.9</version>
+               </dependency>
+               
+       <dependency>
+               <groupId>org.springframework.boot</groupId>
+               <artifactId>spring-boot-starter-web</artifactId>
+               <version>1.5.4.RELEASE</version>
+       </dependency>
+
+       <dependency>
+               <groupId>org.springframework</groupId>
+               <artifactId>spring-context</artifactId>
+               <version>4.3.9.RELEASE</version>
+       </dependency>
+       
+       <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-tomcat</artifactId>
+                       <scope>provided</scope>
+       </dependency>
+
+       <dependency>
+                       <groupId>org.apache.tomcat.embed</groupId>
+                       <artifactId>tomcat-embed-jasper</artifactId>
+                       <scope>provided</scope>
+       </dependency>
+       
+       
+       <dependency>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-devtools</artifactId>
+                    <optional>true</optional>
+    </dependency> 
+
+       <dependency>
+           <groupId>org.springframework.boot</groupId>
+           <artifactId>spring-boot-starter-test</artifactId>
+           <scope>test</scope>
+           <version>1.5.3.RELEASE</version>
+       </dependency>
+       
+       <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-data-jpa</artifactId>           
+       </dependency>   
+       
+               <!-- Add Log4j2 Dependency -->
+       <dependency>
+               <groupId>org.springframework.boot</groupId>
+               <artifactId>spring-boot-starter-log4j2</artifactId>
+       </dependency>   
+
+
+  </dependencies>
+  
+  <build>
+
+  <plugins>
+
+    <plugin>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-maven-plugin</artifactId>
+      <configuration>
+        <executable>true</executable>
+    </configuration>
+     <!--  <configuration>
+        <mainClass>${start-class}</mainClass>
+        <layout>ZIP</layout>
+      </configuration>
+      <executions>
+        <execution>
+          <goals>
+            <goal>repackage</goal>
+          </goals>
+        </execution>
+      </executions> -->
+    </plugin>
+
+<plugin>
+  <groupId>org.apache.maven.plugins</groupId>
+  <artifactId>maven-surefire-plugin</artifactId>
+  <configuration>
+    <skipTests>true</skipTests>
+  </configuration>
+</plugin>
+
+<plugin>
+    <groupId>org.jacoco</groupId>
+    <artifactId>jacoco-maven-plugin</artifactId>
+    <version>0.7.5.201505241946</version>
+    <executions>
+        <!--
+            Prepares the property pointing to the JaCoCo runtime agent which
+            is passed as VM argument when Maven the Surefire plugin is executed.
+        -->
+        <execution>
+            <id>pre-unit-test</id>
+            <goals>
+                <goal>prepare-agent</goal>
+            </goals>
+            <configuration>
+                <!-- Sets the path to the file which contains the execution data. -->
+                <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
+                <!--
+                    Sets the name of the property containing the settings
+                    for JaCoCo runtime agent.
+                -->
+                <propertyName>surefireArgLine</propertyName>
+            </configuration>
+        </execution>
+        <!--
+            Ensures that the code coverage report for unit tests is created after
+            unit tests have been run.
+        -->
+        <execution>
+            <id>post-unit-test</id>
+            <phase>test</phase>
+            <goals>
+                <goal>report</goal>
+            </goals>
+            <configuration>
+                <!-- Sets the path to the file which contains the execution data. -->
+                <dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
+                <!-- Sets the output directory for the code coverage report. -->
+                <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
+            </configuration>
+        </execution>
+    </executions>
+</plugin>
+
+        <plugin>
+                       <groupId>io.fabric8</groupId>
+                       <artifactId>docker-maven-plugin</artifactId>
+                       <version>0.15.3</version>
+                       <configuration>
+                           <dockerHost>http://127.0.0.1:9092</dockerHost>
+                           <verbose>true</verbose>
+                           <images>
+                               <image>
+                                   <name>vishal/sdnc_report</name>
+                                   <build>
+                                       <dockerFile>Dockerfile</dockerFile>
+                                       <assembly>
+                                           <descriptorRef>artifact</descriptorRef>
+                                       </assembly>
+                                   </build>
+                               </image>
+                           </images>
+                       </configuration>
+                   </plugin>
+  </plugins>
+
+</build>
+</project>
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/Application.java b/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/Application.java
new file mode 100644 (file)
index 0000000..b7cd50f
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports;
+
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+
+@SpringBootApplication(scanBasePackages = {"com.onap.sdnc.reports.*","com.onap.sdnc.testapi.*"})
+@EnableAutoConfiguration
+public class Application {
+       private static final Logger logger = LogManager.getLogger(Application.class);
+       public static void main(String[] args) {
+               
+               SpringApplication.run(Application.class, args);
+               logger.info("SDNC REPORTS API Has Started..");
+       }
+}
+
+
diff --git a/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/ServletInitializer.java b/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/ServletInitializer.java
new file mode 100644 (file)
index 0000000..55678cb
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.support.SpringBootServletInitializer;
+
+public class ServletInitializer extends SpringBootServletInitializer {
+
+       @Override
+       protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+               return application.sources(Application.class);
+       }
+
+}
diff --git a/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/config/EmbeddedMariaDbConfig.java b/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/config/EmbeddedMariaDbConfig.java
new file mode 100644 (file)
index 0000000..ca45838
--- /dev/null
@@ -0,0 +1,5 @@
+package com.onap.sdnc.reports.config;
+
+public class EmbeddedMariaDbConfig {
+
+}
diff --git a/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/config/JpaApplicationConfig.java b/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/config/JpaApplicationConfig.java
new file mode 100644 (file)
index 0000000..97ff282
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.config;
+
+
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+
+@EnableJpaRepositories("com.onap.sdnc.reports.repository")
+@EntityScan("com.onap.sdnc.reports.*")
+public class JpaApplicationConfig {
+       
+}
diff --git a/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/controller/CertificationController.java b/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/controller/CertificationController.java
new file mode 100644 (file)
index 0000000..7d69794
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.onap.sdnc.reports.model.Request;
+import com.onap.sdnc.reports.model.Response;
+import com.onap.sdnc.reports.service.LayerTestService;
+
+
+@RestController
+public class CertificationController {
+
+       @Autowired
+       LayerTestService ltService;     
+       
+       @RequestMapping("/")
+       ModelAndView home(ModelAndView modelAndView) {
+
+               modelAndView.setViewName("index");
+
+               return modelAndView;
+       }
+       
+       @RequestMapping(value="/runtest",method=RequestMethod.POST, consumes="application/json",produces=MediaType.APPLICATION_JSON_VALUE)
+       public Response findReportByTestName(@RequestBody Request req) {                
+               
+               return ltService.networkCertification(req);             
+       }
+}
diff --git a/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/controller/ReportController.java b/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/controller/ReportController.java
new file mode 100644 (file)
index 0000000..55a6360
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.controller;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+import com.onap.sdnc.reports.service.IReportService;
+
+@RestController
+public class ReportController {
+
+       private static final Logger logger = LogManager.getLogger(ReportController.class);
+       
+       @Autowired
+       IReportService reportService;
+       @RequestMapping(value="/findReportByDeviceIP/{startDate}/{endDate}/{deviceIP:.+}", produces = "application/json",method=RequestMethod.GET)
+       public List<PreTestModel> findReportByDeviceIP(@PathVariable("startDate") Date startDate,@PathVariable("endDate") Date endDate,@PathVariable("deviceIP") String deviceIP) {
+
+               try{
+                       logger.info("findReportByDeviceIP Started Working..");
+                       if(logger.isDebugEnabled())
+                               logger.debug("Received StartDate : "+startDate+" ,EndDate : "+endDate+"  ,DeviceIP : "+deviceIP);
+
+                       return reportService.findReportByDeviceIP(startDate,endDate,deviceIP);
+               }
+               catch(Exception ex)
+               {
+                       logger.info("Exception Occured : "+ex.getLocalizedMessage());
+                       return java.util.Collections.emptyList();
+               }               
+       }
+}
diff --git a/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/CertificationClientService.java b/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/CertificationClientService.java
new file mode 100644 (file)
index 0000000..589fecf
--- /dev/null
@@ -0,0 +1,210 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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 com.onap.sdnc.reports.service;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import com.onap.sdnc.reports.model.CertificationInputs;
+import com.onap.sdnc.reports.model.DeviceConfig;
+import com.onap.sdnc.reports.model.ODLClientResponse;
+import com.onap.sdnc.reports.model.Output;
+import com.onap.sdnc.reports.model.PreTestResponse;
+import com.onap.sdnc.reports.repository.DeviceRepository;
+import com.onap.sdnc.reports.repository.PreTestConfigRepository;
+
+@Service
+public class CertificationClientService {
+
+       private static final Logger logger = Logger.getLogger(CertificationClientService.class);
+
+       
+       @Autowired
+       DeviceRepository deviceRepository;
+       
+       @Autowired
+       PreTestConfigRepository preTestRepo;
+       
+       ObjectMapper mapper = new ObjectMapper();
+
+       public void restClient(CertificationInputs vnfinfo, List<PreTestResponse> preTestNew, String testType) {
+
+               PreTestResponse preTest = new PreTestResponse();
+
+               Output output = new Output();
+               if ("network".equalsIgnoreCase(testType)) {
+                       output = pingTest(vnfinfo);
+               }
+               if ("protocol".equalsIgnoreCase(testType)) {
+                       output = protocolTest(vnfinfo);
+               }
+               preTest.setStatus(output.getStatus());
+               preTest.setIpaddress(output.getIpaddress());
+               preTest.setStatistics(output.getStatistics());
+               preTest.setAvgTime(output.getAvgTime());
+               preTest.setTesttype(testType);
+               preTest.setHostname(output.getHostname());
+               preTestNew.add(preTest);
+               
+               ODLClientResponse odlClientResponse=new ODLClientResponse();
+               odlClientResponse.setOutput(output);
+               
+               testSaveResults(preTest, odlClientResponse);            
+       }
+
+       public static Output pingTest(CertificationInputs vnfinfo) {
+               
+               Output output = new Output();
+               String pingCmd = "ping " + vnfinfo.getInput().getIpaddress();
+               String pingResult = "";
+               String testResult = "fail";
+               String status = "unreachable";
+               String reason = null;
+               String timeRes = null;
+               String percentile = null;
+               boolean flag = false;
+               boolean flag1 = false;
+               try {
+                       InetAddress byIpaddress = InetAddress.getByName(vnfinfo.getInput().getIpaddress());
+                       String byHostName=vnfinfo.getInput().getHostname();                     
+                       flag = byIpaddress.isReachable(5000);
+
+               } catch (UnknownHostException e) {
+                       logger.info("Network certification Exception : " + e);
+               } catch (IOException e) {
+                       logger.info("Network certification Exception : " + e);
+               }
+               
+               if (flag ) {
+                       try {
+                               Runtime r = Runtime.getRuntime();
+                               Process p = r.exec(pingCmd);
+                               BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
+                               String inputLine;
+                               while ((inputLine = in.readLine()) != null) {
+                                       if (pingResult.equals("")) {
+                                               pingResult = inputLine;
+                                       } else {
+                                               pingResult += "~" + inputLine;
+                                       }
+                               }
+                               String[] results = pingResult.split("~");
+                               for (String res : results) {
+                                       if (res.trim().contains("Packets:")) {
+                                               testResult = "pass";
+                                               status = "reachable";
+                                               String packets = res.trim();
+                                               String[] lossPercentile = packets.split("\\(");
+                                               percentile = lossPercentile[1].replace(")", "").replace(",", "").trim();
+                                       }
+                                       if (res.trim().contains("Minimum")) {
+                                               String timeMs = res.trim();
+                                               String[] time = timeMs.split(",");
+                                               timeRes = time[0];
+                                       }
+                               }
+                               in.close();
+                       } catch (Exception e) {
+                               logger.info("Network certification Exception : " + e);
+                               testResult = "fail";
+                               status = "unreachable";
+                               reason = e.toString();
+                       }
+               }
+               output.setAvgTime(timeRes);
+               output.setStatistics(percentile);
+               output.setHostname(vnfinfo.getInput().getHostname());
+               output.setIpaddress(vnfinfo.getInput().getIpaddress());
+               output.setReason(reason);
+               output.setTestresult(testResult);
+               output.setStatus(status);
+
+               return output;
+       }
+
+       public static Output protocolTest(CertificationInputs vnfinfo) {
+               Output output = new Output();
+               Socket s = null;
+               String status = "unreachable";
+               String reason = null;
+               try {
+                       s = new Socket(vnfinfo.getInput().getIpaddress(), Integer.parseInt("445"));
+                       status = "reachable";
+               } catch (Exception e) {
+                       logger.info("Protocol certification Exception : " + e);
+                       reason = e.toString();
+                       status = "unreachable";
+               } finally {
+                       if (s != null)
+                               try {
+                                       s.close();
+                               } catch (Exception e) {
+                                       logger.info("Protocol certification Exception : " + e);
+                                       reason = e.toString();
+                                       status = "unreachable";
+                               }
+               }
+               output.setStatus(status);
+               output.setIpaddress(vnfinfo.getInput().getIpaddress());
+               output.setReason(reason);
+               
+               return output;
+       }
+       
+       public void testSaveResults(PreTestResponse preTest,ODLClientResponse output) {
+               boolean flag=false;
+               long devId = 1;
+               
+               String timeStamp = new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime());
+               try {
+                       DeviceConfig devicename = deviceRepository.findDeviceIP(preTest.getIpaddress());
+                       devId = devicename.getId();                     
+               } catch (Exception e) {
+                       flag=true;                      
+               }
+               if(flag) {
+                       deviceRepository.logDeviceName(preTest.getIpaddress(), timeStamp);      
+               }
+               
+               DeviceConfig devicename = deviceRepository.findDeviceIP(preTest.getIpaddress());
+               devId = devicename.getId();
+               
+               Gson gson = new Gson();
+               String testName= preTest.getTesttype();
+               String result = preTest.getStatus();
+               String execuationDetails = gson.toJson(output);
+
+               preTestRepo.logPreTestReport(testName, result, execuationDetails, timeStamp, devId);
+       }
+
+}
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/IReportService.java b/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/IReportService.java
new file mode 100644 (file)
index 0000000..cdf7b16
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.service;
+
+import java.util.Date;
+import java.util.List;
+
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+
+public interface IReportService {
+
+       public List<PreTestModel> findReportByDeviceIP(@PathVariable("startDate") Date startDate,@PathVariable("endDate") Date endDate,@RequestParam("deviceIP") String deviceIP) throws Exception;
+       
+
+}
diff --git a/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/LayerTestService.java b/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/LayerTestService.java
new file mode 100644 (file)
index 0000000..85afdc9
--- /dev/null
@@ -0,0 +1,31 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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 com.onap.sdnc.reports.service;
+
+import com.onap.sdnc.reports.model.Request;
+import com.onap.sdnc.reports.model.Response;
+
+
+public interface LayerTestService {
+
+       public Response networkCertification(Request restReq);
+
+}
diff --git a/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/LayerTestServiceImpl.java b/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/LayerTestServiceImpl.java
new file mode 100644 (file)
index 0000000..0565e51
--- /dev/null
@@ -0,0 +1,93 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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 com.onap.sdnc.reports.service;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.stereotype.Service;
+import com.onap.sdnc.reports.model.CertificationInputs;
+import com.onap.sdnc.reports.model.Input;
+import com.onap.sdnc.reports.model.PreTestResponse;
+import com.onap.sdnc.reports.model.Request;
+import com.onap.sdnc.reports.model.Response;
+import com.onap.sdnc.reports.model.ValidationTestType;
+import com.onap.sdnc.reports.model.VnfList;
+import com.onap.sdnc.reports.repository.DeviceRepository;
+import com.onap.sdnc.reports.repository.PreTestConfigRepository;
+
+
+@EnableJpaRepositories("com.onap.sdnc.reports.repository")
+@EntityScan("com.onap.sdnc.*")
+@EnableAutoConfiguration
+@Service
+public class LayerTestServiceImpl implements LayerTestService {
+
+       private static final Logger logger = Logger.getLogger(CertificationClientService.class);
+       
+       @Autowired
+       CertificationClientService certificationClientservice;
+       
+       @Autowired
+       DeviceRepository deviceRepository;
+       
+       @Autowired
+       PreTestConfigRepository preTestRepo;
+       
+       @Override
+       public Response networkCertification(Request restReq) {
+               
+               String testType = "network";            
+               
+               VnfList[] vnf = restReq.getVnfList();
+               
+               ValidationTestType[] validationType = restReq.getValidationTestType();
+
+               CertificationInputs vnfRequestParams = new CertificationInputs();
+
+               Response resOutput = new Response();
+               
+               Input input = new Input();
+
+               List<PreTestResponse> preTestNew = new ArrayList<PreTestResponse>();
+               for (ValidationTestType validationTestType : validationType) {
+                       if (validationTestType.getValidationType().equalsIgnoreCase("Network Layer")) {
+                               testType = "network";
+                       }
+                       if (validationTestType.getValidationType().equalsIgnoreCase("Protocol Layer")) {
+                               testType = "protocol";
+                       }
+                       for (VnfList vnfList : vnf) {
+                               input.setIpaddress(vnfList.getIpAddress());
+                               input.setHostname(vnfList.getHostName());
+                               vnfRequestParams.setInput(input);
+                               certificationClientservice.restClient(vnfRequestParams, preTestNew, testType);
+                       }
+               }               
+               resOutput.setPreTestResponse(preTestNew);               
+               return resOutput;
+       }
+
+}
diff --git a/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/ReportServiceImpl.java b/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/ReportServiceImpl.java
new file mode 100644 (file)
index 0000000..68e2898
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.onap.sdnc.reports.model.PreTestConfig;
+import com.onap.sdnc.reports.repository.DeviceRepository;
+import com.onap.sdnc.reports.repository.PreTestConfigRepository;
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+
+@Service
+public class ReportServiceImpl implements IReportService {
+
+       private static final Logger logger = LogManager.getLogger(ReportServiceImpl.class);
+       
+       @Autowired
+       DeviceRepository deviceRepository;
+       
+       @Autowired 
+       PreTestConfigRepository preTestConfigRepository;
+       
+       
+       @Override
+       public List<PreTestModel> findReportByDeviceIP(Date startDate, Date endDate, String deviceIP) throws Exception{
+               
+               try{
+
+                       List<PreTestConfig> resultSet= preTestConfigRepository.findReportByDeviceIP(startDate, endDate, deviceIP);
+
+                       if(logger.isDebugEnabled())
+                               logger.debug("Received Output From Repository Is: "+resultSet);
+                       
+                       List<PreTestModel> preTestList=new ArrayList<PreTestModel>();
+                       for(PreTestConfig config : resultSet)
+                       {
+                               try{
+                                       long deviceid=config.getDevice().getId();
+                                       long testid=config.getTestId();
+                                       String testName=config.getTestName();
+                                       String deviceIp=config.getDevice().getDeviceIP();
+                                       String execuationDetails=config.getExecuationDetails();
+                                       String result=config.getResult();
+                                       Date timeStamp=config.getTimestamp();
+                                       
+                                       PreTestModel model=new PreTestModel(testid, deviceid, testName, deviceIp, execuationDetails, result, timeStamp);
+                                       preTestList.add(model);
+                               }
+                               catch(Exception ex)
+                               {
+                                       logger.info("Exception Occured : "+ex.getLocalizedMessage());
+                                       logger.error(ex);
+                               }                               
+                       }
+                       logger.info("Final PreTestConfig List Size : "+preTestList.size());             
+                       logger.info("findReportByDeviceIP Finished Working..");
+                       return preTestList;
+               }
+               catch(Exception ex)
+               {
+                       logger.info("Exception Occured : "+ex.getLocalizedMessage());
+                       logger.error(ex);
+                       throw new Exception("Exception occurred while processing findReportByDeviceIP ",ex);
+               }               
+       }
+}
diff --git a/SdncReports/SdncReportsApi/src/main/resources/application.properties b/SdncReports/SdncReportsApi/src/main/resources/application.properties
new file mode 100644 (file)
index 0000000..c680ce2
--- /dev/null
@@ -0,0 +1,30 @@
+server.port = 9003
+
+spring.jackson.serialization.fail-on-empty-beans=false
+
+server.tomcat.uri-encoding=utf-8
+
+server.error.whitelabel.enabled=false
+spring.mvc.view.prefix = /WEB-INF/views/
+spring.mvc.view.suffix = .jsp
+
+spring.datasource.url=jdbc:mariadb://localhost:3306/testreports
+spring.datasource.username=root
+spring.datasource.password=12345
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+# Keep the connection alive if idle for a long time (needed in production)
+spring.datasource.testWhileIdle=true
+spring.datasource.validationQuery=SELECT 1
+# ===============================
+# = JPA / HIBERNATE
+# ===============================
+# Show or not log for each sql query
+spring.jpa.show-sql=true
+# Hibernate ddl auto (create, create-drop, update): with "create-drop" the database
+# schema will be automatically created afresh for every start of application
+spring.jpa.hibernate.ddl-auto=update
+# Naming strategy
+spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
+spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
+# Allows Hibernate to generate SQL optimized for a particular DBMS
+spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/resources/log4j2.xml b/SdncReports/SdncReportsApi/src/main/resources/log4j2.xml
new file mode 100644 (file)
index 0000000..e443b52
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="WARN" monitorInterval="30">
+    <Properties>
+        <Property name="LOG_PATTERN">
+            %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${hostName} --- [%15.15t] %-40.40c{1.} : %m%n%ex
+        </Property>
+    </Properties>
+    <Appenders>
+        
+        <!-- <Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+        </Console> -->
+        
+               <!-- Rolling File Appender -->
+       <RollingFile name="FileAppender" fileName="logs/sdnc_report_api.log" 
+                    filePattern="logs/sdnc_report_api-%d{yyyy-MM-dd}-%i.log">
+           <PatternLayout>
+               <Pattern>${LOG_PATTERN}</Pattern>
+           </PatternLayout>
+           <Policies>
+               <SizeBasedTriggeringPolicy size="10MB" />
+           </Policies>
+           <DefaultRolloverStrategy max="10"/>
+       </RollingFile>
+        
+    </Appenders>
+    
+    <Loggers>
+        <Logger name="com.onap.sdnc.reports" level="debug" additivity="false">
+            <AppenderRef ref="FileAppender" />
+        </Logger>
+               <Root level="debug">
+                   <!-- <AppenderRef ref="ConsoleAppender" /> -->
+                   <AppenderRef ref="FileAppender"/>
+          </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/footer.html b/SdncReports/SdncReportsApi/src/main/resources/static/footer.html
new file mode 100644 (file)
index 0000000..0b31ef7
--- /dev/null
@@ -0,0 +1,3 @@
+<div class="footer">
+ <p style=" position: absolute; bottom: 5; left: 5; width: 100%; text-align: center;""> @Copyright 2018 All rights reserved</p>
+</div>
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/form-validationTest.html b/SdncReports/SdncReportsApi/src/main/resources/static/form-validationTest.html
new file mode 100644 (file)
index 0000000..7ca70cc
--- /dev/null
@@ -0,0 +1,148 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * 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=========================================================
+   */
+    -->
+<div class="testMain" style="height:auto ;">  
+       <div class="heading">
+               <img src="images/validation.png" width=30 height="30"
+                       style="margin-left: 5px;">&nbsp;&nbsp;Pre-test/Certification
+       </div>
+       <form name="reportForm">
+               <div class="row>
+         <div role="
+                       alert" style="margin-left: 20px; margin-bottom: 5px;">
+                       <button class="btn btn-danger testNotification" ng-show="showError">
+                               <img src="images/error.png" width=40 height="30" class="testImgIcon">{{errorMessage}}
+                       </button>
+                       <button class="btn btn-success testNotification"
+                               ng-show="showSuccess">
+                               <img src="images/success.png" width=40 height="30"
+                                       class="testImgIcon">{{successMessage}}
+                       </button>
+                       <button class="btn btn-warning testNotification"
+                               ng-show="showWarninf">
+                               <img src="images/waning.png" width=35 height="25"
+                                       class="testImgIcon">{{warningMessage}}
+                       </button>
+                       <button class="btn btn-info testNotification" ng-show="showInfo">{{infoMessage}}</button>
+               </div>
+               <div class="row">
+                       <div class="column testCol">
+                               <label class="labeltext">Specify IP Address</label>
+                       </div>
+                       <div class="column"
+                               style="background-color: #f2f2f2; width: 50%; margin-left: 0px;">
+                               <input type="text" ng-model="IPAddress" name="IPAddress"
+                                       style="margin-left: 5px; width: 170px;" ng-ip-address
+                                       placeholder='255.255.255.255' required></input>
+                               <div role="alert">
+                                       <span class="error" ng-show="reportForm.IPAddress.$error.required">Required!</span>
+                               </div>
+                               <div role="alert">
+                                       <span class="error" ng-if="reportForm.IPAddress.$invalid">Not
+                                               a valid IPAddress!</span>
+                               </div>
+                               <div role="alert">
+                                       <span class="error" ng-if="reportForm.IPAddress.pattern">Not
+                                               a valid IPAddress!</span>
+                               </div>
+                       </div>
+               </div>
+               <div class="row">
+                       <div class="column testCol">
+                               <label class="labeltext">Specify Host Name</label>
+                       </div>
+                       <div class="column"
+                               style="background-color: #f2f2f2; width: 50%; margin-left: 0px;">
+                               <input type="text" ng-model="HostName" name="HostName"
+                                       style="margin-left: 5px; width: 170px;" required
+                                       ng-pattern="hostNamePattern"></input>
+                               <div role="alert">
+                                       <span class="error" ng-show="reportForm.HostName.$error.required">Required!</span>
+                               </div>
+                               <div role="alert">
+                                       <span class="error" ng-show="reportForm.HostName.$invalid">Not
+                                               a valid HostName!</span>
+                               </div>
+                       </div>
+               </div>
+               <div class="row">
+                       <div class="column"
+                               style="width: 25%; background-color: #f2f2f2; height: 45px; margin-left: 35px;">
+                               <label class="labeltext">Select Certification</label>
+                       </div>
+                       <div class="column"
+                               style="background-color: #f2f2f2; width: 50%; height: 45px; margin-left: 0px;">
+                               <label ng-repeat="val in validationTestList" class="labeltext"
+                                       style="margin-right: 35px;"> <input type="checkbox"
+                                       ng-model="val.Selected" class="check"
+                                       ng-change="updateSelection($index,validationTestList,val.validationType);">{{val.validationType}}</input>
+                               </label>
+                       </div>
+               </div>
+               <!--<hr style="border-color:darkGrey;">-->
+               <div class="row">
+                       <div class="column btnRunTest">
+                               <input type="submit" ng-click="runTest()" value="Run PreTest"
+                                       id="btnSubmit" ng-disabled="showError" style="margin-left: 0px;" />
+                       </div>
+
+</div>
+                       <table class="tableDisplay" ng-show="ShowResult" id="tableToExport"
+                               style="margin-left: 10px; width: 1000px;">
+                               <tr class="first_row">
+                                       <th>SNo.</th>
+                                       <th colspan="2" style="text-align: center;">TestName</th>
+                                       <th>Device IP</th>
+                                       <th>Status</th>
+                                       <th style="width: 20%;">Statistics (%Loss)</th>
+                                       <th style="width: 20%;">Average Time (ms)</th>
+                                       <th>Result</th>
+                               </tr>
+                               <tr ng-repeat="test in objPreTest">
+                                       <td>{{$index+1}}</td>
+                                       <td><img
+                                               src="{{(test.testtype=='Network Layer') ? 'images/images.png': 'images/protocol.png'}}"
+                                               width=40 height=30></img></td>
+                                       <td>{{test.testtype}}</td>
+                                       <td>{{test.ipaddress}}</td>
+                                       <td>{{test.status | uppercase}}</td>
+                                       <td>{{test.statistics | uppercase}}</td>
+                                       <td>{{test.avgTime | uppercase}}</td>
+
+                                       <td><img
+                                               src="{{(test.status=='reachable') ? 'images/success.png': 'images/FailImage.png'}}"
+                                               width=30 height=25></img></td>
+                               </tr>
+                       </table>
+               
+       </form>
+
+       <div class="row">
+               <div class="column" style="margin-top: 10px; width: 800px;"
+                       ng-show="ShowResult">
+                       <span class='arrowRed'>&#8594;</span> <label class="labeltext">UnReachable</label>&nbsp;&nbsp;
+                       <span class='arrowGreen'>&#8594;</span> <label class="labeltext">Reachable</label>&nbsp;&nbsp;
+                       <span><img src='images/success.png' width=30 height=25></span>
+                       <label class="labeltext">Pass</label>&nbsp;&nbsp; <span><img
+                               src='images/FailImage.png' width=30 height=25></span> <label
+                               class="labeltext">Fail</label>
+               </div>
+       </div>
+</div>
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/form-viewReport.html b/SdncReports/SdncReportsApi/src/main/resources/static/form-viewReport.html
new file mode 100644 (file)
index 0000000..ac6b86e
--- /dev/null
@@ -0,0 +1,129 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * 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=========================================================
+   */
+    -->
+<div class="ReportMain" style="height:auto ;">  
+   <div class="heading"><img src="images/search.png" width=30 height="30" style="margin-left:5px;">&nbsp;&nbsp;Search For Historical Test Reports</div>
+   <form name="myForm">
+      <div class="row">
+         <div role="alert" style="margin-left:20px;margin-bottom:5px;">
+            <button class="btn btn-danger ReportNotification" ng-show="showError"><img src="images/error.png" width=25 height="25" class="ReportImgIcon">{{errorMessage}}</button>
+            <button class="btn btn-success ReportNotification" ng-show="showSuccess"><img src="images/success.png" width=30 height="30" class="ReportImgIcon">{{successMessage}}</button>
+            <button class="btn btn-warning ReportNotification" ng-show="showWarning"><img src="images/waning.png" width=35 height="25" class="ReportImgIcon">{{warningMessage}}</button>
+         </div>
+         <div class="column" style="background-color:#f2f2f2;width:40%;">
+            <label for="exampleInput" class="labeltext">Start Date</label>
+            <input type="date" id="exampleInput" name="input" ng-model="startdate.value"
+               placeholder="yyyy-MM-dd" style="margin-left:75px;width:170px;" required/>
+            <div role="alert">
+               <span class="error" ng-show="myForm.input.$error.required">
+               Required!</span>
+               <span class="error" ng-show="myForm.input.$error.date">
+               Not a valid date!</span>
+            </div>
+         </div>
+         <div class="column" style="background-color:#f2f2f2;margin-left:0px;width:50%;">
+            <label for="exampleEndInput" class="labeltext">End Date</label>
+            <input type="date" id="exampleEndInput" name="enddate" ng-model="enddate.value"
+               placeholder="yyyy-MM-dd" style="width:170px;" required/>
+            <div role="alert">
+               <span class="error" ng-show="myForm.input.$error.required">
+               Required!</span>
+               <span class="error" ng-show="myForm.input.$error.date">
+               Not a valid date!</span>
+            </div>
+         </div>
+      </div>
+      <div class="row">
+         <div class="column" style="background-color:#f2f2f2;width:90%;">
+            <label class="labeltext">Specify Device IP</label>
+            <input type="text" ng-model="deviceIP" name="text" style="margin-left:25px;width:170px;" required></input>
+            <div role="alert">
+               <span class="error" ng-show="myForm.text.$error.required">
+               Required!</span>
+               <span class="error" ng-show="myForm.text.$error.date">
+               Not a valid date!</span>
+            </div>
+         </div>
+      </div>
+      <div class="row">
+         <input type="submit" id="btnSubmit" ng-click="getReports(deviceIP,startdate.value,enddate.value)" style="width:120px;"></input>
+      </div>
+       <table class="tableDisplay" ng-show="ShowResult" id="tableToExport">
+      <tr class="first_row">
+         <th>SNo.
+         </th>
+         <th colspan="2" style="text-align:center;">TestName
+         </th>
+         <th>DeviceIP
+         </th>
+         <th>Timestamp
+         </th>
+         <th>Status
+         </th>
+         <th style="width:20%;">Statistics (%Loss)</th>
+         <th style="width:20%;">Average Time (ms)</th>
+         <th colspan="2" style="text-align:center;">Result
+         </th>
+      </tr>
+      <tr dir-paginate="test in objTestModel | itemsPerPage: 4">
+         <td>{{$index+1}}
+         </td>
+         <td><img src="{{(test.testname=='Network Layer') ? 'images/images.png': 'images/protocol.png'}}" width=40 height=30 ></img></td>
+         <td>{{test.testname}}
+         </td>
+         <td>{{test.deviceIP}}
+         </td>
+         <td>{{test.timeStamp}}
+         </td>
+         <td>{{test.executionDetails.status | uppercase}}
+         </td>
+          <td>{{test.executionDetails.statistics}}
+         </td>
+         </td>
+          <td>{{test.executionDetails.avgTime}}
+         </td>
+         <td>{{test.result}}</td>
+         <td><img src="{{(test.result=='pass'||'reachable') ? 'images/success.png': 'images/FailImage.png'}}" width=30 height=25></img>       
+      </tr>
+   </table>
+   </form>
+     
+   <div class="row">
+      <div class="column">
+         <dir-pagination-controls ng-show="pagination"
+            max-size="5"
+            direction-links="true"
+            boundary-links="true" >
+         </dir-pagination-controls>
+      </div>
+      <div class="column" style="margin-top:10px;" ng-show="ShowResult"> 
+         <span class='arrowRed'>&#8594;</span>
+         <label class="labeltext">UnReachable</label>&nbsp;&nbsp;
+         <span class='arrowGreen'>&#8594;</span>
+         <label class="labeltext">Reachable</label>
+      </div>
+   </div>
+   <div class="row">          
+      <button type="button" ng-csv="objTestModel" class="btndownload" ng-show="ShowResult" filename="fileName.csv" csv-column-order="csvOrder" csv-header="['TestName','DeviceIP','TimeStamp','Status','Statistics','AvgTime','Result']">Download</button>
+      <img src="images/downloadImage.png" width=30 height="30" ng-show="ShowResult" style="margin-left:5px;">
+   </div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/header.html b/SdncReports/SdncReportsApi/src/main/resources/static/header.html
new file mode 100644 (file)
index 0000000..2385158
--- /dev/null
@@ -0,0 +1,3 @@
+<div  class="header">
+ <p style="margin-left:20px;"> ONAP Certification Test Page </p>
+</div>
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/FailImage.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/FailImage.png
new file mode 100644 (file)
index 0000000..22c44f7
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/FailImage.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/download.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/download.png
new file mode 100644 (file)
index 0000000..0b1f949
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/download.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/downloadImage.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/downloadImage.png
new file mode 100644 (file)
index 0000000..e72e128
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/downloadImage.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/error.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/error.png
new file mode 100644 (file)
index 0000000..3f44964
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/error.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/fail.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/fail.png
new file mode 100644 (file)
index 0000000..898fa26
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/fail.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/images.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/images.png
new file mode 100644 (file)
index 0000000..3bce573
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/images.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/networklayer.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/networklayer.png
new file mode 100644 (file)
index 0000000..c8e8008
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/networklayer.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/protocaol.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/protocaol.png
new file mode 100644 (file)
index 0000000..2c6f8fa
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/protocaol.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/protocol.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/protocol.png
new file mode 100644 (file)
index 0000000..aea9c7c
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/protocol.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/reachable.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/reachable.png
new file mode 100644 (file)
index 0000000..bb771b3
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/reachable.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/router.jpg b/SdncReports/SdncReportsApi/src/main/resources/static/images/router.jpg
new file mode 100644 (file)
index 0000000..cb4c50e
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/router.jpg differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/router.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/router.png
new file mode 100644 (file)
index 0000000..94de9f5
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/router.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/search.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/search.png
new file mode 100644 (file)
index 0000000..a8b4b35
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/search.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/success.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/success.png
new file mode 100644 (file)
index 0000000..76689fe
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/success.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/validation.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/validation.png
new file mode 100644 (file)
index 0000000..77c53ff
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/validation.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/images/waning.png b/SdncReports/SdncReportsApi/src/main/resources/static/images/waning.png
new file mode 100644 (file)
index 0000000..2ae2987
Binary files /dev/null and b/SdncReports/SdncReportsApi/src/main/resources/static/images/waning.png differ
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllDevices.json b/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllDevices.json
new file mode 100644 (file)
index 0000000..d7faef5
--- /dev/null
@@ -0,0 +1,17 @@
+
+{  
+   "deviceList":[  
+      {  
+         "deviceId":"1",
+         "deviceName":"Device1"
+      },
+      {  
+         "deviceId":"2",
+         "deviceName":"Device2"
+      },
+      {  
+         "deviceId":"3",
+         "deviceName":"Device3"
+      }
+   ]
+}
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllReports.json b/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllReports.json
new file mode 100644 (file)
index 0000000..cd0723f
--- /dev/null
@@ -0,0 +1,75 @@
+
+{  
+   "data":[  
+      {  
+         "testid":1,
+         "deviceid":1,
+         "testName":"Network Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"hostname": "google.com","testresult": "pass", "status": "reachable","statistics": "0% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 70ms"}},
+         "result":"Pass",
+         "timeStamp":"2018-03-16"
+      },
+      {  
+         "testid":2,
+         "deviceid":1,
+         "testName":"Network Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"hostname": "google.com","testresult": "fail", "status": "unreachable","statistics": "100% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 33ms"}},
+         "result":"Pass",
+         "timeStamp":"2018-03-16"
+      },
+           {  
+         "testid":4,
+         "deviceid":1,
+         "testName":"Protocol Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"status": "unreachable"}},
+         "result":"Fail",
+         "timeStamp":"2018-03-08"
+      },
+      {  
+         "testid":5,
+         "deviceid":1,
+         "testName":"Protocol Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"status": "reachable"}},
+         "result":"Pass",
+         "timeStamp":"2018-03-15"
+      },
+      {  
+         "testid":6,
+         "deviceid":1,
+         "testName":"Network Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"hostname": "google.com","testresult": "fail", "status": "unreachable","statistics": "100% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 33ms"}},
+         "result":"Fail",
+         "timeStamp":"2018-03-15"
+      },
+      {  
+         "testid":7,
+         "deviceid":1,
+        "testName":"Network Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"hostname": "google.com","testresult": "fail", "status": "unreachable","statistics": "100% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 50ms"}},
+         "result":"Fail",
+         "timeStamp":"2018-03-15"
+      }
+   ],
+   "status":200,
+   "config":{  
+      "method":"GET",
+      "transformRequest":[  
+         null
+      ],
+      "transformResponse":[  
+         null
+      ],
+      "params":"",
+      "headers":{  
+         "Accept":"application/json"
+      },
+      "url":"/findReportByDeviceName/Thu Mar 15 2018 00:00:00 GMT+0530 (India Standard Time)/Fri Mar 16 2018 00:00:00 GMT+0530 (India Standard Time)/Router"
+   },
+   "statusText":""
+}
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllTest.json b/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllTest.json
new file mode 100644 (file)
index 0000000..fc9b290
--- /dev/null
@@ -0,0 +1,17 @@
+
+{  
+   "testList":[  
+      {  
+         "testId":"1",
+         "testName":"Test1"
+      },
+      {  
+         "testId":"2",
+         "testName":"Test2"
+      },
+      {  
+         "testId":"3",
+         "testName":"Test3"
+      }
+   ]
+}
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllVNF.json b/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllVNF.json
new file mode 100644 (file)
index 0000000..4ebf951
--- /dev/null
@@ -0,0 +1,29 @@
+
+{  
+   "vnfList":[  
+      {  
+         "IpAddress":"1.160.10.240",
+         "HostName":"Host1",
+                "Selected":false,
+                "PortNo":"8282"
+      },
+      {  
+         "IpAddress":"1.160.10.241",
+         "HostName":"Host2",
+                "Selected":false,
+                "PortNo":"8080"
+      },
+      {  
+         "IpAddress":"1.160.10.242",
+         "HostName":"Host3",
+                "Selected":false,
+                "PortNo":"8285"
+      },
+       {  
+         "IpAddress":"1.160.10.243",
+         "HostName":"Host4",
+                "Selected":false,
+                "PortNo":"8286"
+      }
+   ]
+}
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getTestResult.json b/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getTestResult.json
new file mode 100644 (file)
index 0000000..581c8b0
--- /dev/null
@@ -0,0 +1,42 @@
+
+{  
+   "preTestResponse":[  
+      {  
+         "ipaddress":"1.160.10.240",
+         "status":"unreachable",
+         "testtype":"Network Layer",
+         "statistics":null,
+         "avgTime":null
+      },
+      {  
+         "ipaddress":"1.160.10.240",
+         "status":"unreachable",
+         "testtype":"Protocol Layer",
+         "statistics":null,
+         "avgTime":null
+      },
+      {  
+         "ipaddress":"1.160.10.240",
+         "status":"reachable",
+         "testtype":"Network Layer",
+         "statistics":"0% loss",
+         "avgTime":"Minimum = 70ms"
+      }
+   ],
+   "status":200,
+   "config":{  
+      "method":"GET",
+      "transformRequest":[  
+         null
+      ],
+      "transformResponse":[  
+         null
+      ],
+      "params":"",
+      "headers":{  
+         "Accept":"application/json"
+      },
+      "url":"/findReportByDeviceName/Thu Mar 15 2018 00:00:00 GMT+0530 (India Standard Time)/Fri Mar 16 2018 00:00:00 GMT+0530 (India Standard Time)/Router"
+   },
+   "statusText":""
+}
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/style/sdnc-style.css b/SdncReports/SdncReportsApi/src/main/resources/static/style/sdnc-style.css
new file mode 100644 (file)
index 0000000..361591c
--- /dev/null
@@ -0,0 +1,240 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+ body{ 
+ padding-top:10px; 
+ overflow-y:scroll;
+ padding-bottom:10px;
+ } 
+
+/* form styling */
+#form-container{  
+       margin-bottom:20px;
+    border-radius:5px;
+}
+#form-container .page-header{  
+       margin:0; padding:30px; 
+    border-top-left-radius:5px; border-top-right-radius:5px;
+     }
+    
+ table.tableDisplay{
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     width: 100%;
+     table-layout: auto;
+}
+ table.tableDisplay tr:nth-child(even){
+     background-color: #C0C0C0;
+}
+ table.tableDisplay th{
+     padding-top: 12px;
+     padding-bottom: 12px;
+     text-align: left;
+     background: linear-gradient(to top, #f8f8f8 0%, #cce5ff 83%);
+     color: black;
+}
+ table.tableDisplay td,table.tableDisplay th {
+     border: 1px solid #ddd;
+     padding: 8px;
+     width:30px;
+     
+}
+ table.tableDisplay tr:{
+     text-align: left;
+}
+ table.tableDisplay tr:hover {
+     background-color:#cce5ff;
+}
+ .first_row{
+     background-color: #cce5ff;
+     color: black;
+     text-align:left;
+}
+ .column {
+     float: left;
+     width: 32.2%;
+     padding: 10px;
+     margin-left:20px;
+     height: 60px;
+    /* Should be removed. Only for demonstration */
+}
+/* Clear floats after the columns */
+ .row:after {
+     content: "";
+     display: table;
+     clear: both;
+}
+ #btnSubmit{
+     background-color: #cce5ff;
+     margin-top:20px;
+     margin-left:20px;
+     margin-bottom:10px;
+     width:100px;
+     height:30px;
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     border: 1px solid #ddd;
+     font-weight:700;
+}
+ .btndownload{
+     background-color: #cce5ff;
+     margin-top:20px;
+     margin-bottom:10px;
+     margin-left:20px;
+     width:130px;
+     height:30px;
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     border: 1px solid #ddd;
+     font-weight:700;
+}
+ #exampleInput{
+     margin-left:25px;
+     width:160px;
+}
+ #exampleEndInput{
+     margin-left:10px;
+}
+ .error{
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     color:Red;
+     font-size: 14px;
+     margin-bottom:10px;
+}
+ .labeltext{
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+}
+ .sort-icon {
+     font-size: 9px;
+     margin-left: 5px;
+}
+ th {
+     cursor:pointer;
+}
+ .heading{  
+     margin-top:30px;
+     width:100%;
+     height:45px;
+     margin-bottom:20px;
+     font-family:Trebuchet MS, Arial, Helvetica, sans-serif;
+     margin-right: -15px;
+     margin-left: 5px;
+     font-size: 20px;
+      background: linear-gradient(to top, #f8f8f8 0%, #cce5ff 83%);
+     padding-top:15px;
+
+}
+form_validationBody{
+       width:900px;
+       margin-left:15px;
+       margin-top:60px;
+       margin-bottom:20px;
+}
+button:hover {
+    position: relative;
+}
+button[title]:hover:after {
+     padding: 4px 8px;
+     position: absolute;
+     left: 0;
+     top: 100%;
+     white-space: nowrap;
+     z-index: 20px;
+     background:red;
+}
+.arrowRed {
+font-size: 30px;
+color: red;
+}
+.arrowGreen {
+font-size: 30px;
+color: green;
+}
+.ng-invalid  { border: 1px solid red; }
+.testMain{
+       width:100%;
+       margin-bottom:20px;
+       height:400px;
+       margin-top:10px;
+}
+.testNotification{
+       padding:0px;
+}
+.testImgIcon{
+       margin-left:5px;
+       margin-right:10px;
+       padding-right:10px;
+}
+.testCol{
+       background-color:#f2f2f2;
+       width:25%;
+       margin-left:35px;
+}
+.check{
+        margin-left:10px;
+       margin-right:10px;
+}
+.btnRunTest{
+       background-color:#f2f2f2;
+       width:75%;
+       height:75px;
+       margin-left:35px;
+       margin-bottom:35px;
+}
+.ReportMain{
+       width:100%;
+    height:400px;
+    margin-top:10px;
+}
+.ReportNotification{
+       padding:0px;
+       margin-right:10px;
+       text-align:center;
+}
+.ReportImgIcon{
+       margin-left:5px;
+       margin-right:10px;
+}
+input[type=checkbox] { 
+       padding-right: 3px;!important;
+       }
+       
+.header{  
+     margin-top:20px;
+     width:1145px;
+     height:45px;
+     margin-bottom:5px;
+     font-family:Trebuchet MS, Arial, Helvetica, sans-serif;
+     font-size: 20px;
+     background: linear-gradient(to top, #f8f8f8 0%, #8F8484 83%);
+     padding-top:15px;
+
+}
+.footer{  
+     margin-top:10px;
+     width:1145px;
+     height:30px;
+     margin-bottom:5px;
+     font-family:Trebuchet MS, Arial, Helvetica, sans-serif;
+     font-size: 15px;
+     background: linear-gradient(to top, #f8f8f8 0%, #8F8484 83%);
+     padding-top:15px;
+
+}
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/style/w3.css b/SdncReports/SdncReportsApi/src/main/resources/static/style/w3.css
new file mode 100644 (file)
index 0000000..e73d269
--- /dev/null
@@ -0,0 +1,231 @@
+/* W3.CSS 4.10 February 2018 by Jan Egil and Borge Refsnes */
+html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
+/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */
+html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}
+article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}
+audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline}
+audio:not([controls]){display:none;height:0}[hidden],template{display:none}
+a{background-color:transparent;-webkit-text-decoration-skip:objects}
+a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}
+dfn{font-style:italic}mark{background:#ff0;color:#000}
+small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}svg:not(:root){overflow:hidden}
+code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}
+button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:bold}
+button,input{overflow:visible}button,select{text-transform:none}
+button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}
+button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner{border-style:none;padding:0}
+button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring{outline:1px dotted ButtonText}
+fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
+legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}
+[type=checkbox],[type=radio]{padding:0}
+[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}
+[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
+[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}
+::-webkit-input-placeholder{color:inherit;opacity:0.54}
+::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
+/* End extract */
+html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden}
+h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif}
+h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px}
+hr{border:0;border-top:1px solid #eee;margin:20px 0}
+.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit}
+.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc}
+.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1}
+.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1}
+.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center}
+.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
+.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px}
+.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap}
+.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}
+.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}   
+.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none}
+.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none}
+.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%}
+.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none}
+.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block}
+.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s}
+.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%}
+.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc}
+.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer}
+.w3-dropdown-hover:hover .w3-dropdown-content{display:block}
+.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000}
+.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000}
+.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1}
+.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px}
+.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
+.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%}
+.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%}
+.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px}
+.w3-main,#main{transition:margin-left .4s}
+.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}
+.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}
+.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto}
+.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0}
+.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left}
+.w3-bar .w3-button{white-space:normal}
+.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0}
+.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%}
+.w3-responsive{display:block;overflow-x:auto}
+.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before,
+.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both}
+.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%}
+.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%}
+.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%}
+.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%}
+@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%}
+.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%}
+.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}}
+@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%}
+.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%}
+.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}}
+.w3-content{max-width:980px;margin:auto}.w3-rest{overflow:hidden}
+.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell}
+.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom}
+.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important}
+@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px}
+.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} 
+.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center}
+.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}}
+@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}}
+@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}}
+@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}}
+@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}}
+.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0}
+.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2}
+.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0}
+.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0}
+.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}
+.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)}
+.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)}
+.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
+.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
+.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none}
+.w3-display-position{position:absolute}
+.w3-circle{border-radius:50%}
+.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px}
+.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px}
+.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px}
+.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px}
+.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
+.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
+.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}
+.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)}
+.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
+.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
+.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
+.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
+.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
+.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
+.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
+.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
+.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important}
+.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1}
+.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75}
+.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)}
+.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)}
+.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)}
+.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important}
+.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important}
+.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important}
+.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important}
+.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important}
+.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important}
+.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important}
+.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important}
+.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important}
+.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important}
+.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important}
+.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important}
+.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important}
+.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important}
+.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important}
+.w3-left{float:left!important}.w3-right{float:right!important}
+.w3-button:hover{color:#000!important;background-color:#ccc!important}
+.w3-transparent,.w3-hover-none:hover{background-color:transparent!important}
+.w3-hover-none:hover{box-shadow:none!important}
+/* Colors */
+.w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important}
+.w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important}
+.w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#2196F3!important}
+.w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important}
+.w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important}
+.w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important}
+.w3-blue-grey,.w3-hover-blue-grey:hover,.w3-blue-gray,.w3-hover-blue-gray:hover{color:#fff!important;background-color:#607d8b!important}
+.w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important}
+.w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important}
+.w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important}
+.w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important}
+.w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important}
+.w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important}
+.w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important}
+.w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important}
+.w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important}
+.w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important}
+.w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important}
+.w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important}
+.w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important}
+.w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important}
+.w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important}
+.w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important}
+.w3-grey,.w3-hover-grey:hover,.w3-gray,.w3-hover-gray:hover{color:#000!important;background-color:#9e9e9e!important}
+.w3-light-grey,.w3-hover-light-grey:hover,.w3-light-gray,.w3-hover-light-gray:hover{color:#000!important;background-color:#f1f1f1!important}
+.w3-dark-grey,.w3-hover-dark-grey:hover,.w3-dark-gray,.w3-hover-dark-gray:hover{color:#fff!important;background-color:#616161!important}
+.w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffdddd!important}
+.w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#ddffdd!important}
+.w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffcc!important}
+.w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#ddffff!important}
+.w3-text-amber,.w3-hover-text-amber:hover{color:#ffc107!important}
+.w3-text-aqua,.w3-hover-text-aqua:hover{color:#00ffff!important}
+.w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important}
+.w3-text-light-blue,.w3-hover-text-light-blue:hover{color:#87CEEB!important}
+.w3-text-brown,.w3-hover-text-brown:hover{color:#795548!important}
+.w3-text-cyan,.w3-hover-text-cyan:hover{color:#00bcd4!important}
+.w3-text-blue-grey,.w3-hover-text-blue-grey:hover,.w3-text-blue-gray,.w3-hover-text-blue-gray:hover{color:#607d8b!important}
+.w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important}
+.w3-text-light-green,.w3-hover-text-light-green:hover{color:#8bc34a!important}
+.w3-text-indigo,.w3-hover-text-indigo:hover{color:#3f51b5!important}
+.w3-text-khaki,.w3-hover-text-khaki:hover{color:#b4aa50!important}
+.w3-text-lime,.w3-hover-text-lime:hover{color:#cddc39!important}
+.w3-text-orange,.w3-hover-text-orange:hover{color:#ff9800!important}
+.w3-text-deep-orange,.w3-hover-text-deep-orange:hover{color:#ff5722!important}
+.w3-text-pink,.w3-hover-text-pink:hover{color:#e91e63!important}
+.w3-text-purple,.w3-hover-text-purple:hover{color:#9c27b0!important}
+.w3-text-deep-purple,.w3-hover-text-deep-purple:hover{color:#673ab7!important}
+.w3-text-red,.w3-hover-text-red:hover{color:#f44336!important}
+.w3-text-sand,.w3-hover-text-sand:hover{color:#fdf5e6!important}
+.w3-text-teal,.w3-hover-text-teal:hover{color:#009688!important}
+.w3-text-yellow,.w3-hover-text-yellow:hover{color:#d2be0e!important}
+.w3-text-white,.w3-hover-text-white:hover{color:#fff!important}
+.w3-text-black,.w3-hover-text-black:hover{color:#000!important}
+.w3-text-grey,.w3-hover-text-grey:hover,.w3-text-gray,.w3-hover-text-gray:hover{color:#757575!important}
+.w3-text-light-grey,.w3-hover-text-light-grey:hover,.w3-text-light-gray,.w3-hover-text-light-gray:hover{color:#f1f1f1!important}
+.w3-text-dark-grey,.w3-hover-text-dark-grey:hover,.w3-text-dark-gray,.w3-hover-text-dark-gray:hover{color:#3a3a3a!important}
+.w3-border-amber,.w3-hover-border-amber:hover{border-color:#ffc107!important}
+.w3-border-aqua,.w3-hover-border-aqua:hover{border-color:#00ffff!important}
+.w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important}
+.w3-border-light-blue,.w3-hover-border-light-blue:hover{border-color:#87CEEB!important}
+.w3-border-brown,.w3-hover-border-brown:hover{border-color:#795548!important}
+.w3-border-cyan,.w3-hover-border-cyan:hover{border-color:#00bcd4!important}
+.w3-border-blue-grey,.w3-hover-border-blue-grey:hover,.w3-border-blue-gray,.w3-hover-border-blue-gray:hover{border-color:#607d8b!important}
+.w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important}
+.w3-border-light-green,.w3-hover-border-light-green:hover{border-color:#8bc34a!important}
+.w3-border-indigo,.w3-hover-border-indigo:hover{border-color:#3f51b5!important}
+.w3-border-khaki,.w3-hover-border-khaki:hover{border-color:#f0e68c!important}
+.w3-border-lime,.w3-hover-border-lime:hover{border-color:#cddc39!important}
+.w3-border-orange,.w3-hover-border-orange:hover{border-color:#ff9800!important}
+.w3-border-deep-orange,.w3-hover-border-deep-orange:hover{border-color:#ff5722!important}
+.w3-border-pink,.w3-hover-border-pink:hover{border-color:#e91e63!important}
+.w3-border-purple,.w3-hover-border-purple:hover{border-color:#9c27b0!important}
+.w3-border-deep-purple,.w3-hover-border-deep-purple:hover{border-color:#673ab7!important}
+.w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important}
+.w3-border-sand,.w3-hover-border-sand:hover{border-color:#fdf5e6!important}
+.w3-border-teal,.w3-hover-border-teal:hover{border-color:#009688!important}
+.w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important}
+.w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important}
+.w3-border-black,.w3-hover-border-black:hover{border-color:#000!important}
+.w3-border-grey,.w3-hover-border-grey:hover,.w3-border-gray,.w3-hover-border-gray:hover{border-color:#9e9e9e!important}
+.w3-border-light-grey,.w3-hover-border-light-grey:hover,.w3-border-light-gray,.w3-hover-border-light-gray:hover{border-color:#f1f1f1!important}
+.w3-border-dark-grey,.w3-hover-border-dark-grey:hover,.w3-border-dark-gray,.w3-hover-border-dark-gray:hover{border-color:#616161!important}
+.w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important}
+.w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffcc!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important}
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/resources/static/tabs.html b/SdncReports/SdncReportsApi/src/main/resources/static/tabs.html
new file mode 100644 (file)
index 0000000..ab1ec32
--- /dev/null
@@ -0,0 +1,10 @@
+<div>
+<nav role="navigation" class="navbar navbar-default" style="margin-top:10px;">
+         <div class="navbar-header" style="background-color:#F7EDEE;font-size: 15px;font-weight: bold;">
+            <ul class="nav navbar-nav">
+            <li ng-class='active'><a href="#testValidation">CERTIFICATION TEST</a></li>
+            <li><a href="#testReports">VIEW ALL REPORTS</a></li>
+            <ul>
+         </div>
+         </nav>
+         </div>
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/WEB-INF/views/index.jsp b/SdncReports/SdncReportsApi/src/main/webapp/WEB-INF/views/index.jsp
new file mode 100644 (file)
index 0000000..f48a192
--- /dev/null
@@ -0,0 +1,67 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * 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=========================================================
+   */
+    -->
+<!-- index.html -->
+<!DOCTYPE html>
+<html ng-app="myApp">
+   <head>
+      <meta charset="utf-8">
+      <!-- CSS -->
+      <script src="./node_modules/jquery.min.js"></script>
+      <script src="./node_modules/tether.min.js" ></script>
+      <link rel="stylesheet" href="./node_modules/bootstrap-3.3.7/dist/css/bootstrap.min.css">
+      <script src="./node_modules/bootstrap-3.3.7/dist/js/bootstrap.min.js"></script>
+      <link rel="stylesheet" href="/style/sdnc-style.css">
+      <!-- JS -->
+      <!-- load angular,date-time picker,pagination,growl and ui-router -->
+      <script src = "./node_modules/angular.min.js"></script>
+      <script src = "./node_modules/angular-route.min.js"></script>
+      <script src="./node_modules/angular-utils-pagination/dirPagination.js"></script>
+      <script src="./node_modules/ng-csv/build/ng-csv.min.js"></script>     
+      <script src="./node_modules/angular-sanitize.min.js"></script>
+      <link rel="stylesheet" href="./node_modules/angularjs-datetime-picker/angularjs-datetime-picker.css" />
+      <script src="./node_modules/angularjs-datetime-picker/angularjs-datetime-picker.js"></script>
+      <script data-require="jquery@*" data-semver="2.1.4" src="https://code.jquery.com/jquery-2.1.4.js"></script>
+      <script src="./node_modules/angular-utils-pagination/dirPagination.js"></script>
+      <script src="./js/app.js"></script>
+      <script src="./js/sdnc-controller/sdnc-viewreport-controller.js"></script>
+      <script src="./js/sdnc-controller/sdnc-validationTest-controller.js"></script>
+      <script src="./js/sdnc-services/sdnc-viewReport-service.js"></script>
+      <script src="./js/sdnc-services/sdnc-validationTest-service.js"></script>
+      <script src="./node_modules/angular-growl.min.js" ></script>
+      <script src="./node_modules/ng-ip-address/ngIpAddress.min.js" ></script>
+      <link rel="stylesheet" type="text/css" href="./node_modules/angular-growl.min.css">
+      <link rel="stylesheet" href="/style/w3.css">
+   </head>
+   <!-- apply our angular app -->
+   <body>
+   <div class="container">
+      <!-- header page -->
+   <div ng-include="" src="'header.html'"></div>
+      <div style="border-style:ridge;">         
+         <div ng-include="" src="'tabs.html'"></div>
+         <!-- views will be injected here -->
+         <div ng-view></div>
+      </div>  </div>
+      <!-- footer page -->
+       <div width="100%" align="center" ng-include="" src="'footer.html'"></div>
+     
+   </body>
+</html>
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/js/app.js b/SdncReports/SdncReportsApi/src/main/webapp/js/app.js
new file mode 100644 (file)
index 0000000..82fac46
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+
+// app.js This is first entry point for the application
+// =============================================================================
+var myApp = angular.module('myApp', ['ngRoute', 'ngSanitize', 'ngCsv', 'angularUtils.directives.dirPagination', 'angular-growl','ng-ip-address']);
+
+// configuring our routes 
+// =============================================================================
+myApp.config(['$routeProvider', function($routeProvider) {
+
+       //Called when user select pre validation test from the UI
+    $routeProvider.
+    when('/testValidation', {
+        templateUrl: 'form-validationTest.html',
+        controller: 'TestController'
+    }).
+    when('/', {
+        templateUrl: 'form-validationTest.html',
+        controller: 'TestController'
+    }).
+  //Called when user select view test report from the UI
+    when('/testReports', {
+        templateUrl: 'form-viewReport.html',
+        controller: 'ReportController'
+    }).
+    otherwise({
+        redirectTo: 'form-validationTest.html'
+    });
+}]);
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js b/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js
new file mode 100644 (file)
index 0000000..bf7005b
--- /dev/null
@@ -0,0 +1,207 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+
+myApp.controller('TestController', ['$scope', '$http', 'growl', 'viewReportService', 'validationTestService', function($scope, $http, growl, viewReportService, validationTestService) {
+
+    $scope.showTestReport = false;
+
+    //Input data for validation test dropdown
+    var validationTestList = [{
+            "typeId": 1,
+            "validationType": "Network Layer",
+            "Selected": false
+        }
+        
+    ];
+
+    $scope.validationTestList = validationTestList;
+
+
+    $scope.getselectval = function() {
+        $scope.selectedvalues = 'Name: ' + $scope.selitem.validationType + ' Id: ' + $scope.selitem.typeId;
+    }
+
+    $scope.showError = false;
+    $scope.errorMessage = "";
+    $scope.showSuccess = false;
+    $scope.successMessage = "";
+    $scope.showWarning = false;
+    $scope.warningMessage = "";
+    $scope.showInfo = false;
+    $scope.infoMessage = "";
+    $scope.ShowResult = false;
+    $scope.allowTestSelection = false;
+    $scope.hostNamePattern = /([a-z0-9](.[a-z0-9-]*[a-z0-9]))/;
+
+    //Called when user clicks on runtest button
+    $scope.runTest = function() {
+
+        $scope.showError = false;
+        $scope.vnfSelected = [];
+        $scope.testSelected = [];
+
+        var message = "";
+        for (var i = 0; i < $scope.validationTestList.length; i++) {
+            if ($scope.validationTestList[i].Selected) {
+                var typeId = $scope.validationTestList[i].typeId;
+                var validationType = $scope.validationTestList[i].validationType;
+                message += "typeId: " + typeId + " validationType: " + validationType + "\n";
+                console.log("--TestController::Runtest--", message);
+                var testDetails = {};
+                testDetails.typeId = typeId;
+                testDetails.validationType = validationType;
+                $scope.testSelected.push(testDetails);
+            }
+        }
+        console.log("--TestController::Runtest--", JSON.stringify($scope.testSelected));
+
+        var vnfDetails = {};
+        if ($scope.IPAddress != null && $scope.HostName != null && $scope.testSelected.length >= 1) {
+            vnfDetails.ipAddress = $scope.IPAddress;
+            vnfDetails.hostName = $scope.HostName;
+            $scope.vnfSelected.push(vnfDetails);
+            console.log("--TestController::Runtest--", JSON.stringify($scope.vnfSelected));
+
+            //Call the validation test service with vnfselected and testType as the parameter
+
+            validationTestService.runPretest($scope.vnfSelected, $scope.testSelected).then(function(response) {
+                    console.log("--TestController::runTest--", JSON.stringify(response));
+                    var status = response.status;
+                    var response = response.data;
+                    //in case of success, build the model object to store the service output here
+                    if (status === 200) {
+                        if (response.preTestResponse != null && response.preTestResponse.length >= 1) {
+                            $scope.ShowResult = true;
+                            $scope.createTestModel(response.preTestResponse);
+                            $scope.showMessage(response.preTestResponse);
+                         
+                        } else {
+                            console.log(response);
+                            $scope.showError = true;
+                            $scope.errorMessage = "Something went wrong!!!";
+                            growl.error($scope.errorMessage, {
+                                title: 'Error!'
+                            });
+                        }
+                    } else {
+                        console.log(response);
+                        $scope.showError = true;
+                        $scope.errorMessage = "Pre test validation failed!!! Check the report for more details";
+                        growl.error($scope.errorMessage, {
+                            title: 'Error!'
+                        });
+                    }
+                },
+                function(response) {
+                    console.log("--TestController--", response);
+                });
+        } else {
+            $scope.showError = true;
+            $scope.errorMessage = "Please provide the inputs for VNF and test to be performed!!";
+            growl.error($scope.errorMessage, {
+                title: 'Error!'
+            });
+        }
+
+    };
+    
+    $scope.showMessage=function(data){
+       
+       if(angular.isDefined(data) && data.length>=1){
+               
+                angular.forEach(data, function(value, key){
+                if(value.status == "unreachable"){
+                  console.log("--TestController::showMessage--",value.status);
+                  $scope.showError = true;
+                   $scope.errorMessage = "PreTest validation Failed, Please check logs for further details!!!";
+                   growl.error($scope.errorMessage, {
+                     title: 'Error!'
+                   });
+                 }
+                else
+                        {
+                         $scope.showSuccess = true;
+                      $scope.successMessage = "Pre test validation completed!!";
+                      growl.success($scope.successMessage, {
+                          title: 'Success!'
+                      });
+                        }
+                
+                });
+               
+       }       
+    }
+
+    //Function to build the UI model to be shown
+    $scope.createTestModel = function(result) {
+
+        $scope.showError = false;
+        $scope.showWarning = false;
+        $scope.objPreTestModel = result;
+        $scope.objPreTest = [];
+
+
+        if ($scope.objPreTestModel.length >= 1) {
+            for (var i = 0; i < $scope.objPreTestModel.length; i++) {
+                var objTestReport = {};
+                objTestReport.ipaddress = $scope.objPreTestModel[i].ipaddress;
+                objTestReport.status = $scope.objPreTestModel[i].status;
+                objTestReport.testtype = $scope.objPreTestModel[i].testtype;
+                objTestReport.statistics = $scope.objPreTestModel[i].statistics;
+                objTestReport.avgTime = $scope.objPreTestModel[i].avgTime;
+
+
+                if ($scope.objPreTestModel[i].testtype === "Network Layer") {
+                    if (objTestReport.statistics != null) {
+                        //fetching the statistics to show in progress bar
+                       
+                        var statistics = objTestReport.statistics;
+                        statistics = statistics.split("%");
+                        objTestReport.statistics = statistics[0];
+                        if (objTestReport.statistics == 0) {
+                            objTestReport.statisticPer = parseInt(objTestReport.statistics) + 50;
+                        } else
+                            objTestReport.statisticPer = objTestReport.statistics;
+                    }
+
+                    //fetching the avg time to show in progress bar
+                    
+                    if (objTestReport.avgTime != null) {
+                        var avgTime = objTestReport.avgTime;
+                        avgTime = avgTime.split("=");
+                        var Testtime = avgTime[1];
+                        objTestReport.avgTime = Testtime.slice(0, -2).trim();
+                        console.log("--TestController::createTestModel--", objTestReport.avgTime);
+                        if (objTestReport.avgTime < 50) {
+                            objTestReport.avgTimePer = parseInt(objTestReport.avgTime) + 10;
+                        } else
+                            objTestReport.avgTimePer = objTestReport.avgTime;
+
+                    }
+                }
+                $scope.objPreTest.push(objTestReport);
+                console.log("--TestController::createTestModel--", JSON.stringify($scope.objPreTest));
+            }
+        }
+       console.log("--TestController::createTestModel::final PreTestModel--" + JSON.stringify($scope.objPreTest));
+
+    }
+
+}]);
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js b/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js
new file mode 100644 (file)
index 0000000..62158d5
--- /dev/null
@@ -0,0 +1,169 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+
+myApp.controller('ReportController', ['$scope', '$http', 'viewReportService', 'growl', function($scope, $http, viewReportService, growl) {
+    $scope.isDisabled = true;
+    $scope.pagination = false;
+    $scope.selectedDevice;
+    $scope.ShowResult = false;
+    $scope.dateValidation = false;
+    $scope.NoSearchResult = false;
+    $scope.showError = false;
+    $scope.errorMessage = "";
+    $scope.showSuccess = false;
+    $scope.successMessage = "";
+    $scope.showWarning = false;
+    $scope.warningMessage = "";
+    $scope.showExecutionDetails = true;
+
+    //THIS FUNCTION WILL BE CALLED WHEN USER CLICK SUBMIT FROM UI
+    $scope.getReports = function(deviceIP, startdate, enddate) { 
+
+        $scope.ShowResult = false;
+        if (new Date(startdate) > new Date(enddate)) {
+            $scope.dateValidation = true;
+            $scope.showError = true;
+            $scope.errorMessage = "Start date cannot be greated than End date";
+            growl.error($scope.errorMessage, {
+                title: 'Error!'
+            });
+            return false;
+        }
+        var date = new Date(startdate);
+        if (angular.isDefined(deviceIP)) {
+            $scope.DeviceIP = deviceIP;
+        }
+        if (angular.isDefined(startdate)) {
+            $scope.startDate = startdate;
+        }
+        if (angular.isDefined(enddate)) {
+            $scope.endDate = enddate;
+        }
+
+        if (deviceIP != null && startdate != null && enddate != null) {
+
+            //service call to fetch the reports start date,end date,test name
+            viewReportService.getData($scope.startDate, $scope.endDate, $scope.DeviceIP).then(function(result) {
+                    console.log("--ReportController::getdata called from controler--", JSON.stringify(result.data));
+                    if (result.status == 200) {
+                        if (result.data != null && result.data.length >= 1) {
+                               
+                            //in case of success, build the model object to store the service output here
+                            $scope.createTestReportModel(result.data);
+                        } else {
+                            $scope.ShowResult = false;
+                            $scope.showWarning = true;
+                            $scope.warningMessage = "No result found for specified Device name !!";
+                            growl.warning($scope.warningMessage, {
+                                title: 'Warning!'
+                            });
+                        }
+                    } else {
+                        $scope.ShowResult = false;
+                        $scope.showWarning = true;
+                        $scope.warningMessage = "No result found for specified Device name !!";
+                        growl.warning($scope.warningMessage, {
+                            title: 'Warning!'
+                        });
+                    }
+                },
+                function(response) {
+                    console.log("--ReportController::getdata::Error--", response);
+                });
+        }
+    }
+
+
+    //FUNCTION WILL BE CALLED WHEN USER CLICK DOWNLOAD FROM UI
+    $scope.exportToExcel = function(tableId) { // ex: '#my-table'
+        var exportHref = Excel.tableToExcel(tableId, 'export');
+        $timeout(function() {
+            location.href = exportHref;
+        }, 100); // trigger download
+
+        console.log("--ReportController::exportToexcel--");
+    }
+
+    $scope.createTestReportModel = function(result) {
+
+        $scope.showError = false;
+        $scope.showWarning = false;
+        $scope.objTestReportModel = result;
+        $scope.objTestModel = [];
+
+
+        if ($scope.objTestReportModel.length >= 1) {
+            for (var i = 0; i < $scope.objTestReportModel.length; i++) {
+                var objTestReport = {};
+                objTestReport.testid = $scope.objTestReportModel[i].testid;
+                objTestReport.deviceid = $scope.objTestReportModel[i].deviceid;
+                objTestReport.deviceIP = $scope.objTestReportModel[i].deviceIP;
+                objTestReport.result = $scope.objTestReportModel[i].result;
+                objTestReport.timeStamp = $scope.objTestReportModel[i].timeStamp;
+                objTestReport.testname = $scope.objTestReportModel[i].testName;
+
+                var executionDetails = {};
+                $scope.tmp = angular.fromJson($scope.objTestReportModel[i].execuationDetails); 
+                executionDetails = $scope.tmp.output;
+
+                if ($scope.objTestReportModel[i].testName === "Network Layer") {
+                       
+                    //fetching the statistics to show in progress bar
+                    var statistics = executionDetails.statistics;
+                    objTestReport.status = executionDetails.status;
+                    objTestReport.statistics = executionDetails.statistics;
+                    statistics = statistics.split("%");
+                    executionDetails.statistics = statistics[0];
+                    if (executionDetails.statistics == 0) {
+                        executionDetails.statisticPer = parseInt(executionDetails.statistics) + 50;
+                    } else
+                        executionDetails.statisticPer = executionDetails.statistics;
+
+                    console.log("--ReportController::CreateTestReportModel--", executionDetails.statistics);
+
+                    //fetching the avg time to show in progress bar
+                    
+                    var avgTime = executionDetails.avgTime;
+                    objTestReport.avgTime = executionDetails.avgTime;
+                    avgTime = avgTime.split("=");
+                    var Testtime = avgTime[1];
+                    executionDetails.avgTime = Testtime.slice(0, -2).trim();
+                    console.log("--ReportController::CreateTestReportModel--", executionDetails.avgTime);
+                    if (executionDetails.avgTime < 50) {
+                        executionDetails.avgTimePer = parseInt(executionDetails.avgTime) + 10;
+                    } else
+                        executionDetails.avgTimePer = executionDetails.avgTime;
+
+                }
+
+
+                objTestReport.executionDetails = executionDetails;
+                $scope.objTestModel.push(objTestReport);
+                console.log("--ReportController::CreateTestReportModel--", JSON.stringify($scope.objTestModel));
+
+            }
+            $scope.ShowResult = true;
+            $scope.pagination = true;
+        }
+        console.log("--ReportController::createTestReportModel::final TestReportModel--" + JSON.stringify($scope.objTestModel));
+        $scope.csvOrder = ['testname', 'deviceIP', 'timeStamp', 'status', 'statistics', 'avgTime', 'result'];
+
+    }
+}]);
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js b/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js
new file mode 100644 (file)
index 0000000..aa985ac
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+myApp.service('validationTestService', ['$http', function($http) {
+   
+    this.runPretest = function(vnfList, validationTestType) {
+
+
+        var data = {};
+        data.vnfList = vnfList;
+        data.validationTestType = validationTestType;
+
+        var config = {
+            params: data,
+            headers: {
+                'Accept': 'application/json'
+            }
+        };
+        
+        console.log("validationTestService::runPretest::config", JSON.stringify(config));
+
+        // Call the pre validation service
+        var request = {
+            method: 'POST',
+            url: '/runtest',
+            data: data,
+            headers: {
+                'Content-Type': "application/json"
+            }
+        };
+
+        // // SEND VNF FOR VALIDATION
+        return $http(request)
+            .then(function(response) {
+                    console.log("---validationTestService::runPretest::Response---" + JSON.stringify(response));
+                    return response;
+                },
+                function(response) {
+                    console.log("--validationTestService::Status Code--", response.status);
+                    return response;
+                });
+
+
+    }
+
+}]);
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js b/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js
new file mode 100644 (file)
index 0000000..de22ff3
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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=========================================================
+*/
+
+myApp.service('viewReportService', ['$http', function($http) {
+    this.getData = function(startDate, endDate, deviceName) {
+
+        var data = {};
+        if (startDate != null && endDate != null && deviceName != null) {
+
+            data.startdate = startDate;
+            data.enddate = endDate;
+            data.devicename = deviceName;
+
+        }
+        var config = {
+            params: '',
+            headers: {
+                'Accept': 'application/json'
+            }
+        };
+
+        var sdate = new Date(startDate);
+        var edate = new Date(endDate);
+        
+        var objTestList = {};
+        
+        return $http.get('/findReportByDeviceIP/'+sdate+'/'+edate+'/'+deviceName,config)
+            .then(function(result) {
+                console.log("--viewReportService::getdata::TestResponse--", JSON.stringify(result));
+                objTestList = result.data;
+                console.log("--viewReportService::getdata::TestResponse--", +JSON.stringify(objTestList));
+                return result;
+            });
+    };
+
+}]);
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-growl.min.css b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-growl.min.css
new file mode 100644 (file)
index 0000000..4b326d1
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * angular-growl - v0.4.0 - 2013-11-19
+ * https://github.com/marcorinck/angular-growl
+ * Copyright (c) 2013 Marco Rinck; Licensed MIT
+ */
+
+.growl{position:fixed;top:10px;right:10px;float:right;width:250px}.growl-item.ng-enter,.growl-item.ng-leave{-webkit-transition:.5s linear all;-moz-transition:.5s linear all;-o-transition:.5s linear all;transition:.5s linear all}.growl-item.ng-enter,.growl-item.ng-leave.ng-leave-active{opacity:0}.growl-item.ng-leave,.growl-item.ng-enter.ng-enter-active{opacity:1}
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-growl.min.js b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-growl.min.js
new file mode 100644 (file)
index 0000000..e07b22b
--- /dev/null
@@ -0,0 +1,6 @@
+/**
+ * angular-growl - v0.4.0 - 2013-11-19
+ * https://github.com/marcorinck/angular-growl
+ * Copyright (c) 2013 Marco Rinck; Licensed MIT
+ */
+angular.module("angular-growl",[]),angular.module("angular-growl").directive("growl",["$rootScope",function(a){"use strict";return{restrict:"A",template:'<div class="growl">  <div class="growl-item alert" ng-repeat="message in messages" ng-class="computeClasses(message)">               <button type="button" class="close" ng-click="deleteMessage(message)">&times;</button>       <div ng-switch="message.enableHtml">           <div ng-switch-when="true" ng-bind-html="message.text"></div>           <div ng-switch-default ng-bind="message.text"></div>       </div>   </div></div>',replace:!1,scope:!0,controller:["$scope","$timeout","growl",function(b,c,d){function e(a){b.messages.push(a),a.ttl&&-1!==a.ttl&&c(function(){b.deleteMessage(a)},a.ttl)}var f=d.onlyUnique();b.messages=[],a.$on("growlMessage",function(a,c){var d;f?(angular.forEach(b.messages,function(a){c.text===a.text&&c.severity===a.severity&&(d=!0)}),d||e(c)):e(c)}),b.deleteMessage=function(a){var c=b.messages.indexOf(a);c>-1&&b.messages.splice(c,1)},b.computeClasses=function(a){return{"alert-success":"success"===a.severity,"alert-error":"error"===a.severity,"alert-danger":"error"===a.severity,"alert-info":"info"===a.severity,"alert-warning":"warn"===a.severity}}}]}}]),angular.module("angular-growl").provider("growl",function(){"use strict";var a=null,b=!1,c="messages",d="text",e="severity",f=!0;this.globalTimeToLive=function(b){a=b},this.globalEnableHtml=function(a){b=a},this.messagesKey=function(a){c=a},this.messageTextKey=function(a){d=a},this.messageSeverityKey=function(a){e=a},this.onlyUniqueMessages=function(a){f=a},this.serverMessagesInterceptor=["$q","growl",function(a,b){function d(a){a.data[c]&&a.data[c].length>0&&b.addServerMessages(a.data[c])}function e(a){return d(a),a}function f(b){return d(b),a.reject(b)}return function(a){return a.then(e,f)}}],this.$get=["$rootScope","$filter",function(c,g){function h(a){p&&(a.text=p(a.text)),c.$broadcast("growlMessage",a)}function i(c,d,e){var f,g=d||{};f={text:c,severity:e,ttl:g.ttl||a,enableHtml:g.enableHtml||b},h(f)}function j(a,b){i(a,b,"warn")}function k(a,b){i(a,b,"error")}function l(a,b){i(a,b,"info")}function m(a,b){i(a,b,"success")}function n(a){var b,c,f,g;for(g=a.length,b=0;g>b;b++)if(c=a[b],c[d]&&c[e]){switch(c[e]){case"warn":f="warn";break;case"success":f="success";break;case"info":f="info";break;case"error":f="error"}i(c[d],void 0,f)}}function o(){return f}var p;try{p=g("translate")}catch(q){}return{addWarnMessage:j,addErrorMessage:k,addInfoMessage:l,addSuccessMessage:m,addServerMessages:n,onlyUnique:o}}]});
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-route.min.js b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-route.min.js
new file mode 100644 (file)
index 0000000..a30b8ab
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ AngularJS v1.3.14
+ (c) 2010-2014 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(q,d,C){'use strict';function v(r,k,h){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,f,b,c,y){function z(){l&&(h.cancel(l),l=null);m&&(m.$destroy(),m=null);n&&(l=h.leave(n),l.then(function(){l=null}),n=null)}function x(){var b=r.current&&r.current.locals;if(d.isDefined(b&&b.$template)){var b=a.$new(),c=r.current;n=y(b,function(b){h.enter(b,null,n||f).then(function(){!d.isDefined(t)||t&&!a.$eval(t)||k()});z()});m=c.scope=b;m.$emit("$viewContentLoaded");
+m.$eval(w)}else z()}var m,n,l,t=b.autoscroll,w=b.onload||"";a.$on("$routeChangeSuccess",x);x()}}}function A(d,k,h){return{restrict:"ECA",priority:-400,link:function(a,f){var b=h.current,c=b.locals;f.html(c.$template);var y=d(f.contents());b.controller&&(c.$scope=a,c=k(b.controller,c),b.controllerAs&&(a[b.controllerAs]=c),f.data("$ngControllerController",c),f.children().data("$ngControllerController",c));y(a)}}}q=d.module("ngRoute",["ng"]).provider("$route",function(){function r(a,f){return d.extend(Object.create(a),
+f)}function k(a,d){var b=d.caseInsensitiveMatch,c={originalPath:a,regexp:a},h=c.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,d,b,c){a="?"===c?c:null;c="*"===c?c:null;h.push({name:b,optional:!!a});d=d||"";return""+(a?"":d)+"(?:"+(a?d:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");c.regexp=new RegExp("^"+a+"$",b?"i":"");return c}var h={};this.when=function(a,f){var b=d.copy(f);d.isUndefined(b.reloadOnSearch)&&(b.reloadOnSearch=!0);
+d.isUndefined(b.caseInsensitiveMatch)&&(b.caseInsensitiveMatch=this.caseInsensitiveMatch);h[a]=d.extend(b,a&&k(a,b));if(a){var c="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";h[c]=d.extend({redirectTo:a},k(c,b))}return this};this.caseInsensitiveMatch=!1;this.otherwise=function(a){"string"===typeof a&&(a={redirectTo:a});this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce",function(a,f,b,c,k,q,x){function m(b){var e=s.current;
+(v=(p=l())&&e&&p.$$route===e.$$route&&d.equals(p.pathParams,e.pathParams)&&!p.reloadOnSearch&&!w)||!e&&!p||a.$broadcast("$routeChangeStart",p,e).defaultPrevented&&b&&b.preventDefault()}function n(){var u=s.current,e=p;if(v)u.params=e.params,d.copy(u.params,b),a.$broadcast("$routeUpdate",u);else if(e||u)w=!1,(s.current=e)&&e.redirectTo&&(d.isString(e.redirectTo)?f.path(t(e.redirectTo,e.params)).search(e.params).replace():f.url(e.redirectTo(e.pathParams,f.path(),f.search())).replace()),c.when(e).then(function(){if(e){var a=
+d.extend({},e.resolve),b,g;d.forEach(a,function(b,e){a[e]=d.isString(b)?k.get(b):k.invoke(b,null,null,e)});d.isDefined(b=e.template)?d.isFunction(b)&&(b=b(e.params)):d.isDefined(g=e.templateUrl)&&(d.isFunction(g)&&(g=g(e.params)),g=x.getTrustedResourceUrl(g),d.isDefined(g)&&(e.loadedTemplateUrl=g,b=q(g)));d.isDefined(b)&&(a.$template=b);return c.all(a)}}).then(function(c){e==s.current&&(e&&(e.locals=c,d.copy(e.params,b)),a.$broadcast("$routeChangeSuccess",e,u))},function(b){e==s.current&&a.$broadcast("$routeChangeError",
+e,u,b)})}function l(){var a,b;d.forEach(h,function(c,h){var g;if(g=!b){var k=f.path();g=c.keys;var m={};if(c.regexp)if(k=c.regexp.exec(k)){for(var l=1,n=k.length;l<n;++l){var p=g[l-1],q=k[l];p&&q&&(m[p.name]=q)}g=m}else g=null;else g=null;g=a=g}g&&(b=r(c,{params:d.extend({},f.search(),a),pathParams:a}),b.$$route=c)});return b||h[null]&&r(h[null],{params:{},pathParams:{}})}function t(a,b){var c=[];d.forEach((a||"").split(":"),function(a,d){if(0===d)c.push(a);else{var f=a.match(/(\w+)(?:[?*])?(.*)/),
+h=f[1];c.push(b[h]);c.push(f[2]||"");delete b[h]}});return c.join("")}var w=!1,p,v,s={routes:h,reload:function(){w=!0;a.$evalAsync(function(){m();n()})},updateParams:function(a){if(this.current&&this.current.$$route)a=d.extend({},this.current.params,a),f.path(t(this.current.$$route.originalPath,a)),f.search(a);else throw B("norout");}};a.$on("$locationChangeStart",m);a.$on("$locationChangeSuccess",n);return s}]});var B=d.$$minErr("ngRoute");q.provider("$routeParams",function(){this.$get=function(){return{}}});
+q.directive("ngView",v);q.directive("ngView",A);v.$inject=["$route","$anchorScroll","$animate"];A.$inject=["$compile","$controller","$route"]})(window,window.angular);
+//# sourceMappingURL=angular-route.min.js.map
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-sanitize.min.js b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-sanitize.min.js
new file mode 100644 (file)
index 0000000..65fc5a4
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ AngularJS v1.3.14
+ (c) 2010-2014 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(n,h,p){'use strict';function E(a){var e=[];r(e,h.noop).chars(a);return e.join("")}function g(a){var e={};a=a.split(",");var d;for(d=0;d<a.length;d++)e[a[d]]=!0;return e}function F(a,e){function d(a,b,d,l){b=h.lowercase(b);if(s[b])for(;f.last()&&t[f.last()];)c("",f.last());u[b]&&f.last()==b&&c("",b);(l=v[b]||!!l)||f.push(b);var m={};d.replace(G,function(a,b,e,c,d){m[b]=q(e||c||d||"")});e.start&&e.start(b,m,l)}function c(a,b){var c=0,d;if(b=h.lowercase(b))for(c=f.length-1;0<=c&&f[c]!=b;c--);
+if(0<=c){for(d=f.length-1;d>=c;d--)e.end&&e.end(f[d]);f.length=c}}"string"!==typeof a&&(a=null===a||"undefined"===typeof a?"":""+a);var b,k,f=[],m=a,l;for(f.last=function(){return f[f.length-1]};a;){l="";k=!0;if(f.last()&&w[f.last()])a=a.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(a,b){b=b.replace(H,"$1").replace(I,"$1");e.chars&&e.chars(q(b));return""}),c("",f.last());else{if(0===a.indexOf("\x3c!--"))b=a.indexOf("--",4),0<=b&&a.lastIndexOf("--\x3e",b)===b&&(e.comment&&
+e.comment(a.substring(4,b)),a=a.substring(b+3),k=!1);else if(x.test(a)){if(b=a.match(x))a=a.replace(b[0],""),k=!1}else if(J.test(a)){if(b=a.match(y))a=a.substring(b[0].length),b[0].replace(y,c),k=!1}else K.test(a)&&((b=a.match(z))?(b[4]&&(a=a.substring(b[0].length),b[0].replace(z,d)),k=!1):(l+="<",a=a.substring(1)));k&&(b=a.indexOf("<"),l+=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),e.chars&&e.chars(q(l)))}if(a==m)throw L("badparse",a);m=a}c()}function q(a){if(!a)return"";A.innerHTML=a.replace(/</g,
+"&lt;");return A.textContent}function B(a){return a.replace(/&/g,"&amp;").replace(M,function(a){var d=a.charCodeAt(0);a=a.charCodeAt(1);return"&#"+(1024*(d-55296)+(a-56320)+65536)+";"}).replace(N,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function r(a,e){var d=!1,c=h.bind(a,a.push);return{start:function(a,k,f){a=h.lowercase(a);!d&&w[a]&&(d=a);d||!0!==C[a]||(c("<"),c(a),h.forEach(k,function(d,f){var k=h.lowercase(f),g="img"===a&&"src"===k||"background"===
+k;!0!==O[k]||!0===D[k]&&!e(d,g)||(c(" "),c(f),c('="'),c(B(d)),c('"'))}),c(f?"/>":">"))},end:function(a){a=h.lowercase(a);d||!0!==C[a]||(c("</"),c(a),c(">"));a==d&&(d=!1)},chars:function(a){d||c(B(a))}}}var L=h.$$minErr("$sanitize"),z=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,y=/^<\/\s*([\w:-]+)[^>]*>/,G=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,K=/^</,J=/^<\//,H=/\x3c!--(.*?)--\x3e/g,x=/<!DOCTYPE([^>]*?)>/i,
+I=/<!\[CDATA\[(.*?)]]\x3e/g,M=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,N=/([^\#-~| |!])/g,v=g("area,br,col,hr,img,wbr");n=g("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr");p=g("rp,rt");var u=h.extend({},p,n),s=h.extend({},n,g("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),t=h.extend({},p,g("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var"));
+n=g("animate,animateColor,animateMotion,animateTransform,circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,set,stop,svg,switch,text,title,tspan,use");var w=g("script,style"),C=h.extend({},v,s,t,u,n),D=g("background,cite,href,longdesc,src,usemap,xlink:href");n=g("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,target,title,type,valign,value,vspace,width");
+p=g("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,attributeName,attributeType,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan");
+var O=h.extend({},D,p,n),A=document.createElement("pre");h.module("ngSanitize",[]).provider("$sanitize",function(){this.$get=["$$sanitizeUri",function(a){return function(e){var d=[];F(e,r(d,function(c,b){return!/^unsafe/.test(a(c,b))}));return d.join("")}}]});h.module("ngSanitize").filter("linky",["$sanitize",function(a){var e=/((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/,d=/^mailto:/;return function(c,b){function k(a){a&&g.push(E(a))}function f(a,c){g.push("<a ");
+h.isDefined(b)&&g.push('target="',b,'" ');g.push('href="',a.replace(/"/g,"&quot;"),'">');k(c);g.push("</a>")}if(!c)return c;for(var m,l=c,g=[],n,p;m=l.match(e);)n=m[0],m[2]||m[4]||(n=(m[3]?"http://":"mailto:")+n),p=m.index,k(l.substr(0,p)),f(n,m[0].replace(d,"")),l=l.substring(p+m[0].length);k(l);return a(g.join(""))}}])})(window,window.angular);
+//# sourceMappingURL=angular-sanitize.min.js.map
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-utils-pagination/dirPagination.js b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-utils-pagination/dirPagination.js
new file mode 100644 (file)
index 0000000..a1a7265
--- /dev/null
@@ -0,0 +1,639 @@
+/**
+ * dirPagination - AngularJS module for paginating (almost) anything.
+ *
+ *
+ * Credits
+ * =======
+ *
+ * Daniel Tabuenca: https://groups.google.com/d/msg/angular/an9QpzqIYiM/r8v-3W1X5vcJ
+ * for the idea on how to dynamically invoke the ng-repeat directive.
+ *
+ * I borrowed a couple of lines and a few attribute names from the AngularUI Bootstrap project:
+ * https://github.com/angular-ui/bootstrap/blob/master/src/pagination/pagination.js
+ *
+ * Copyright 2014 Michael Bromley <michael@michaelbromley.co.uk>
+ */
+
+(function() {
+
+    /**
+     * Config
+     */
+    var moduleName = 'angularUtils.directives.dirPagination';
+    var DEFAULT_ID = '__default';
+
+    /**
+     * Module
+     */
+    angular.module(moduleName, [])
+        .directive('dirPaginate', ['$compile', '$parse', 'paginationService', dirPaginateDirective])
+        .directive('dirPaginateNoCompile', noCompileDirective)
+        .directive('dirPaginationControls', ['paginationService', 'paginationTemplate', dirPaginationControlsDirective])
+        .filter('itemsPerPage', ['paginationService', itemsPerPageFilter])
+        .service('paginationService', paginationService)
+        .provider('paginationTemplate', paginationTemplateProvider)
+        .run(['$templateCache',dirPaginationControlsTemplateInstaller]);
+
+    function dirPaginateDirective($compile, $parse, paginationService) {
+
+        return  {
+            terminal: true,
+            multiElement: true,
+            priority: 100,
+            compile: dirPaginationCompileFn
+        };
+
+        function dirPaginationCompileFn(tElement, tAttrs){
+
+            var expression = tAttrs.dirPaginate;
+            // regex taken directly from https://github.com/angular/angular.js/blob/v1.4.x/src/ng/directive/ngRepeat.js#L339
+            var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
+
+            var filterPattern = /\|\s*itemsPerPage\s*:\s*(.*\(\s*\w*\)|([^\)]*?(?=\s+as\s+))|[^\)]*)/;
+            if (match[2].match(filterPattern) === null) {
+                throw 'pagination directive: the \'itemsPerPage\' filter must be set.';
+            }
+            var itemsPerPageFilterRemoved = match[2].replace(filterPattern, '');
+            var collectionGetter = $parse(itemsPerPageFilterRemoved);
+
+            addNoCompileAttributes(tElement);
+
+            // If any value is specified for paginationId, we register the un-evaluated expression at this stage for the benefit of any
+            // dir-pagination-controls directives that may be looking for this ID.
+            var rawId = tAttrs.paginationId || DEFAULT_ID;
+            paginationService.registerInstance(rawId);
+
+            return function dirPaginationLinkFn(scope, element, attrs){
+
+                // Now that we have access to the `scope` we can interpolate any expression given in the paginationId attribute and
+                // potentially register a new ID if it evaluates to a different value than the rawId.
+                var paginationId = $parse(attrs.paginationId)(scope) || attrs.paginationId || DEFAULT_ID;
+                
+                // (TODO: this seems sound, but I'm reverting as many bug reports followed it's introduction in 0.11.0.
+                // Needs more investigation.)
+                // In case rawId != paginationId we deregister using rawId for the sake of general cleanliness
+                // before registering using paginationId
+                // paginationService.deregisterInstance(rawId);
+                paginationService.registerInstance(paginationId);
+
+                var repeatExpression = getRepeatExpression(expression, paginationId);
+                addNgRepeatToElement(element, attrs, repeatExpression);
+
+                removeTemporaryAttributes(element);
+                var compiled =  $compile(element);
+
+                var currentPageGetter = makeCurrentPageGetterFn(scope, attrs, paginationId);
+                paginationService.setCurrentPageParser(paginationId, currentPageGetter, scope);
+
+                if (typeof attrs.totalItems !== 'undefined') {
+                    paginationService.setAsyncModeTrue(paginationId);
+                    scope.$watch(function() {
+                        return $parse(attrs.totalItems)(scope);
+                    }, function (result) {
+                        if (0 <= result) {
+                            paginationService.setCollectionLength(paginationId, result);
+                        }
+                    });
+                } else {
+                    paginationService.setAsyncModeFalse(paginationId);
+                    scope.$watchCollection(function() {
+                        return collectionGetter(scope);
+                    }, function(collection) {
+                        if (collection) {
+                            var collectionLength = (collection instanceof Array) ? collection.length : Object.keys(collection).length;
+                            paginationService.setCollectionLength(paginationId, collectionLength);
+                        }
+                    });
+                }
+
+                // Delegate to the link function returned by the new compilation of the ng-repeat
+                compiled(scope);
+                 
+                // (TODO: Reverting this due to many bug reports in v 0.11.0. Needs investigation as the
+                // principle is sound)
+                // When the scope is destroyed, we make sure to remove the reference to it in paginationService
+                // so that it can be properly garbage collected
+                // scope.$on('$destroy', function destroyDirPagination() {
+                //     paginationService.deregisterInstance(paginationId);
+                // });
+            };
+        }
+
+        /**
+         * If a pagination id has been specified, we need to check that it is present as the second argument passed to
+         * the itemsPerPage filter. If it is not there, we add it and return the modified expression.
+         *
+         * @param expression
+         * @param paginationId
+         * @returns {*}
+         */
+        function getRepeatExpression(expression, paginationId) {
+            var repeatExpression,
+                idDefinedInFilter = !!expression.match(/(\|\s*itemsPerPage\s*:[^|]*:[^|]*)/);
+
+            if (paginationId !== DEFAULT_ID && !idDefinedInFilter) {
+                repeatExpression = expression.replace(/(\|\s*itemsPerPage\s*:\s*[^|\s]*)/, "$1 : '" + paginationId + "'");
+            } else {
+                repeatExpression = expression;
+            }
+
+            return repeatExpression;
+        }
+
+        /**
+         * Adds the ng-repeat directive to the element. In the case of multi-element (-start, -end) it adds the
+         * appropriate multi-element ng-repeat to the first and last element in the range.
+         * @param element
+         * @param attrs
+         * @param repeatExpression
+         */
+        function addNgRepeatToElement(element, attrs, repeatExpression) {
+            if (element[0].hasAttribute('dir-paginate-start') || element[0].hasAttribute('data-dir-paginate-start')) {
+                // using multiElement mode (dir-paginate-start, dir-paginate-end)
+                attrs.$set('ngRepeatStart', repeatExpression);
+                element.eq(element.length - 1).attr('ng-repeat-end', true);
+            } else {
+                attrs.$set('ngRepeat', repeatExpression);
+            }
+        }
+
+        /**
+         * Adds the dir-paginate-no-compile directive to each element in the tElement range.
+         * @param tElement
+         */
+        function addNoCompileAttributes(tElement) {
+            angular.forEach(tElement, function(el) {
+                if (el.nodeType === 1) {
+                    angular.element(el).attr('dir-paginate-no-compile', true);
+                }
+            });
+        }
+
+        /**
+         * Removes the variations on dir-paginate (data-, -start, -end) and the dir-paginate-no-compile directives.
+         * @param element
+         */
+        function removeTemporaryAttributes(element) {
+            angular.forEach(element, function(el) {
+                if (el.nodeType === 1) {
+                    angular.element(el).removeAttr('dir-paginate-no-compile');
+                }
+            });
+            element.eq(0).removeAttr('dir-paginate-start').removeAttr('dir-paginate').removeAttr('data-dir-paginate-start').removeAttr('data-dir-paginate');
+            element.eq(element.length - 1).removeAttr('dir-paginate-end').removeAttr('data-dir-paginate-end');
+        }
+
+        /**
+         * Creates a getter function for the current-page attribute, using the expression provided or a default value if
+         * no current-page expression was specified.
+         *
+         * @param scope
+         * @param attrs
+         * @param paginationId
+         * @returns {*}
+         */
+        function makeCurrentPageGetterFn(scope, attrs, paginationId) {
+            var currentPageGetter;
+            if (attrs.currentPage) {
+                currentPageGetter = $parse(attrs.currentPage);
+            } else {
+                // If the current-page attribute was not set, we'll make our own.
+                // Replace any non-alphanumeric characters which might confuse
+                // the $parse service and give unexpected results.
+                // See https://github.com/michaelbromley/angularUtils/issues/233
+                var defaultCurrentPage = (paginationId + '__currentPage').replace(/\W/g, '_');
+                scope[defaultCurrentPage] = 1;
+                currentPageGetter = $parse(defaultCurrentPage);
+            }
+            return currentPageGetter;
+        }
+    }
+
+    /**
+     * This is a helper directive that allows correct compilation when in multi-element mode (ie dir-paginate-start, dir-paginate-end).
+     * It is dynamically added to all elements in the dir-paginate compile function, and it prevents further compilation of
+     * any inner directives. It is then removed in the link function, and all inner directives are then manually compiled.
+     */
+    function noCompileDirective() {
+        return {
+            priority: 5000,
+            terminal: true
+        };
+    }
+
+    function dirPaginationControlsTemplateInstaller($templateCache) {
+        $templateCache.put('angularUtils.directives.dirPagination.template', '<ul class="pagination" ng-if="1 < pages.length || !autoHide"><li ng-if="boundaryLinks" ng-class="{ disabled : pagination.current == 1 }"><a href="" ng-click="setCurrent(1)">&laquo;</a></li><li ng-if="directionLinks" ng-class="{ disabled : pagination.current == 1 }"><a href="" ng-click="setCurrent(pagination.current - 1)">&lsaquo;</a></li><li ng-repeat="pageNumber in pages track by tracker(pageNumber, $index)" ng-class="{ active : pagination.current == pageNumber, disabled : pageNumber == \'...\' || ( ! autoHide && pages.length === 1 ) }"><a href="" ng-click="setCurrent(pageNumber)">{{ pageNumber }}</a></li><li ng-if="directionLinks" ng-class="{ disabled : pagination.current == pagination.last }"><a href="" ng-click="setCurrent(pagination.current + 1)">&rsaquo;</a></li><li ng-if="boundaryLinks"  ng-class="{ disabled : pagination.current == pagination.last }"><a href="" ng-click="setCurrent(pagination.last)">&raquo;</a></li></ul>');
+    }
+
+    function dirPaginationControlsDirective(paginationService, paginationTemplate) {
+
+        var numberRegex = /^\d+$/;
+
+        var DDO = {
+            restrict: 'AE',
+            scope: {
+                maxSize: '=?',
+                onPageChange: '&?',
+                paginationId: '=?',
+                autoHide: '=?'
+            },
+            link: dirPaginationControlsLinkFn
+        };
+
+        // We need to check the paginationTemplate service to see whether a template path or
+        // string has been specified, and add the `template` or `templateUrl` property to
+        // the DDO as appropriate. The order of priority to decide which template to use is
+        // (highest priority first):
+        // 1. paginationTemplate.getString()
+        // 2. attrs.templateUrl
+        // 3. paginationTemplate.getPath()
+        var templateString = paginationTemplate.getString();
+        if (templateString !== undefined) {
+            DDO.template = templateString;
+        } else {
+            DDO.templateUrl = function(elem, attrs) {
+                return attrs.templateUrl || paginationTemplate.getPath();
+            };
+        }
+        return DDO;
+
+        function dirPaginationControlsLinkFn(scope, element, attrs) {
+
+            // rawId is the un-interpolated value of the pagination-id attribute. This is only important when the corresponding dir-paginate directive has
+            // not yet been linked (e.g. if it is inside an ng-if block), and in that case it prevents this controls directive from assuming that there is
+            // no corresponding dir-paginate directive and wrongly throwing an exception.
+            var rawId = attrs.paginationId ||  DEFAULT_ID;
+            var paginationId = scope.paginationId || attrs.paginationId ||  DEFAULT_ID;
+
+            if (!paginationService.isRegistered(paginationId) && !paginationService.isRegistered(rawId)) {
+                var idMessage = (paginationId !== DEFAULT_ID) ? ' (id: ' + paginationId + ') ' : ' ';
+                if (window.console) {
+                    console.warn('Pagination directive: the pagination controls' + idMessage + 'cannot be used without the corresponding pagination directive, which was not found at link time.');
+                }
+            }
+
+            if (!scope.maxSize) { scope.maxSize = 9; }
+            scope.autoHide = scope.autoHide === undefined ? true : scope.autoHide;
+            scope.directionLinks = angular.isDefined(attrs.directionLinks) ? scope.$parent.$eval(attrs.directionLinks) : true;
+            scope.boundaryLinks = angular.isDefined(attrs.boundaryLinks) ? scope.$parent.$eval(attrs.boundaryLinks) : false;
+
+            var paginationRange = Math.max(scope.maxSize, 5);
+            scope.pages = [];
+            scope.pagination = {
+                last: 1,
+                current: 1
+            };
+            scope.range = {
+                lower: 1,
+                upper: 1,
+                total: 1
+            };
+
+            scope.$watch('maxSize', function(val) {
+                if (val) {
+                    paginationRange = Math.max(scope.maxSize, 5);
+                    generatePagination();
+                }
+            });
+
+            scope.$watch(function() {
+                if (paginationService.isRegistered(paginationId)) {
+                    return (paginationService.getCollectionLength(paginationId) + 1) * paginationService.getItemsPerPage(paginationId);
+                }
+            }, function(length) {
+                if (0 < length) {
+                    generatePagination();
+                }
+            });
+
+            scope.$watch(function() {
+                if (paginationService.isRegistered(paginationId)) {
+                    return (paginationService.getItemsPerPage(paginationId));
+                }
+            }, function(current, previous) {
+                if (current != previous && typeof previous !== 'undefined') {
+                    goToPage(scope.pagination.current);
+                }
+            });
+
+            scope.$watch(function() {
+                if (paginationService.isRegistered(paginationId)) {
+                    return paginationService.getCurrentPage(paginationId);
+                }
+            }, function(currentPage, previousPage) {
+                if (currentPage != previousPage) {
+                    goToPage(currentPage);
+                }
+            });
+
+            scope.setCurrent = function(num) {
+                if (paginationService.isRegistered(paginationId) && isValidPageNumber(num)) {
+                    num = parseInt(num, 10);
+                    paginationService.setCurrentPage(paginationId, num);
+                }
+            };
+
+            /**
+             * Custom "track by" function which allows for duplicate "..." entries on long lists,
+             * yet fixes the problem of wrongly-highlighted links which happens when using
+             * "track by $index" - see https://github.com/michaelbromley/angularUtils/issues/153
+             * @param id
+             * @param index
+             * @returns {string}
+             */
+            scope.tracker = function(id, index) {
+                return id + '_' + index;
+            };
+
+            function goToPage(num) {
+                if (paginationService.isRegistered(paginationId) && isValidPageNumber(num)) {
+                    var oldPageNumber = scope.pagination.current;
+
+                    scope.pages = generatePagesArray(num, paginationService.getCollectionLength(paginationId), paginationService.getItemsPerPage(paginationId), paginationRange);
+                    scope.pagination.current = num;
+                    updateRangeValues();
+
+                    // if a callback has been set, then call it with the page number as the first argument
+                    // and the previous page number as a second argument
+                    if (scope.onPageChange) {
+                        scope.onPageChange({
+                            newPageNumber : num,
+                            oldPageNumber : oldPageNumber
+                        });
+                    }
+                }
+            }
+
+            function generatePagination() {
+                if (paginationService.isRegistered(paginationId)) {
+                    var page = parseInt(paginationService.getCurrentPage(paginationId)) || 1;
+                    scope.pages = generatePagesArray(page, paginationService.getCollectionLength(paginationId), paginationService.getItemsPerPage(paginationId), paginationRange);
+                    scope.pagination.current = page;
+                    scope.pagination.last = scope.pages[scope.pages.length - 1];
+                    if (scope.pagination.last < scope.pagination.current) {
+                        scope.setCurrent(scope.pagination.last);
+                    } else {
+                        updateRangeValues();
+                    }
+                }
+            }
+
+            /**
+             * This function updates the values (lower, upper, total) of the `scope.range` object, which can be used in the pagination
+             * template to display the current page range, e.g. "showing 21 - 40 of 144 results";
+             */
+            function updateRangeValues() {
+                if (paginationService.isRegistered(paginationId)) {
+                    var currentPage = paginationService.getCurrentPage(paginationId),
+                        itemsPerPage = paginationService.getItemsPerPage(paginationId),
+                        totalItems = paginationService.getCollectionLength(paginationId);
+
+                    scope.range.lower = (currentPage - 1) * itemsPerPage + 1;
+                    scope.range.upper = Math.min(currentPage * itemsPerPage, totalItems);
+                    scope.range.total = totalItems;
+                }
+            }
+            function isValidPageNumber(num) {
+                return (numberRegex.test(num) && (0 < num && num <= scope.pagination.last));
+            }
+        }
+
+        /**
+         * Generate an array of page numbers (or the '...' string) which is used in an ng-repeat to generate the
+         * links used in pagination
+         *
+         * @param currentPage
+         * @param rowsPerPage
+         * @param paginationRange
+         * @param collectionLength
+         * @returns {Array}
+         */
+        function generatePagesArray(currentPage, collectionLength, rowsPerPage, paginationRange) {
+            var pages = [];
+            var totalPages = Math.ceil(collectionLength / rowsPerPage);
+            var halfWay = Math.ceil(paginationRange / 2);
+            var position;
+
+            if (currentPage <= halfWay) {
+                position = 'start';
+            } else if (totalPages - halfWay < currentPage) {
+                position = 'end';
+            } else {
+                position = 'middle';
+            }
+
+            var ellipsesNeeded = paginationRange < totalPages;
+            var i = 1;
+            while (i <= totalPages && i <= paginationRange) {
+                var pageNumber = calculatePageNumber(i, currentPage, paginationRange, totalPages);
+
+                var openingEllipsesNeeded = (i === 2 && (position === 'middle' || position === 'end'));
+                var closingEllipsesNeeded = (i === paginationRange - 1 && (position === 'middle' || position === 'start'));
+                if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) {
+                    pages.push('...');
+                } else {
+                    pages.push(pageNumber);
+                }
+                i ++;
+            }
+            return pages;
+        }
+
+        /**
+         * Given the position in the sequence of pagination links [i], figure out what page number corresponds to that position.
+         *
+         * @param i
+         * @param currentPage
+         * @param paginationRange
+         * @param totalPages
+         * @returns {*}
+         */
+        function calculatePageNumber(i, currentPage, paginationRange, totalPages) {
+            var halfWay = Math.ceil(paginationRange/2);
+            if (i === paginationRange) {
+                return totalPages;
+            } else if (i === 1) {
+                return i;
+            } else if (paginationRange < totalPages) {
+                if (totalPages - halfWay < currentPage) {
+                    return totalPages - paginationRange + i;
+                } else if (halfWay < currentPage) {
+                    return currentPage - halfWay + i;
+                } else {
+                    return i;
+                }
+            } else {
+                return i;
+            }
+        }
+    }
+
+    /**
+     * This filter slices the collection into pages based on the current page number and number of items per page.
+     * @param paginationService
+     * @returns {Function}
+     */
+    function itemsPerPageFilter(paginationService) {
+
+        return function(collection, itemsPerPage, paginationId) {
+            if (typeof (paginationId) === 'undefined') {
+                paginationId = DEFAULT_ID;
+            }
+            if (!paginationService.isRegistered(paginationId)) {
+                throw 'pagination directive: the itemsPerPage id argument (id: ' + paginationId + ') does not match a registered pagination-id.';
+            }
+            var end;
+            var start;
+            if (angular.isObject(collection)) {
+                itemsPerPage = parseInt(itemsPerPage) || 9999999999;
+                if (paginationService.isAsyncMode(paginationId)) {
+                    start = 0;
+                } else {
+                    start = (paginationService.getCurrentPage(paginationId) - 1) * itemsPerPage;
+                }
+                end = start + itemsPerPage;
+                paginationService.setItemsPerPage(paginationId, itemsPerPage);
+
+                if (collection instanceof Array) {
+                    // the array just needs to be sliced
+                    return collection.slice(start, end);
+                } else {
+                    // in the case of an object, we need to get an array of keys, slice that, then map back to
+                    // the original object.
+                    var slicedObject = {};
+                    angular.forEach(keys(collection).slice(start, end), function(key) {
+                        slicedObject[key] = collection[key];
+                    });
+                    return slicedObject;
+                }
+            } else {
+                return collection;
+            }
+        };
+    }
+
+    /**
+     * Shim for the Object.keys() method which does not exist in IE < 9
+     * @param obj
+     * @returns {Array}
+     */
+    function keys(obj) {
+        if (!Object.keys) {
+            var objKeys = [];
+            for (var i in obj) {
+                if (obj.hasOwnProperty(i)) {
+                    objKeys.push(i);
+                }
+            }
+            return objKeys;
+        } else {
+            return Object.keys(obj);
+        }
+    }
+
+    /**
+     * This service allows the various parts of the module to communicate and stay in sync.
+     */
+    function paginationService() {
+
+        var instances = {};
+        var lastRegisteredInstance;
+
+        this.registerInstance = function(instanceId) {
+            if (typeof instances[instanceId] === 'undefined') {
+                instances[instanceId] = {
+                    asyncMode: false
+                };
+                lastRegisteredInstance = instanceId;
+            }
+        };
+
+        this.deregisterInstance = function(instanceId) {
+            delete instances[instanceId];
+        };
+        
+        this.isRegistered = function(instanceId) {
+            return (typeof instances[instanceId] !== 'undefined');
+        };
+
+        this.getLastInstanceId = function() {
+            return lastRegisteredInstance;
+        };
+
+        this.setCurrentPageParser = function(instanceId, val, scope) {
+            instances[instanceId].currentPageParser = val;
+            instances[instanceId].context = scope;
+        };
+        this.setCurrentPage = function(instanceId, val) {
+            instances[instanceId].currentPageParser.assign(instances[instanceId].context, val);
+        };
+        this.getCurrentPage = function(instanceId) {
+            var parser = instances[instanceId].currentPageParser;
+            return parser ? parser(instances[instanceId].context) : 1;
+        };
+
+        this.setItemsPerPage = function(instanceId, val) {
+            instances[instanceId].itemsPerPage = val;
+        };
+        this.getItemsPerPage = function(instanceId) {
+            return instances[instanceId].itemsPerPage;
+        };
+
+        this.setCollectionLength = function(instanceId, val) {
+            instances[instanceId].collectionLength = val;
+        };
+        this.getCollectionLength = function(instanceId) {
+            return instances[instanceId].collectionLength;
+        };
+
+        this.setAsyncModeTrue = function(instanceId) {
+            instances[instanceId].asyncMode = true;
+        };
+
+        this.setAsyncModeFalse = function(instanceId) {
+            instances[instanceId].asyncMode = false;
+        };
+
+        this.isAsyncMode = function(instanceId) {
+            return instances[instanceId].asyncMode;
+        };
+    }
+
+    /**
+     * This provider allows global configuration of the template path used by the dir-pagination-controls directive.
+     */
+    function paginationTemplateProvider() {
+
+        var templatePath = 'angularUtils.directives.dirPagination.template';
+        var templateString;
+
+        /**
+         * Set a templateUrl to be used by all instances of <dir-pagination-controls>
+         * @param {String} path
+         */
+        this.setPath = function(path) {
+            templatePath = path;
+        };
+
+        /**
+         * Set a string of HTML to be used as a template by all instances
+         * of <dir-pagination-controls>. If both a path *and* a string have been set,
+         * the string takes precedence.
+         * @param {String} str
+         */
+        this.setString = function(str) {
+            templateString = str;
+        };
+
+        this.$get = function() {
+            return {
+                getPath: function() {
+                    return templatePath;
+                },
+                getString: function() {
+                    return templateString;
+                }
+            };
+        };
+    }
+})();
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular.min.js b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular.min.js
new file mode 100644 (file)
index 0000000..7f3704c
--- /dev/null
@@ -0,0 +1,250 @@
+/*
+ AngularJS v1.3.14
+ (c) 2010-2014 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(P,X,u){'use strict';function M(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.3.14/"+(b?b+"/":"")+a;for(a=1;a<arguments.length;a++){c=c+(1==a?"?":"&")+"p"+(a-1)+"=";var d=encodeURIComponent,e;e=arguments[a];e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e;c+=d(e)}return Error(c)}}function Ta(b){if(null==b||Ua(b))return!1;var a=b.length;return b.nodeType===
+na&&a?!0:x(b)||E(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function s(b,a,c){var d,e;if(b)if(G(b))for(d in b)"prototype"==d||"length"==d||"name"==d||b.hasOwnProperty&&!b.hasOwnProperty(d)||a.call(c,b[d],d,b);else if(E(b)||Ta(b)){var f="object"!==typeof b;d=0;for(e=b.length;d<e;d++)(f||d in b)&&a.call(c,b[d],d,b)}else if(b.forEach&&b.forEach!==s)b.forEach(a,c,b);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d,b);return b}function Ed(b,a,c){for(var d=Object.keys(b).sort(),e=0;e<d.length;e++)a.call(c,
+b[d[e]],d[e]);return d}function lc(b){return function(a,c){b(c,a)}}function Fd(){return++ob}function mc(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function w(b){for(var a=b.$$hashKey,c=1,d=arguments.length;c<d;c++){var e=arguments[c];if(e)for(var f=Object.keys(e),g=0,h=f.length;g<h;g++){var l=f[g];b[l]=e[l]}}mc(b,a);return b}function $(b){return parseInt(b,10)}function Pb(b,a){return w(Object.create(b),a)}function B(){}function oa(b){return b}function da(b){return function(){return b}}function z(b){return"undefined"===
+typeof b}function y(b){return"undefined"!==typeof b}function J(b){return null!==b&&"object"===typeof b}function x(b){return"string"===typeof b}function V(b){return"number"===typeof b}function pa(b){return"[object Date]"===Da.call(b)}function G(b){return"function"===typeof b}function pb(b){return"[object RegExp]"===Da.call(b)}function Ua(b){return b&&b.window===b}function Va(b){return b&&b.$evalAsync&&b.$watch}function Wa(b){return"boolean"===typeof b}function nc(b){return!(!b||!(b.nodeName||b.prop&&
+b.attr&&b.find))}function Gd(b){var a={};b=b.split(",");var c;for(c=0;c<b.length;c++)a[b[c]]=!0;return a}function ta(b){return R(b.nodeName||b[0]&&b[0].nodeName)}function Xa(b,a){var c=b.indexOf(a);0<=c&&b.splice(c,1);return a}function Ea(b,a,c,d){if(Ua(b)||Va(b))throw Ka("cpws");if(a){if(b===a)throw Ka("cpi");c=c||[];d=d||[];if(J(b)){var e=c.indexOf(b);if(-1!==e)return d[e];c.push(b);d.push(a)}if(E(b))for(var f=a.length=0;f<b.length;f++)e=Ea(b[f],null,c,d),J(b[f])&&(c.push(b[f]),d.push(e)),a.push(e);
+else{var g=a.$$hashKey;E(a)?a.length=0:s(a,function(b,c){delete a[c]});for(f in b)b.hasOwnProperty(f)&&(e=Ea(b[f],null,c,d),J(b[f])&&(c.push(b[f]),d.push(e)),a[f]=e);mc(a,g)}}else if(a=b)E(b)?a=Ea(b,[],c,d):pa(b)?a=new Date(b.getTime()):pb(b)?(a=new RegExp(b.source,b.toString().match(/[^\/]*$/)[0]),a.lastIndex=b.lastIndex):J(b)&&(e=Object.create(Object.getPrototypeOf(b)),a=Ea(b,e,c,d));return a}function qa(b,a){if(E(b)){a=a||[];for(var c=0,d=b.length;c<d;c++)a[c]=b[c]}else if(J(b))for(c in a=a||{},
+b)if("$"!==c.charAt(0)||"$"!==c.charAt(1))a[c]=b[c];return a||b}function ea(b,a){if(b===a)return!0;if(null===b||null===a)return!1;if(b!==b&&a!==a)return!0;var c=typeof b,d;if(c==typeof a&&"object"==c)if(E(b)){if(!E(a))return!1;if((c=b.length)==a.length){for(d=0;d<c;d++)if(!ea(b[d],a[d]))return!1;return!0}}else{if(pa(b))return pa(a)?ea(b.getTime(),a.getTime()):!1;if(pb(b)&&pb(a))return b.toString()==a.toString();if(Va(b)||Va(a)||Ua(b)||Ua(a)||E(a))return!1;c={};for(d in b)if("$"!==d.charAt(0)&&!G(b[d])){if(!ea(b[d],
+a[d]))return!1;c[d]=!0}for(d in a)if(!c.hasOwnProperty(d)&&"$"!==d.charAt(0)&&a[d]!==u&&!G(a[d]))return!1;return!0}return!1}function Ya(b,a,c){return b.concat(Za.call(a,c))}function oc(b,a){var c=2<arguments.length?Za.call(arguments,2):[];return!G(a)||a instanceof RegExp?a:c.length?function(){return arguments.length?a.apply(b,Ya(c,arguments,0)):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}}function Hd(b,a){var c=a;"string"===typeof b&&"$"===b.charAt(0)&&"$"===b.charAt(1)?
+c=u:Ua(a)?c="$WINDOW":a&&X===a?c="$DOCUMENT":Va(a)&&(c="$SCOPE");return c}function $a(b,a){if("undefined"===typeof b)return u;V(a)||(a=a?2:null);return JSON.stringify(b,Hd,a)}function pc(b){return x(b)?JSON.parse(b):b}function ua(b){b=C(b).clone();try{b.empty()}catch(a){}var c=C("<div>").append(b).html();try{return b[0].nodeType===qb?R(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+R(b)})}catch(d){return R(c)}}function qc(b){try{return decodeURIComponent(b)}catch(a){}}function rc(b){var a=
+{},c,d;s((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=qc(c[0]),y(d)&&(b=y(c[1])?qc(c[1]):!0,sc.call(a,d)?E(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Qb(b){var a=[];s(b,function(b,d){E(b)?s(b,function(b){a.push(Fa(d,!0)+(!0===b?"":"="+Fa(b,!0)))}):a.push(Fa(d,!0)+(!0===b?"":"="+Fa(b,!0)))});return a.length?a.join("&"):""}function rb(b){return Fa(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Fa(b,a){return encodeURIComponent(b).replace(/%40/gi,
+"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Id(b,a){var c,d,e=sb.length;b=C(b);for(d=0;d<e;++d)if(c=sb[d]+a,x(c=b.attr(c)))return c;return null}function Jd(b,a){var c,d,e={};s(sb,function(a){a+="app";!c&&b.hasAttribute&&b.hasAttribute(a)&&(c=b,d=b.getAttribute(a))});s(sb,function(a){a+="app";var e;!c&&(e=b.querySelector("["+a.replace(":","\\:")+"]"))&&(c=e,d=e.getAttribute(a))});c&&(e.strictDi=null!==Id(c,"strict-di"),
+a(c,d?[d]:[],e))}function tc(b,a,c){J(c)||(c={});c=w({strictDi:!1},c);var d=function(){b=C(b);if(b.injector()){var d=b[0]===X?"document":ua(b);throw Ka("btstrpd",d.replace(/</,"&lt;").replace(/>/,"&gt;"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);c.debugInfoEnabled&&a.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);a.unshift("ng");d=ab(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",
+d);c(b)(a)})}]);return d},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;P&&e.test(P.name)&&(c.debugInfoEnabled=!0,P.name=P.name.replace(e,""));if(P&&!f.test(P.name))return d();P.name=P.name.replace(f,"");aa.resumeBootstrap=function(b){s(b,function(b){a.push(b)});return d()};G(aa.resumeDeferredBootstrap)&&aa.resumeDeferredBootstrap()}function Kd(){P.name="NG_ENABLE_DEBUG_INFO!"+P.name;P.location.reload()}function Ld(b){b=aa.element(b).injector();if(!b)throw Ka("test");return b.get("$$testability")}
+function uc(b,a){a=a||"_";return b.replace(Md,function(b,d){return(d?a:"")+b.toLowerCase()})}function Nd(){var b;vc||((ra=P.jQuery)&&ra.fn.on?(C=ra,w(ra.fn,{scope:La.scope,isolateScope:La.isolateScope,controller:La.controller,injector:La.injector,inheritedData:La.inheritedData}),b=ra.cleanData,ra.cleanData=function(a){var c;if(Rb)Rb=!1;else for(var d=0,e;null!=(e=a[d]);d++)(c=ra._data(e,"events"))&&c.$destroy&&ra(e).triggerHandler("$destroy");b(a)}):C=Q,aa.element=C,vc=!0)}function Sb(b,a,c){if(!b)throw Ka("areq",
+a||"?",c||"required");return b}function tb(b,a,c){c&&E(b)&&(b=b[b.length-1]);Sb(G(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Ma(b,a){if("hasOwnProperty"===b)throw Ka("badname",a);}function wc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g<f;g++)d=a[g],b&&(b=(e=b)[d]);return!c&&G(b)?oc(e,b):b}function ub(b){var a=b[0];b=b[b.length-1];var c=[a];do{a=a.nextSibling;if(!a)break;c.push(a)}while(a!==b);return C(c)}function fa(){return Object.create(null)}
+function Od(b){function a(a,b,c){return a[b]||(a[b]=c())}var c=M("$injector"),d=M("ng");b=a(b,"angular",Object);b.$$minErr=b.$$minErr||M;return a(b,"module",function(){var b={};return function(f,g,h){if("hasOwnProperty"===f)throw d("badname","module");g&&b.hasOwnProperty(f)&&(b[f]=null);return a(b,f,function(){function a(c,d,e,f){f||(f=b);return function(){f[e||"push"]([c,d,arguments]);return t}}if(!g)throw c("nomod",f);var b=[],d=[],e=[],q=a("$injector","invoke","push",d),t={_invokeQueue:b,_configBlocks:d,
+_runBlocks:e,requires:g,name:f,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),animation:a("$animateProvider","register"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:q,run:function(a){e.push(a);return this}};h&&q(h);return t})}})}function Pd(b){w(b,{bootstrap:tc,copy:Ea,extend:w,equals:ea,
+element:C,forEach:s,injector:ab,noop:B,bind:oc,toJson:$a,fromJson:pc,identity:oa,isUndefined:z,isDefined:y,isString:x,isFunction:G,isObject:J,isNumber:V,isElement:nc,isArray:E,version:Qd,isDate:pa,lowercase:R,uppercase:vb,callbacks:{counter:0},getTestability:Ld,$$minErr:M,$$csp:bb,reloadWithDebugInfo:Kd});cb=Od(P);try{cb("ngLocale")}catch(a){cb("ngLocale",[]).provider("$locale",Rd)}cb("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:Sd});a.provider("$compile",xc).directive({a:Td,
+input:yc,textarea:yc,form:Ud,script:Vd,select:Wd,style:Xd,option:Yd,ngBind:Zd,ngBindHtml:$d,ngBindTemplate:ae,ngClass:be,ngClassEven:ce,ngClassOdd:de,ngCloak:ee,ngController:fe,ngForm:ge,ngHide:he,ngIf:ie,ngInclude:je,ngInit:ke,ngNonBindable:le,ngPluralize:me,ngRepeat:ne,ngShow:oe,ngStyle:pe,ngSwitch:qe,ngSwitchWhen:re,ngSwitchDefault:se,ngOptions:te,ngTransclude:ue,ngModel:ve,ngList:we,ngChange:xe,pattern:zc,ngPattern:zc,required:Ac,ngRequired:Ac,minlength:Bc,ngMinlength:Bc,maxlength:Cc,ngMaxlength:Cc,
+ngValue:ye,ngModelOptions:ze}).directive({ngInclude:Ae}).directive(wb).directive(Dc);a.provider({$anchorScroll:Be,$animate:Ce,$browser:De,$cacheFactory:Ee,$controller:Fe,$document:Ge,$exceptionHandler:He,$filter:Ec,$interpolate:Ie,$interval:Je,$http:Ke,$httpBackend:Le,$location:Me,$log:Ne,$parse:Oe,$rootScope:Pe,$q:Qe,$$q:Re,$sce:Se,$sceDelegate:Te,$sniffer:Ue,$templateCache:Ve,$templateRequest:We,$$testability:Xe,$timeout:Ye,$window:Ze,$$rAF:$e,$$asyncCallback:af,$$jqLite:bf})}])}function db(b){return b.replace(cf,
+function(a,b,d,e){return e?d.toUpperCase():d}).replace(df,"Moz$1")}function Fc(b){b=b.nodeType;return b===na||!b||9===b}function Gc(b,a){var c,d,e=a.createDocumentFragment(),f=[];if(Tb.test(b)){c=c||e.appendChild(a.createElement("div"));d=(ef.exec(b)||["",""])[1].toLowerCase();d=ga[d]||ga._default;c.innerHTML=d[1]+b.replace(ff,"<$1></$2>")+d[2];for(d=d[0];d--;)c=c.lastChild;f=Ya(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";s(f,function(a){e.appendChild(a)});
+return e}function Q(b){if(b instanceof Q)return b;var a;x(b)&&(b=T(b),a=!0);if(!(this instanceof Q)){if(a&&"<"!=b.charAt(0))throw Ub("nosel");return new Q(b)}if(a){a=X;var c;b=(c=gf.exec(b))?[a.createElement(c[1])]:(c=Gc(b,a))?c.childNodes:[]}Hc(this,b)}function Vb(b){return b.cloneNode(!0)}function xb(b,a){a||yb(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;d<e;d++)yb(c[d])}function Ic(b,a,c,d){if(y(d))throw Ub("offargs");var e=(d=zb(b))&&d.events,f=d&&d.handle;if(f)if(a)s(a.split(" "),
+function(a){if(y(c)){var d=e[a];Xa(d||[],c);if(d&&0<d.length)return}b.removeEventListener(a,f,!1);delete e[a]});else for(a in e)"$destroy"!==a&&b.removeEventListener(a,f,!1),delete e[a]}function yb(b,a){var c=b.ng339,d=c&&Ab[c];d&&(a?delete d.data[a]:(d.handle&&(d.events.$destroy&&d.handle({},"$destroy"),Ic(b)),delete Ab[c],b.ng339=u))}function zb(b,a){var c=b.ng339,c=c&&Ab[c];a&&!c&&(b.ng339=c=++hf,c=Ab[c]={events:{},data:{},handle:u});return c}function Wb(b,a,c){if(Fc(b)){var d=y(c),e=!d&&a&&!J(a),
+f=!a;b=(b=zb(b,!e))&&b.data;if(d)b[a]=c;else{if(f)return b;if(e)return b&&b[a];w(b,a)}}}function Bb(b,a){return b.getAttribute?-1<(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+a+" "):!1}function Cb(b,a){a&&b.setAttribute&&s(a.split(" "),function(a){b.setAttribute("class",T((" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+T(a)+" "," ")))})}function Db(b,a){if(a&&b.setAttribute){var c=(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");
+s(a.split(" "),function(a){a=T(a);-1===c.indexOf(" "+a+" ")&&(c+=a+" ")});b.setAttribute("class",T(c))}}function Hc(b,a){if(a)if(a.nodeType)b[b.length++]=a;else{var c=a.length;if("number"===typeof c&&a.window!==a){if(c)for(var d=0;d<c;d++)b[b.length++]=a[d]}else b[b.length++]=a}}function Jc(b,a){return Eb(b,"$"+(a||"ngController")+"Controller")}function Eb(b,a,c){9==b.nodeType&&(b=b.documentElement);for(a=E(a)?a:[a];b;){for(var d=0,e=a.length;d<e;d++)if((c=C.data(b,a[d]))!==u)return c;b=b.parentNode||
+11===b.nodeType&&b.host}}function Kc(b){for(xb(b,!0);b.firstChild;)b.removeChild(b.firstChild)}function Lc(b,a){a||xb(b);var c=b.parentNode;c&&c.removeChild(b)}function jf(b,a){a=a||P;if("complete"===a.document.readyState)a.setTimeout(b);else C(a).on("load",b)}function Mc(b,a){var c=Fb[a.toLowerCase()];return c&&Nc[ta(b)]&&c}function kf(b,a){var c=b.nodeName;return("INPUT"===c||"TEXTAREA"===c)&&Oc[a]}function lf(b,a){var c=function(c,e){c.isDefaultPrevented=function(){return c.defaultPrevented};var f=
+a[e||c.type],g=f?f.length:0;if(g){if(z(c.immediatePropagationStopped)){var h=c.stopImmediatePropagation;c.stopImmediatePropagation=function(){c.immediatePropagationStopped=!0;c.stopPropagation&&c.stopPropagation();h&&h.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};1<g&&(f=qa(f));for(var l=0;l<g;l++)c.isImmediatePropagationStopped()||f[l].call(b,c)}};c.elem=b;return c}function bf(){this.$get=function(){return w(Q,{hasClass:function(b,a){b.attr&&(b=b[0]);
+return Bb(b,a)},addClass:function(b,a){b.attr&&(b=b[0]);return Db(b,a)},removeClass:function(b,a){b.attr&&(b=b[0]);return Cb(b,a)}})}}function Na(b,a){var c=b&&b.$$hashKey;if(c)return"function"===typeof c&&(c=b.$$hashKey()),c;c=typeof b;return c="function"==c||"object"==c&&null!==b?b.$$hashKey=c+":"+(a||Fd)():c+":"+b}function eb(b,a){if(a){var c=0;this.nextUid=function(){return++c}}s(b,this.put,this)}function mf(b){return(b=b.toString().replace(Pc,"").match(Qc))?"function("+(b[1]||"").replace(/[\s\r\n]+/,
+" ")+")":"fn"}function ab(b,a){function c(a){return function(b,c){if(J(b))s(b,lc(a));else return a(b,c)}}function d(a,b){Ma(a,"service");if(G(b)||E(b))b=q.instantiate(b);if(!b.$get)throw Ga("pget",a);return p[a+"Provider"]=b}function e(a,b){return function(){var c=r.invoke(b,this);if(z(c))throw Ga("undef",a);return c}}function f(a,b,c){return d(a,{$get:!1!==c?e(a,b):b})}function g(a){var b=[],c;s(a,function(a){function d(a){var b,c;b=0;for(c=a.length;b<c;b++){var e=a[b],f=q.get(e[0]);f[e[1]].apply(f,
+e[2])}}if(!m.get(a)){m.put(a,!0);try{x(a)?(c=cb(a),b=b.concat(g(c.requires)).concat(c._runBlocks),d(c._invokeQueue),d(c._configBlocks)):G(a)?b.push(q.invoke(a)):E(a)?b.push(q.invoke(a)):tb(a,"module")}catch(e){throw E(a)&&(a=a[a.length-1]),e.message&&e.stack&&-1==e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Ga("modulerr",a,e.stack||e.message||e);}}});return b}function h(b,c){function d(a,e){if(b.hasOwnProperty(a)){if(b[a]===l)throw Ga("cdep",a+" <- "+k.join(" <- "));return b[a]}try{return k.unshift(a),
+b[a]=l,b[a]=c(a,e)}catch(f){throw b[a]===l&&delete b[a],f;}finally{k.shift()}}function e(b,c,f,g){"string"===typeof f&&(g=f,f=null);var h=[],k=ab.$$annotate(b,a,g),l,q,p;q=0;for(l=k.length;q<l;q++){p=k[q];if("string"!==typeof p)throw Ga("itkn",p);h.push(f&&f.hasOwnProperty(p)?f[p]:d(p,g))}E(b)&&(b=b[l]);return b.apply(c,h)}return{invoke:e,instantiate:function(a,b,c){var d=Object.create((E(a)?a[a.length-1]:a).prototype||null);a=e(a,d,b,c);return J(a)||G(a)?a:d},get:d,annotate:ab.$$annotate,has:function(a){return p.hasOwnProperty(a+
+"Provider")||b.hasOwnProperty(a)}}}a=!0===a;var l={},k=[],m=new eb([],!0),p={$provide:{provider:c(d),factory:c(f),service:c(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:c(function(a,b){return f(a,da(b),!1)}),constant:c(function(a,b){Ma(a,"constant");p[a]=b;t[a]=b}),decorator:function(a,b){var c=q.get(a+"Provider"),d=c.$get;c.$get=function(){var a=r.invoke(d,c);return r.invoke(b,null,{$delegate:a})}}}},q=p.$injector=h(p,function(a,b){aa.isString(b)&&k.push(b);
+throw Ga("unpr",k.join(" <- "));}),t={},r=t.$injector=h(t,function(a,b){var c=q.get(a+"Provider",b);return r.invoke(c.$get,c,u,a)});s(g(b),function(a){r.invoke(a||B)});return r}function Be(){var b=!0;this.disableAutoScrolling=function(){b=!1};this.$get=["$window","$location","$rootScope",function(a,c,d){function e(a){var b=null;Array.prototype.some.call(a,function(a){if("a"===ta(a))return b=a,!0});return b}function f(b){if(b){b.scrollIntoView();var c;c=g.yOffset;G(c)?c=c():nc(c)?(c=c[0],c="fixed"!==
+a.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):V(c)||(c=0);c&&(b=b.getBoundingClientRect().top,a.scrollBy(0,b-c))}else a.scrollTo(0,0)}function g(){var a=c.hash(),b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=a.document;b&&d.$watch(function(){return c.hash()},function(a,b){a===b&&""===a||jf(function(){d.$evalAsync(g)})});return g}]}function af(){this.$get=["$$rAF","$timeout",function(b,a){return b.supported?function(a){return b(a)}:
+function(b){return a(b,0,!1)}}]}function nf(b,a,c,d){function e(a){try{a.apply(null,Za.call(arguments,1))}finally{if(n--,0===n)for(;D.length;)try{D.pop()()}catch(b){c.error(b)}}}function f(a,b){(function ca(){s(H,function(a){a()});v=b(ca,a)})()}function g(){h();l()}function h(){A=b.history.state;A=z(A)?null:A;ea(A,O)&&(A=O);O=A}function l(){if(F!==m.url()||N!==A)F=m.url(),N=A,s(W,function(a){a(m.url(),A)})}function k(a){try{return decodeURIComponent(a)}catch(b){return a}}var m=this,p=a[0],q=b.location,
+t=b.history,r=b.setTimeout,S=b.clearTimeout,K={};m.isMock=!1;var n=0,D=[];m.$$completeOutstandingRequest=e;m.$$incOutstandingRequestCount=function(){n++};m.notifyWhenNoOutstandingRequests=function(a){s(H,function(a){a()});0===n?a():D.push(a)};var H=[],v;m.addPollFn=function(a){z(v)&&f(100,r);H.push(a);return a};var A,N,F=q.href,ba=a.find("base"),I=null;h();N=A;m.url=function(a,c,e){z(e)&&(e=null);q!==b.location&&(q=b.location);t!==b.history&&(t=b.history);if(a){var f=N===e;if(F===a&&(!d.history||
+f))return m;var g=F&&Ha(F)===Ha(a);F=a;N=e;!d.history||g&&f?(g||(I=a),c?q.replace(a):g?(c=q,e=a.indexOf("#"),a=-1===e?"":a.substr(e+1),c.hash=a):q.href=a):(t[c?"replaceState":"pushState"](e,"",a),h(),N=A);return m}return I||q.href.replace(/%27/g,"'")};m.state=function(){return A};var W=[],va=!1,O=null;m.onUrlChange=function(a){if(!va){if(d.history)C(b).on("popstate",g);C(b).on("hashchange",g);va=!0}W.push(a);return a};m.$$checkUrlChange=l;m.baseHref=function(){var a=ba.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,
+""):""};var wa={},y="",ha=m.baseHref();m.cookies=function(a,b){var d,e,f,g;if(a)b===u?p.cookie=encodeURIComponent(a)+"=;path="+ha+";expires=Thu, 01 Jan 1970 00:00:00 GMT":x(b)&&(d=(p.cookie=encodeURIComponent(a)+"="+encodeURIComponent(b)+";path="+ha).length+1,4096<d&&c.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+d+" > 4096 bytes)!"));else{if(p.cookie!==y)for(y=p.cookie,d=y.split("; "),wa={},f=0;f<d.length;f++)e=d[f],g=e.indexOf("="),0<g&&(a=k(e.substring(0,g)),
+wa[a]===u&&(wa[a]=k(e.substring(g+1))));return wa}};m.defer=function(a,b){var c;n++;c=r(function(){delete K[c];e(a)},b||0);K[c]=!0;return c};m.defer.cancel=function(a){return K[a]?(delete K[a],S(a),e(B),!0):!1}}function De(){this.$get=["$window","$log","$sniffer","$document",function(b,a,c,d){return new nf(b,d,a,c)}]}function Ee(){this.$get=function(){function b(b,d){function e(a){a!=p&&(q?q==a&&(q=a.n):q=a,f(a.n,a.p),f(a,p),p=a,p.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(b in a)throw M("$cacheFactory")("iid",
+b);var g=0,h=w({},d,{id:b}),l={},k=d&&d.capacity||Number.MAX_VALUE,m={},p=null,q=null;return a[b]={put:function(a,b){if(k<Number.MAX_VALUE){var c=m[a]||(m[a]={key:a});e(c)}if(!z(b))return a in l||g++,l[a]=b,g>k&&this.remove(q.key),b},get:function(a){if(k<Number.MAX_VALUE){var b=m[a];if(!b)return;e(b)}return l[a]},remove:function(a){if(k<Number.MAX_VALUE){var b=m[a];if(!b)return;b==p&&(p=b.p);b==q&&(q=b.n);f(b.n,b.p);delete m[a]}delete l[a];g--},removeAll:function(){l={};g=0;m={};p=q=null},destroy:function(){m=
+h=l=null;delete a[b]},info:function(){return w({},h,{size:g})}}}var a={};b.info=function(){var b={};s(a,function(a,e){b[e]=a.info()});return b};b.get=function(b){return a[b]};return b}}function Ve(){this.$get=["$cacheFactory",function(b){return b("templates")}]}function xc(b,a){function c(a,b){var c=/^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,d={};s(a,function(a,e){var f=a.match(c);if(!f)throw ia("iscp",b,e,a);d[e]={mode:f[1][0],collection:"*"===f[2],optional:"?"===f[3],attrName:f[4]||e}});return d}var d=
+{},e=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,f=/(([\w\-]+)(?:\:([^;]+))?;?)/,g=Gd("ngSrc,ngSrcset,src,srcset"),h=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,l=/^(on[a-z]+|formaction)$/;this.directive=function p(a,e){Ma(a,"directive");x(a)?(Sb(e,"directiveFactory"),d.hasOwnProperty(a)||(d[a]=[],b.factory(a+"Directive",["$injector","$exceptionHandler",function(b,e){var f=[];s(d[a],function(d,g){try{var h=b.invoke(d);G(h)?h={compile:da(h)}:!h.compile&&h.link&&(h.compile=da(h.link));h.priority=h.priority||0;h.index=
+g;h.name=h.name||a;h.require=h.require||h.controller&&h.name;h.restrict=h.restrict||"EA";J(h.scope)&&(h.$$isolateBindings=c(h.scope,h.name));f.push(h)}catch(l){e(l)}});return f}])),d[a].push(e)):s(a,lc(p));return this};this.aHrefSanitizationWhitelist=function(b){return y(b)?(a.aHrefSanitizationWhitelist(b),this):a.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(b){return y(b)?(a.imgSrcSanitizationWhitelist(b),this):a.imgSrcSanitizationWhitelist()};var k=!0;this.debugInfoEnabled=
+function(a){return y(a)?(k=a,this):k};this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,b,c,r,S,K,n,D,H,v,A){function N(a,b){try{a.addClass(b)}catch(c){}}function F(a,b,c,d,e){a instanceof C||(a=C(a));s(a,function(b,c){b.nodeType==qb&&b.nodeValue.match(/\S+/)&&(a[c]=C(b).wrap("<span></span>").parent()[0])});var f=ba(a,b,a,c,d,e);F.$$addScopeClass(a);var g=null;return function(b,
+c,d){Sb(b,"scope");d=d||{};var e=d.parentBoundTranscludeFn,h=d.transcludeControllers;d=d.futureParentElement;e&&e.$$boundTransclude&&(e=e.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==ta(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==g?C(Xb(g,C("<div>").append(a).html())):c?La.clone.call(a):a;if(h)for(var l in h)d.data("$"+l+"Controller",h[l].instance);F.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,e);return d}}function ba(a,b,c,d,e,f){function g(a,c,d,e){var f,l,k,q,p,r,D;if(n)for(D=
+Array(c.length),q=0;q<h.length;q+=3)f=h[q],D[f]=c[f];else D=c;q=0;for(p=h.length;q<p;)l=D[h[q++]],c=h[q++],f=h[q++],c?(c.scope?(k=a.$new(),F.$$addScopeInfo(C(l),k)):k=a,r=c.transcludeOnThisElement?I(a,c.transclude,e,c.elementTranscludeOnThisElement):!c.templateOnThisElement&&e?e:!e&&b?I(a,b):null,c(f,k,l,d,r)):f&&f(a,l.childNodes,u,e)}for(var h=[],l,k,q,p,n,r=0;r<a.length;r++){l=new Yb;k=W(a[r],[],l,0===r?d:u,e);(f=k.length?y(k,a[r],l,b,c,null,[],[],f):null)&&f.scope&&F.$$addScopeClass(l.$$element);
+l=f&&f.terminal||!(q=a[r].childNodes)||!q.length?null:ba(q,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b);if(f||l)h.push(r,f,l),p=!0,n=n||f;f=null}return p?g:null}function I(a,b,c,d){return function(d,e,f,g,h){d||(d=a.$new(!1,h),d.$$transcluded=!0);return b(d,e,{parentBoundTranscludeFn:c,transcludeControllers:f,futureParentElement:g})}}function W(a,b,c,d,g){var h=c.$attr,l;switch(a.nodeType){case na:ha(b,ya(ta(a)),"E",d,g);for(var k,q,p,n=a.attributes,r=0,D=n&&n.length;r<
+D;r++){var S=!1,t=!1;k=n[r];l=k.name;q=T(k.value);k=ya(l);if(p=Pa.test(k))l=l.replace(Sc,"").substr(8).replace(/_(.)/g,function(a,b){return b.toUpperCase()});var A=k.replace(/(Start|End)$/,"");fb(A)&&k===A+"Start"&&(S=l,t=l.substr(0,l.length-5)+"end",l=l.substr(0,l.length-6));k=ya(l.toLowerCase());h[k]=l;if(p||!c.hasOwnProperty(k))c[k]=q,Mc(a,k)&&(c[k]=!0);Aa(a,b,q,k,p);ha(b,k,"A",d,g,S,t)}a=a.className;J(a)&&(a=a.animVal);if(x(a)&&""!==a)for(;l=f.exec(a);)k=ya(l[2]),ha(b,k,"C",d,g)&&(c[k]=T(l[3])),
+a=a.substr(l.index+l[0].length);break;case qb:P(b,a.nodeValue);break;case 8:try{if(l=e.exec(a.nodeValue))k=ya(l[1]),ha(b,k,"M",d,g)&&(c[k]=T(l[2]))}catch(v){}}b.sort(ca);return b}function va(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ia("uterdir",b,c);a.nodeType==na&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return C(d)}function O(a,b,c){return function(d,e,f,g,h){e=va(e[0],b,c);return a(d,e,f,g,h)}}function y(a,
+d,e,f,g,l,k,p,n){function r(a,b,c,d){if(a){c&&(a=O(a,c,d));a.require=L.require;a.directiveName=ca;if(I===L||L.$$isolateScope)a=Y(a,{isolateScope:!0});k.push(a)}if(b){c&&(b=O(b,c,d));b.require=L.require;b.directiveName=ca;if(I===L||L.$$isolateScope)b=Y(b,{isolateScope:!0});p.push(b)}}function D(a,b,c,d){var e,f="data",g=!1,l=c,k;if(x(b)){k=b.match(h);b=b.substring(k[0].length);k[3]&&(k[1]?k[3]=null:k[1]=k[3]);"^"===k[1]?f="inheritedData":"^^"===k[1]&&(f="inheritedData",l=c.parent());"?"===k[2]&&(g=
+!0);e=null;d&&"data"===f&&(e=d[b])&&(e=e.instance);e=e||l[f]("$"+b+"Controller");if(!e&&!g)throw ia("ctreq",b,a);return e||null}E(b)&&(e=[],s(b,function(b){e.push(D(a,b,c,d))}));return e}function A(a,c,f,g,h){function l(a,b,c){var d;Va(a)||(c=b,b=a,a=u);B&&(d=N);c||(c=B?W.parent():W);return h(a,b,d,c,va)}var n,r,t,v,N,gb,W,O;d===f?(O=e,W=e.$$element):(W=C(f),O=new Yb(W,e));I&&(v=c.$new(!0));h&&(gb=l,gb.$$boundTransclude=h);H&&(ba={},N={},s(H,function(a){var b={$scope:a===I||a.$$isolateScope?v:c,$element:W,
+$attrs:O,$transclude:gb};t=a.controller;"@"==t&&(t=O[a.name]);b=K(t,b,!0,a.controllerAs);N[a.name]=b;B||W.data("$"+a.name+"Controller",b.instance);ba[a.name]=b}));if(I){F.$$addScopeInfo(W,v,!0,!(ja&&(ja===I||ja===I.$$originalDirective)));F.$$addScopeClass(W,!0);g=ba&&ba[I.name];var xa=v;g&&g.identifier&&!0===I.bindToController&&(xa=g.instance);s(v.$$isolateBindings=I.$$isolateBindings,function(a,d){var e=a.attrName,f=a.optional,g,h,l,k;switch(a.mode){case "@":O.$observe(e,function(a){xa[d]=a});O.$$observers[e].$$scope=
+c;O[e]&&(xa[d]=b(O[e])(c));break;case "=":if(f&&!O[e])break;h=S(O[e]);k=h.literal?ea:function(a,b){return a===b||a!==a&&b!==b};l=h.assign||function(){g=xa[d]=h(c);throw ia("nonassign",O[e],I.name);};g=xa[d]=h(c);f=function(a){k(a,xa[d])||(k(a,g)?l(c,a=xa[d]):xa[d]=a);return g=a};f.$stateful=!0;f=a.collection?c.$watchCollection(O[e],f):c.$watch(S(O[e],f),null,h.literal);v.$on("$destroy",f);break;case "&":h=S(O[e]),xa[d]=function(a){return h(c,a)}}})}ba&&(s(ba,function(a){a()}),ba=null);g=0;for(n=k.length;g<
+n;g++)r=k[g],Z(r,r.isolateScope?v:c,W,O,r.require&&D(r.directiveName,r.require,W,N),gb);var va=c;I&&(I.template||null===I.templateUrl)&&(va=v);a&&a(va,f.childNodes,u,h);for(g=p.length-1;0<=g;g--)r=p[g],Z(r,r.isolateScope?v:c,W,O,r.require&&D(r.directiveName,r.require,W,N),gb)}n=n||{};for(var v=-Number.MAX_VALUE,N,H=n.controllerDirectives,ba,I=n.newIsolateScopeDirective,ja=n.templateDirective,wa=n.nonTlbTranscludeDirective,ha=!1,fb=!1,B=n.hasElementTranscludeDirective,w=e.$$element=C(d),L,ca,U,R=f,
+P,Q=0,Aa=a.length;Q<Aa;Q++){L=a[Q];var Pa=L.$$start,$=L.$$end;Pa&&(w=va(d,Pa,$));U=u;if(v>L.priority)break;if(U=L.scope)L.templateUrl||(J(U)?(Oa("new/isolated scope",I||N,L,w),I=L):Oa("new/isolated scope",I,L,w)),N=N||L;ca=L.name;!L.templateUrl&&L.controller&&(U=L.controller,H=H||{},Oa("'"+ca+"' controller",H[ca],L,w),H[ca]=L);if(U=L.transclude)ha=!0,L.$$tlb||(Oa("transclusion",wa,L,w),wa=L),"element"==U?(B=!0,v=L.priority,U=w,w=e.$$element=C(X.createComment(" "+ca+": "+e[ca]+" ")),d=w[0],V(g,Za.call(U,
+0),d),R=F(U,f,v,l&&l.name,{nonTlbTranscludeDirective:wa})):(U=C(Vb(d)).contents(),w.empty(),R=F(U,f));if(L.template)if(fb=!0,Oa("template",ja,L,w),ja=L,U=G(L.template)?L.template(w,e):L.template,U=Tc(U),L.replace){l=L;U=Tb.test(U)?Uc(Xb(L.templateNamespace,T(U))):[];d=U[0];if(1!=U.length||d.nodeType!==na)throw ia("tplrt",ca,"");V(g,w,d);Aa={$attr:{}};U=W(d,[],Aa);var of=a.splice(Q+1,a.length-(Q+1));I&&z(U);a=a.concat(U).concat(of);Rc(e,Aa);Aa=a.length}else w.html(U);if(L.templateUrl)fb=!0,Oa("template",
+ja,L,w),ja=L,L.replace&&(l=L),A=M(a.splice(Q,a.length-Q),w,e,g,ha&&R,k,p,{controllerDirectives:H,newIsolateScopeDirective:I,templateDirective:ja,nonTlbTranscludeDirective:wa}),Aa=a.length;else if(L.compile)try{P=L.compile(w,e,R),G(P)?r(null,P,Pa,$):P&&r(P.pre,P.post,Pa,$)}catch(aa){c(aa,ua(w))}L.terminal&&(A.terminal=!0,v=Math.max(v,L.priority))}A.scope=N&&!0===N.scope;A.transcludeOnThisElement=ha;A.elementTranscludeOnThisElement=B;A.templateOnThisElement=fb;A.transclude=R;n.hasElementTranscludeDirective=
+B;return A}function z(a){for(var b=0,c=a.length;b<c;b++)a[b]=Pb(a[b],{$$isolateScope:!0})}function ha(b,e,f,g,h,l,k){if(e===h)return null;h=null;if(d.hasOwnProperty(e)){var q;e=a.get(e+"Directive");for(var n=0,r=e.length;n<r;n++)try{q=e[n],(g===u||g>q.priority)&&-1!=q.restrict.indexOf(f)&&(l&&(q=Pb(q,{$$start:l,$$end:k})),b.push(q),h=q)}catch(D){c(D)}}return h}function fb(b){if(d.hasOwnProperty(b))for(var c=a.get(b+"Directive"),e=0,f=c.length;e<f;e++)if(b=c[e],b.multiElement)return!0;return!1}function Rc(a,
+b){var c=b.$attr,d=a.$attr,e=a.$$element;s(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});s(b,function(b,f){"class"==f?(N(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function M(a,b,c,d,e,f,g,h){var l=[],k,q,p=b[0],n=a.shift(),D=Pb(n,{templateUrl:null,transclude:null,replace:null,$$originalDirective:n}),
+S=G(n.templateUrl)?n.templateUrl(b,c):n.templateUrl,t=n.templateNamespace;b.empty();r(H.getTrustedResourceUrl(S)).then(function(r){var A,v;r=Tc(r);if(n.replace){r=Tb.test(r)?Uc(Xb(t,T(r))):[];A=r[0];if(1!=r.length||A.nodeType!==na)throw ia("tplrt",n.name,S);r={$attr:{}};V(d,b,A);var H=W(A,[],r);J(n.scope)&&z(H);a=H.concat(a);Rc(c,r)}else A=p,b.html(r);a.unshift(D);k=y(a,A,c,e,b,n,f,g,h);s(d,function(a,c){a==A&&(d[c]=b[0])});for(q=ba(b[0].childNodes,e);l.length;){r=l.shift();v=l.shift();var F=l.shift(),
+K=l.shift(),H=b[0];if(!r.$$destroyed){if(v!==p){var O=v.className;h.hasElementTranscludeDirective&&n.replace||(H=Vb(A));V(F,C(v),H);N(C(H),O)}v=k.transcludeOnThisElement?I(r,k.transclude,K):K;k(q,r,H,d,v)}}l=null});return function(a,b,c,d,e){a=e;b.$$destroyed||(l?l.push(b,c,d,a):(k.transcludeOnThisElement&&(a=I(b,k.transclude,e)),k(q,b,c,d,a)))}}function ca(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function Oa(a,b,c,d){if(b)throw ia("multidir",
+b.name,c.name,a,ua(d));}function P(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){a=a.parent();var b=!!a.length;b&&F.$$addBindingClass(a);return function(a,c){var e=c.parent();b||F.$$addBindingClass(e);F.$$addBindingInfo(e,d.expressions);a.$watch(d,function(a){c[0].nodeValue=a})}}})}function Xb(a,b){a=R(a||"html");switch(a){case "svg":case "math":var c=X.createElement("div");c.innerHTML="<"+a+">"+b+"</"+a+">";return c.childNodes[0].childNodes;default:return b}}function Q(a,b){if("srcdoc"==
+b)return H.HTML;var c=ta(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return H.RESOURCE_URL}function Aa(a,c,d,e,f){var h=Q(a,e);f=g[e]||f;var k=b(d,!0,h,f);if(k){if("multiple"===e&&"select"===ta(a))throw ia("selmulti",ua(a));c.push({priority:100,compile:function(){return{pre:function(a,c,g){c=g.$$observers||(g.$$observers={});if(l.test(e))throw ia("nodomevents");var n=g[e];n!==d&&(k=n&&b(n,!0,h,f),d=n);k&&(g[e]=k(a),(c[e]||(c[e]=[])).$$inter=!0,(g.$$observers&&g.$$observers[e].$$scope||
+a).$watch(k,function(a,b){"class"===e&&a!=b?g.$updateClass(a,b):g.$set(e,a)}))}}}})}}function V(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g<h;g++)if(a[g]==d){a[g++]=c;h=g+e-1;for(var l=a.length;g<l;g++,h++)h<l?a[g]=a[h]:delete a[g];a.length-=e-1;a.context===d&&(a.context=c);break}f&&f.replaceChild(c,d);a=X.createDocumentFragment();a.appendChild(d);C(c).data(C(d).data());ra?(Rb=!0,ra.cleanData([d])):delete C.cache[d[C.expando]];d=1;for(e=b.length;d<e;d++)f=b[d],C(f).remove(),
+a.appendChild(f),delete b[d];b[0]=c;b.length=1}function Y(a,b){return w(function(){return a.apply(null,arguments)},a,b)}function Z(a,b,d,e,f,g){try{a(b,d,e,f,g)}catch(h){c(h,ua(d))}}var Yb=function(a,b){if(b){var c=Object.keys(b),d,e,f;d=0;for(e=c.length;d<e;d++)f=c[d],this[f]=b[f]}else this.$attr={};this.$$element=a};Yb.prototype={$normalize:ya,$addClass:function(a){a&&0<a.length&&v.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&v.removeClass(this.$$element,a)},$updateClass:function(a,
+b){var c=Vc(a,b);c&&c.length&&v.addClass(this.$$element,c);(c=Vc(b,a))&&c.length&&v.removeClass(this.$$element,c)},$set:function(a,b,d,e){var f=this.$$element[0],g=Mc(f,a),h=kf(f,a),f=a;g?(this.$$element.prop(a,b),e=g):h&&(this[h]=b,f=h);this[a]=b;e?this.$attr[a]=e:(e=this.$attr[a])||(this.$attr[a]=e=uc(a,"-"));g=ta(this.$$element);if("a"===g&&"href"===a||"img"===g&&"src"===a)this[a]=b=A(b,"src"===a);else if("img"===g&&"srcset"===a){for(var g="",h=T(b),l=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,l=/\s/.test(h)?
+l:/(,)/,h=h.split(l),l=Math.floor(h.length/2),k=0;k<l;k++)var q=2*k,g=g+A(T(h[q]),!0),g=g+(" "+T(h[q+1]));h=T(h[2*k]).split(/\s/);g+=A(T(h[0]),!0);2===h.length&&(g+=" "+T(h[1]));this[a]=b=g}!1!==d&&(null===b||b===u?this.$$element.removeAttr(e):this.$$element.attr(e,b));(a=this.$$observers)&&s(a[f],function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers=fa()),e=d[a]||(d[a]=[]);e.push(b);n.$evalAsync(function(){!e.$$inter&&c.hasOwnProperty(a)&&b(c[a])});
+return function(){Xa(e,b)}}};var U=b.startSymbol(),ja=b.endSymbol(),Tc="{{"==U||"}}"==ja?oa:function(a){return a.replace(/\{\{/g,U).replace(/}}/g,ja)},Pa=/^ngAttr[A-Z]/;F.$$addBindingInfo=k?function(a,b){var c=a.data("$binding")||[];E(b)?c=c.concat(b):c.push(b);a.data("$binding",c)}:B;F.$$addBindingClass=k?function(a){N(a,"ng-binding")}:B;F.$$addScopeInfo=k?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateScope":"$scope",b)}:B;F.$$addScopeClass=k?function(a,b){N(a,b?"ng-isolate-scope":
+"ng-scope")}:B;return F}]}function ya(b){return db(b.replace(Sc,""))}function Vc(b,a){var c="",d=b.split(/\s+/),e=a.split(/\s+/),f=0;a:for(;f<d.length;f++){for(var g=d[f],h=0;h<e.length;h++)if(g==e[h])continue a;c+=(0<c.length?" ":"")+g}return c}function Uc(b){b=C(b);var a=b.length;if(1>=a)return b;for(;a--;)8===b[a].nodeType&&pf.call(b,a,1);return b}function Fe(){var b={},a=!1,c=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(a,c){Ma(a,"controller");J(a)?w(b,a):b[a]=c};this.allowGlobals=function(){a=
+!0};this.$get=["$injector","$window",function(d,e){function f(a,b,c,d){if(!a||!J(a.$scope))throw M("$controller")("noscp",d,b);a.$scope[b]=c}return function(g,h,l,k){var m,p,q;l=!0===l;k&&x(k)&&(q=k);if(x(g)){k=g.match(c);if(!k)throw qf("ctrlfmt",g);p=k[1];q=q||k[3];g=b.hasOwnProperty(p)?b[p]:wc(h.$scope,p,!0)||(a?wc(e,p,!0):u);tb(g,p,!0)}if(l)return l=(E(g)?g[g.length-1]:g).prototype,m=Object.create(l||null),q&&f(h,q,m,p||g.name),w(function(){d.invoke(g,m,h,p);return m},{instance:m,identifier:q});
+m=d.instantiate(g,h,p);q&&f(h,q,m,p||g.name);return m}}]}function Ge(){this.$get=["$window",function(b){return C(b.document)}]}function He(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function Zb(b,a){if(x(b)){var c=b.replace(rf,"").trim();if(c){var d=a("Content-Type");(d=d&&0===d.indexOf(Wc))||(d=(d=c.match(sf))&&tf[d[0]].test(c));d&&(b=pc(c))}}return b}function Xc(b){var a=fa(),c,d,e;if(!b)return a;s(b.split("\n"),function(b){e=b.indexOf(":");c=R(T(b.substr(0,
+e)));d=T(b.substr(e+1));c&&(a[c]=a[c]?a[c]+", "+d:d)});return a}function Yc(b){var a=J(b)?b:u;return function(c){a||(a=Xc(b));return c?(c=a[R(c)],void 0===c&&(c=null),c):a}}function Zc(b,a,c,d){if(G(d))return d(b,a,c);s(d,function(d){b=d(b,a,c)});return b}function Ke(){var b=this.defaults={transformResponse:[Zb],transformRequest:[function(a){return J(a)&&"[object File]"!==Da.call(a)&&"[object Blob]"!==Da.call(a)&&"[object FormData]"!==Da.call(a)?$a(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},
+post:qa($b),put:qa($b),patch:qa($b)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},a=!1;this.useApplyAsync=function(b){return y(b)?(a=!!b,this):a};var c=this.interceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(d,e,f,g,h,l){function k(a){function c(a){var b=w({},a);b.data=a.data?Zc(a.data,a.headers,a.status,e.transformResponse):a.data;a=a.status;return 200<=a&&300>a?b:h.reject(b)}function d(a){var b,c={};s(a,function(a,d){G(a)?(b=
+a(),null!=b&&(c[d]=b)):c[d]=a});return c}if(!aa.isObject(a))throw M("$http")("badreq",a);var e=w({method:"get",transformRequest:b.transformRequest,transformResponse:b.transformResponse},a);e.headers=function(a){var c=b.headers,e=w({},a.headers),f,g,c=w({},c.common,c[R(a.method)]);a:for(f in c){a=R(f);for(g in e)if(R(g)===a)continue a;e[f]=c[f]}return d(e)}(a);e.method=vb(e.method);var f=[function(a){var d=a.headers,e=Zc(a.data,Yc(d),u,a.transformRequest);z(e)&&s(d,function(a,b){"content-type"===R(b)&&
+delete d[b]});z(a.withCredentials)&&!z(b.withCredentials)&&(a.withCredentials=b.withCredentials);return m(a,e).then(c,c)},u],g=h.when(e);for(s(t,function(a){(a.request||a.requestError)&&f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var l=f.shift(),g=g.then(a,l)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,e)});return g};g.error=function(a){g.then(null,function(b){a(b.data,b.status,b.headers,e)});
+return g};return g}function m(c,f){function l(b,c,d,e){function f(){n(c,b,d,e)}N&&(200<=b&&300>b?N.put(I,[b,c,Xc(d),e]):N.remove(I));a?g.$applyAsync(f):(f(),g.$$phase||g.$apply())}function n(a,b,d,e){b=Math.max(b,0);(200<=b&&300>b?v.resolve:v.reject)({data:a,status:b,headers:Yc(d),config:c,statusText:e})}function m(a){n(a.data,a.status,qa(a.headers()),a.statusText)}function t(){var a=k.pendingRequests.indexOf(c);-1!==a&&k.pendingRequests.splice(a,1)}var v=h.defer(),A=v.promise,N,F,s=c.headers,I=p(c.url,
+c.params);k.pendingRequests.push(c);A.then(t,t);!c.cache&&!b.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(N=J(c.cache)?c.cache:J(b.cache)?b.cache:q);N&&(F=N.get(I),y(F)?F&&G(F.then)?F.then(m,m):E(F)?n(F[1],F[0],qa(F[2]),F[3]):n(F,200,{},"OK"):N.put(I,A));z(F)&&((F=$c(c.url)?e.cookies()[c.xsrfCookieName||b.xsrfCookieName]:u)&&(s[c.xsrfHeaderName||b.xsrfHeaderName]=F),d(c.method,I,f,l,s,c.timeout,c.withCredentials,c.responseType));return A}function p(a,b){if(!b)return a;var c=[];Ed(b,
+function(a,b){null===a||z(a)||(E(a)||(a=[a]),s(a,function(a){J(a)&&(a=pa(a)?a.toISOString():$a(a));c.push(Fa(b)+"="+Fa(a))}))});0<c.length&&(a+=(-1==a.indexOf("?")?"?":"&")+c.join("&"));return a}var q=f("$http"),t=[];s(c,function(a){t.unshift(x(a)?l.get(a):l.invoke(a))});k.pendingRequests=[];(function(a){s(arguments,function(a){k[a]=function(b,c){return k(w(c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){s(arguments,function(a){k[a]=function(b,c,d){return k(w(d||{},{method:a,
+url:b,data:c}))}})})("post","put","patch");k.defaults=b;return k}]}function uf(){return new P.XMLHttpRequest}function Le(){this.$get=["$browser","$window","$document",function(b,a,c){return vf(b,uf,b.defer,a.angular.callbacks,c[0])}]}function vf(b,a,c,d,e){function f(a,b,c){var f=e.createElement("script"),m=null;f.type="text/javascript";f.src=a;f.async=!0;m=function(a){f.removeEventListener("load",m,!1);f.removeEventListener("error",m,!1);e.body.removeChild(f);f=null;var g=-1,t="unknown";a&&("load"!==
+a.type||d[b].called||(a={type:"error"}),t=a.type,g="error"===a.type?404:200);c&&c(g,t)};f.addEventListener("load",m,!1);f.addEventListener("error",m,!1);e.body.appendChild(f);return m}return function(e,h,l,k,m,p,q,t){function r(){n&&n();D&&D.abort()}function S(a,d,e,f,g){v!==u&&c.cancel(v);n=D=null;a(d,e,f,g);b.$$completeOutstandingRequest(B)}b.$$incOutstandingRequestCount();h=h||b.url();if("jsonp"==R(e)){var K="_"+(d.counter++).toString(36);d[K]=function(a){d[K].data=a;d[K].called=!0};var n=f(h.replace("JSON_CALLBACK",
+"angular.callbacks."+K),K,function(a,b){S(k,a,d[K].data,"",b);d[K]=B})}else{var D=a();D.open(e,h,!0);s(m,function(a,b){y(a)&&D.setRequestHeader(b,a)});D.onload=function(){var a=D.statusText||"",b="response"in D?D.response:D.responseText,c=1223===D.status?204:D.status;0===c&&(c=b?200:"file"==Ba(h).protocol?404:0);S(k,c,b,D.getAllResponseHeaders(),a)};e=function(){S(k,-1,null,null,"")};D.onerror=e;D.onabort=e;q&&(D.withCredentials=!0);if(t)try{D.responseType=t}catch(H){if("json"!==t)throw H;}D.send(l||
+null)}if(0<p)var v=c(r,p);else p&&G(p.then)&&p.then(r)}}function Ie(){var b="{{",a="}}";this.startSymbol=function(a){return a?(b=a,this):b};this.endSymbol=function(b){return b?(a=b,this):a};this.$get=["$parse","$exceptionHandler","$sce",function(c,d,e){function f(a){return"\\\\\\"+a}function g(f,g,t,r){function S(c){return c.replace(k,b).replace(m,a)}function K(a){try{var b=a;a=t?e.getTrusted(t,b):e.valueOf(b);var c;if(r&&!y(a))c=a;else if(null==a)c="";else{switch(typeof a){case "string":break;case "number":a=
+""+a;break;default:a=$a(a)}c=a}return c}catch(g){c=ac("interr",f,g.toString()),d(c)}}r=!!r;for(var n,D,H=0,v=[],A=[],N=f.length,F=[],s=[];H<N;)if(-1!=(n=f.indexOf(b,H))&&-1!=(D=f.indexOf(a,n+h)))H!==n&&F.push(S(f.substring(H,n))),H=f.substring(n+h,D),v.push(H),A.push(c(H,K)),H=D+l,s.push(F.length),F.push("");else{H!==N&&F.push(S(f.substring(H)));break}if(t&&1<F.length)throw ac("noconcat",f);if(!g||v.length){var I=function(a){for(var b=0,c=v.length;b<c;b++){if(r&&z(a[b]))return;F[s[b]]=a[b]}return F.join("")};
+return w(function(a){var b=0,c=v.length,e=Array(c);try{for(;b<c;b++)e[b]=A[b](a);return I(e)}catch(g){a=ac("interr",f,g.toString()),d(a)}},{exp:f,expressions:v,$$watchDelegate:function(a,b,c){var d;return a.$watchGroup(A,function(c,e){var f=I(c);G(b)&&b.call(this,f,c!==e?d:f,a);d=f},c)}})}}var h=b.length,l=a.length,k=new RegExp(b.replace(/./g,f),"g"),m=new RegExp(a.replace(/./g,f),"g");g.startSymbol=function(){return b};g.endSymbol=function(){return a};return g}]}function Je(){this.$get=["$rootScope",
+"$window","$q","$$q",function(b,a,c,d){function e(e,h,l,k){var m=a.setInterval,p=a.clearInterval,q=0,t=y(k)&&!k,r=(t?d:c).defer(),S=r.promise;l=y(l)?l:0;S.then(null,null,e);S.$$intervalId=m(function(){r.notify(q++);0<l&&q>=l&&(r.resolve(q),p(S.$$intervalId),delete f[S.$$intervalId]);t||b.$apply()},h);f[S.$$intervalId]=r;return S}var f={};e.cancel=function(b){return b&&b.$$intervalId in f?(f[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete f[b.$$intervalId],!0):!1};return e}]}
+function Rd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),
+DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function bc(b){b=b.split("/");for(var a=b.length;a--;)b[a]=rb(b[a]);return b.join("/")}function ad(b,a){var c=Ba(b);a.$$protocol=
+c.protocol;a.$$host=c.hostname;a.$$port=$(c.port)||wf[c.protocol]||null}function bd(b,a){var c="/"!==b.charAt(0);c&&(b="/"+b);var d=Ba(b);a.$$path=decodeURIComponent(c&&"/"===d.pathname.charAt(0)?d.pathname.substring(1):d.pathname);a.$$search=rc(d.search);a.$$hash=decodeURIComponent(d.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function za(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Ha(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Gb(b){return b.replace(/(#.+)|#$/,
+"$1")}function cc(b){return b.substr(0,Ha(b).lastIndexOf("/")+1)}function dc(b,a){this.$$html5=!0;a=a||"";var c=cc(b);ad(b,this);this.$$parse=function(a){var b=za(c,a);if(!x(b))throw Hb("ipthprfx",a,c);bd(b,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Qb(this.$$search),b=this.$$hash?"#"+rb(this.$$hash):"";this.$$url=bc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),
+!0;var f,g;(f=za(b,d))!==u?(g=f,g=(f=za(a,f))!==u?c+(za("/",f)||f):b+g):(f=za(c,d))!==u?g=c+f:c==d+"/"&&(g=c);g&&this.$$parse(g);return!!g}}function ec(b,a){var c=cc(b);ad(b,this);this.$$parse=function(d){d=za(b,d)||za(c,d);var e;"#"===d.charAt(0)?(e=za(a,d),z(e)&&(e=d)):e=this.$$html5?d:"";bd(e,this);d=this.$$path;var f=/^\/[A-Z]:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=Qb(this.$$search),e=this.$$hash?
+"#"+rb(this.$$hash):"";this.$$url=bc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$parseLinkUrl=function(a,c){return Ha(b)==Ha(a)?(this.$$parse(a),!0):!1}}function cd(b,a){this.$$html5=!0;ec.apply(this,arguments);var c=cc(b);this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;b==Ha(d)?f=d:(g=za(c,d))?f=b+a+g:c===d+"/"&&(f=c);f&&this.$$parse(f);return!!f};this.$$compose=function(){var c=Qb(this.$$search),e=this.$$hash?"#"+rb(this.$$hash):
+"";this.$$url=bc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+a+this.$$url}}function Ib(b){return function(){return this[b]}}function dd(b,a){return function(c){if(z(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Me(){var b="",a={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(a){return y(a)?(b=a,this):b};this.html5Mode=function(b){return Wa(b)?(a.enabled=b,this):J(b)?(Wa(b.enabled)&&(a.enabled=b.enabled),Wa(b.requireBase)&&(a.requireBase=b.requireBase),Wa(b.rewriteLinks)&&
+(a.rewriteLinks=b.rewriteLinks),this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(c,d,e,f,g){function h(a,b,c){var e=k.url(),f=k.$$state;try{d.url(a,b,c),k.$$state=d.state()}catch(g){throw k.url(e),k.$$state=f,g;}}function l(a,b){c.$broadcast("$locationChangeSuccess",k.absUrl(),a,k.$$state,b)}var k,m;m=d.baseHref();var p=d.url(),q;if(a.enabled){if(!m&&a.requireBase)throw Hb("nobase");q=p.substring(0,p.indexOf("/",p.indexOf("//")+2))+(m||"/");m=e.history?dc:cd}else q=
+Ha(p),m=ec;k=new m(q,"#"+b);k.$$parseLinkUrl(p,p);k.$$state=d.state();var t=/^\s*(javascript|mailto):/i;f.on("click",function(b){if(a.rewriteLinks&&!b.ctrlKey&&!b.metaKey&&!b.shiftKey&&2!=b.which&&2!=b.button){for(var e=C(b.target);"a"!==ta(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),l=e.attr("href")||e.attr("xlink:href");J(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=Ba(h.animVal).href);t.test(h)||!h||e.attr("target")||b.isDefaultPrevented()||!k.$$parseLinkUrl(h,
+l)||(b.preventDefault(),k.absUrl()!=d.url()&&(c.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});Gb(k.absUrl())!=Gb(p)&&d.url(k.absUrl(),!0);var r=!0;d.onUrlChange(function(a,b){c.$evalAsync(function(){var d=k.absUrl(),e=k.$$state,f;k.$$parse(a);k.$$state=b;f=c.$broadcast("$locationChangeStart",a,d,b,e).defaultPrevented;k.absUrl()===a&&(f?(k.$$parse(d),k.$$state=e,h(d,!1,e)):(r=!1,l(d,e)))});c.$$phase||c.$digest()});c.$watch(function(){var a=Gb(d.url()),b=Gb(k.absUrl()),f=d.state(),g=k.$$replace,
+q=a!==b||k.$$html5&&e.history&&f!==k.$$state;if(r||q)r=!1,c.$evalAsync(function(){var b=k.absUrl(),d=c.$broadcast("$locationChangeStart",b,a,k.$$state,f).defaultPrevented;k.absUrl()===b&&(d?(k.$$parse(a),k.$$state=f):(q&&h(b,g,f===k.$$state?null:k.$$state),l(a,f)))});k.$$replace=!1});return k}]}function Ne(){var b=!0,a=this;this.debugEnabled=function(a){return y(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?
+"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||B;a=!1;try{a=!!e.apply}catch(l){}return a?function(){var a=[];s(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function sa(b,a){if("__defineGetter__"===
+b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"===b)throw ka("isecfld",a);return b}function la(b,a){if(b){if(b.constructor===b)throw ka("isecfn",a);if(b.window===b)throw ka("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw ka("isecdom",a);if(b===Object)throw ka("isecobj",a);}return b}function fc(b){return b.constant}function hb(b,a,c,d,e){la(b,e);la(a,e);c=c.split(".");for(var f,g=0;1<c.length;g++){f=sa(c.shift(),e);var h=0===g&&a&&a[f]||
+b[f];h||(h={},b[f]=h);b=la(h,e)}f=sa(c.shift(),e);la(b[f],e);return b[f]=d}function Qa(b){return"constructor"==b}function ed(b,a,c,d,e,f,g){sa(b,f);sa(a,f);sa(c,f);sa(d,f);sa(e,f);var h=function(a){return la(a,f)},l=g||Qa(b)?h:oa,k=g||Qa(a)?h:oa,m=g||Qa(c)?h:oa,p=g||Qa(d)?h:oa,q=g||Qa(e)?h:oa;return function(f,g){var h=g&&g.hasOwnProperty(b)?g:f;if(null==h)return h;h=l(h[b]);if(!a)return h;if(null==h)return u;h=k(h[a]);if(!c)return h;if(null==h)return u;h=m(h[c]);if(!d)return h;if(null==h)return u;
+h=p(h[d]);return e?null==h?u:h=q(h[e]):h}}function xf(b,a){return function(c,d){return b(c,d,la,a)}}function yf(b,a,c){var d=a.expensiveChecks,e=d?zf:Af,f=e[b];if(f)return f;var g=b.split("."),h=g.length;if(a.csp)f=6>h?ed(g[0],g[1],g[2],g[3],g[4],c,d):function(a,b){var e=0,f;do f=ed(g[e++],g[e++],g[e++],g[e++],g[e++],c,d)(a,b),b=u,a=f;while(e<h);return f};else{var l="";d&&(l+="s = eso(s, fe);\nl = eso(l, fe);\n");var k=d;s(g,function(a,b){sa(a,c);var e=(b?"s":'((l&&l.hasOwnProperty("'+a+'"))?l:s)')+
+"."+a;if(d||Qa(a))e="eso("+e+", fe)",k=!0;l+="if(s == null) return undefined;\ns="+e+";\n"});l+="return s;";a=new Function("s","l","eso","fe",l);a.toString=da(l);k&&(a=xf(a,c));f=a}f.sharedGetter=!0;f.assign=function(a,c,d){return hb(a,d,b,c,b)};return e[b]=f}function gc(b){return G(b.valueOf)?b.valueOf():Bf.call(b)}function Oe(){var b=fa(),a=fa();this.$get=["$filter","$sniffer",function(c,d){function e(a){var b=a;a.sharedGetter&&(b=function(b,c){return a(b,c)},b.literal=a.literal,b.constant=a.constant,
+b.assign=a.assign);return b}function f(a,b){for(var c=0,d=a.length;c<d;c++){var e=a[c];e.constant||(e.inputs?f(e.inputs,b):-1===b.indexOf(e)&&b.push(e))}return b}function g(a,b){return null==a||null==b?a===b:"object"===typeof a&&(a=gc(a),"object"===typeof a)?!1:a===b||a!==a&&b!==b}function h(a,b,c,d){var e=d.$$inputs||(d.$$inputs=f(d.inputs,[])),h;if(1===e.length){var l=g,e=e[0];return a.$watch(function(a){var b=e(a);g(b,l)||(h=d(a),l=b&&gc(b));return h},b,c)}for(var k=[],q=0,p=e.length;q<p;q++)k[q]=
+g;return a.$watch(function(a){for(var b=!1,c=0,f=e.length;c<f;c++){var l=e[c](a);if(b||(b=!g(l,k[c])))k[c]=l&&gc(l)}b&&(h=d(a));return h},b,c)}function l(a,b,c,d){var e,f;return e=a.$watch(function(a){return d(a)},function(a,c,d){f=a;G(b)&&b.apply(this,arguments);y(a)&&d.$$postDigest(function(){y(f)&&e()})},c)}function k(a,b,c,d){function e(a){var b=!0;s(a,function(a){y(a)||(b=!1)});return b}var f,g;return f=a.$watch(function(a){return d(a)},function(a,c,d){g=a;G(b)&&b.call(this,a,c,d);e(a)&&d.$$postDigest(function(){e(g)&&
+f()})},c)}function m(a,b,c,d){var e;return e=a.$watch(function(a){return d(a)},function(a,c,d){G(b)&&b.apply(this,arguments);e()},c)}function p(a,b){if(!b)return a;var c=a.$$watchDelegate,c=c!==k&&c!==l?function(c,d){var e=a(c,d);return b(e,c,d)}:function(c,d){var e=a(c,d),f=b(e,c,d);return y(e)?f:e};a.$$watchDelegate&&a.$$watchDelegate!==h?c.$$watchDelegate=a.$$watchDelegate:b.$stateful||(c.$$watchDelegate=h,c.inputs=[a]);return c}var q={csp:d.csp,expensiveChecks:!1},t={csp:d.csp,expensiveChecks:!0};
+return function(d,f,g){var n,D,H;switch(typeof d){case "string":H=d=d.trim();var v=g?a:b;n=v[H];n||(":"===d.charAt(0)&&":"===d.charAt(1)&&(D=!0,d=d.substring(2)),g=g?t:q,n=new hc(g),n=(new ib(n,c,g)).parse(d),n.constant?n.$$watchDelegate=m:D?(n=e(n),n.$$watchDelegate=n.literal?k:l):n.inputs&&(n.$$watchDelegate=h),v[H]=n);return p(n,f);case "function":return p(d,f);default:return p(B,f)}}}]}function Qe(){this.$get=["$rootScope","$exceptionHandler",function(b,a){return fd(function(a){b.$evalAsync(a)},
+a)}]}function Re(){this.$get=["$browser","$exceptionHandler",function(b,a){return fd(function(a){b.defer(a)},a)}]}function fd(b,a){function c(a,b,c){function d(b){return function(c){e||(e=!0,b.call(a,c))}}var e=!1;return[d(b),d(c)]}function d(){this.$$state={status:0}}function e(a,b){return function(c){b.call(a,c)}}function f(c){!c.processScheduled&&c.pending&&(c.processScheduled=!0,b(function(){var b,d,e;e=c.pending;c.processScheduled=!1;c.pending=u;for(var f=0,g=e.length;f<g;++f){d=e[f][0];b=e[f][c.status];
+try{G(b)?d.resolve(b(c.value)):1===c.status?d.resolve(c.value):d.reject(c.value)}catch(h){d.reject(h),a(h)}}}))}function g(){this.promise=new d;this.resolve=e(this,this.resolve);this.reject=e(this,this.reject);this.notify=e(this,this.notify)}var h=M("$q",TypeError);d.prototype={then:function(a,b,c){var d=new g;this.$$state.pending=this.$$state.pending||[];this.$$state.pending.push([d,a,b,c]);0<this.$$state.status&&f(this.$$state);return d.promise},"catch":function(a){return this.then(null,a)},"finally":function(a,
+b){return this.then(function(b){return k(b,!0,a)},function(b){return k(b,!1,a)},b)}};g.prototype={resolve:function(a){this.promise.$$state.status||(a===this.promise?this.$$reject(h("qcycle",a)):this.$$resolve(a))},$$resolve:function(b){var d,e;e=c(this,this.$$resolve,this.$$reject);try{if(J(b)||G(b))d=b&&b.then;G(d)?(this.promise.$$state.status=-1,d.call(b,e[0],e[1],this.notify)):(this.promise.$$state.value=b,this.promise.$$state.status=1,f(this.promise.$$state))}catch(g){e[1](g),a(g)}},reject:function(a){this.promise.$$state.status||
+this.$$reject(a)},$$reject:function(a){this.promise.$$state.value=a;this.promise.$$state.status=2;f(this.promise.$$state)},notify:function(c){var d=this.promise.$$state.pending;0>=this.promise.$$state.status&&d&&d.length&&b(function(){for(var b,e,f=0,g=d.length;f<g;f++){e=d[f][0];b=d[f][3];try{e.notify(G(b)?b(c):c)}catch(h){a(h)}}})}};var l=function(a,b){var c=new g;b?c.resolve(a):c.reject(a);return c.promise},k=function(a,b,c){var d=null;try{G(c)&&(d=c())}catch(e){return l(e,!1)}return d&&G(d.then)?
+d.then(function(){return l(a,b)},function(a){return l(a,!1)}):l(a,b)},m=function(a,b,c,d){var e=new g;e.resolve(a);return e.promise.then(b,c,d)},p=function t(a){if(!G(a))throw h("norslvr",a);if(!(this instanceof t))return new t(a);var b=new g;a(function(a){b.resolve(a)},function(a){b.reject(a)});return b.promise};p.defer=function(){return new g};p.reject=function(a){var b=new g;b.reject(a);return b.promise};p.when=m;p.all=function(a){var b=new g,c=0,d=E(a)?[]:{};s(a,function(a,e){c++;m(a).then(function(a){d.hasOwnProperty(e)||
+(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise};return p}function $e(){this.$get=["$window","$timeout",function(b,a){var c=b.requestAnimationFrame||b.webkitRequestAnimationFrame,d=b.cancelAnimationFrame||b.webkitCancelAnimationFrame||b.webkitCancelRequestAnimationFrame,e=!!c,f=e?function(a){var b=c(a);return function(){d(b)}}:function(b){var c=a(b,16.66,!1);return function(){a.cancel(c)}};f.supported=e;return f}]}function Pe(){var b=
+10,a=M("$rootScope"),c=null,d=null;this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=["$injector","$exceptionHandler","$parse","$browser",function(e,f,g,h){function l(){this.$id=++ob;this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this.$root=this;this.$$destroyed=!1;this.$$listeners={};this.$$listenerCount={};this.$$isolateBindings=null}function k(b){if(r.$$phase)throw a("inprog",r.$$phase);r.$$phase=b}function m(a,
+b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function p(){}function q(){for(;n.length;)try{n.shift()()}catch(a){f(a)}d=null}function t(){null===d&&(d=h.defer(function(){r.$apply(q)}))}l.prototype={constructor:l,$new:function(a,b){function c(){d.$$destroyed=!0}var d;b=b||this;a?(d=new l,d.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=function(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null;this.$$listeners=
+{};this.$$listenerCount={};this.$id=++ob;this.$$ChildScope=null},this.$$ChildScope.prototype=this),d=new this.$$ChildScope);d.$parent=b;d.$$prevSibling=b.$$childTail;b.$$childHead?(b.$$childTail.$$nextSibling=d,b.$$childTail=d):b.$$childHead=b.$$childTail=d;(a||b!=this)&&d.$on("$destroy",c);return d},$watch:function(a,b,d){var e=g(a);if(e.$$watchDelegate)return e.$$watchDelegate(this,b,d,e);var f=this.$$watchers,h={fn:b,last:p,get:e,exp:a,eq:!!d};c=null;G(b)||(h.fn=B);f||(f=this.$$watchers=[]);f.unshift(h);
+return function(){Xa(f,h);c=null}},$watchGroup:function(a,b){function c(){h=!1;l?(l=!1,b(e,e,g)):b(e,d,g)}var d=Array(a.length),e=Array(a.length),f=[],g=this,h=!1,l=!0;if(!a.length){var k=!0;g.$evalAsync(function(){k&&b(e,e,g)});return function(){k=!1}}if(1===a.length)return this.$watch(a[0],function(a,c,f){e[0]=a;d[0]=c;b(e,a===c?e:d,f)});s(a,function(a,b){var l=g.$watch(a,function(a,f){e[b]=a;d[b]=f;h||(h=!0,g.$evalAsync(c))});f.push(l)});return function(){for(;f.length;)f.shift()()}},$watchCollection:function(a,
+b){function c(a){e=a;var b,d,g,h;if(!z(e)){if(J(e))if(Ta(e))for(f!==q&&(f=q,t=f.length=0,k++),a=e.length,t!==a&&(k++,f.length=t=a),b=0;b<a;b++)h=f[b],g=e[b],d=h!==h&&g!==g,d||h===g||(k++,f[b]=g);else{f!==m&&(f=m={},t=0,k++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,g=e[b],h=f[b],b in f?(d=h!==h&&g!==g,d||h===g||(k++,f[b]=g)):(t++,f[b]=g,k++));if(t>a)for(b in k++,f)e.hasOwnProperty(b)||(t--,delete f[b])}else f!==e&&(f=e,k++);return k}}c.$stateful=!0;var d=this,e,f,h,l=1<b.length,k=0,p=g(a,c),q=[],m=
+{},n=!0,t=0;return this.$watch(p,function(){n?(n=!1,b(e,e,d)):b(e,h,d);if(l)if(J(e))if(Ta(e)){h=Array(e.length);for(var a=0;a<e.length;a++)h[a]=e[a]}else for(a in h={},e)sc.call(e,a)&&(h[a]=e[a]);else h=e})},$digest:function(){var e,g,l,m,n,t,s=b,I,W=[],y,O;k("$digest");h.$$checkUrlChange();this===r&&null!==d&&(h.defer.cancel(d),q());c=null;do{t=!1;for(I=this;S.length;){try{O=S.shift(),O.scope.$eval(O.expression,O.locals)}catch(w){f(w)}c=null}a:do{if(m=I.$$watchers)for(n=m.length;n--;)try{if(e=m[n])if((g=
+e.get(I))!==(l=e.last)&&!(e.eq?ea(g,l):"number"===typeof g&&"number"===typeof l&&isNaN(g)&&isNaN(l)))t=!0,c=e,e.last=e.eq?Ea(g,null):g,e.fn(g,l===p?g:l,I),5>s&&(y=4-s,W[y]||(W[y]=[]),W[y].push({msg:G(e.exp)?"fn: "+(e.exp.name||e.exp.toString()):e.exp,newVal:g,oldVal:l}));else if(e===c){t=!1;break a}}catch(C){f(C)}if(!(m=I.$$childHead||I!==this&&I.$$nextSibling))for(;I!==this&&!(m=I.$$nextSibling);)I=I.$parent}while(I=m);if((t||S.length)&&!s--)throw r.$$phase=null,a("infdig",b,W);}while(t||S.length);
+for(r.$$phase=null;u.length;)try{u.shift()()}catch(B){f(B)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;if(this!==r){for(var b in this.$$listenerCount)m(this,this.$$listenerCount[b],b);a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);
+this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=B;this.$on=this.$watch=this.$watchGroup=function(){return B};this.$$listeners={};this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a,b){r.$$phase||S.length||h.defer(function(){S.length&&r.$digest()});S.push({scope:this,expression:a,locals:b})},$$postDigest:function(a){u.push(a)},$apply:function(a){try{return k("$apply"),
+this.$eval(a)}catch(b){f(b)}finally{r.$$phase=null;try{r.$digest()}catch(c){throw f(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&n.push(b);t()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,m(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,g=!1,h={name:a,targetScope:e,
+stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},l=Ya([h],arguments,1),k,m;do{d=e.$$listeners[a]||c;h.currentScope=e;k=0;for(m=d.length;k<m;k++)if(d[k])try{d[k].apply(null,l)}catch(p){f(p)}else d.splice(k,1),k--,m--;if(g)return h.currentScope=null,h;e=e.$parent}while(e);h.currentScope=null;return h},$broadcast:function(a,b){var c=this,d=this,e={name:a,targetScope:this,preventDefault:function(){e.defaultPrevented=!0},defaultPrevented:!1};if(!this.$$listenerCount[a])return e;
+for(var g=Ya([e],arguments,1),h,l;c=d;){e.currentScope=c;d=c.$$listeners[a]||[];h=0;for(l=d.length;h<l;h++)if(d[h])try{d[h].apply(null,g)}catch(k){f(k)}else d.splice(h,1),h--,l--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=c.$$nextSibling);)c=c.$parent}e.currentScope=null;return e}};var r=new l,S=r.$$asyncQueue=[],u=r.$$postDigestQueue=[],n=r.$$applyAsyncQueue=[];return r}]}function Sd(){var b=/^\s*(https?|ftp|mailto|tel|file):/,a=/^\s*((https?|ftp|file|blob):|data:image\/)/;
+this.aHrefSanitizationWhitelist=function(a){return y(a)?(b=a,this):b};this.imgSrcSanitizationWhitelist=function(b){return y(b)?(a=b,this):a};this.$get=function(){return function(c,d){var e=d?a:b,f;f=Ba(c).href;return""===f||f.match(e)?c:"unsafe:"+f}}}function Cf(b){if("self"===b)return b;if(x(b)){if(-1<b.indexOf("***"))throw Ca("iwcard",b);b=gd(b).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return new RegExp("^"+b+"$")}if(pb(b))return new RegExp("^"+b.source+"$");throw Ca("imatcher");}function hd(b){var a=
+[];y(b)&&s(b,function(b){a.push(Cf(b))});return a}function Te(){this.SCE_CONTEXTS=ma;var b=["self"],a=[];this.resourceUrlWhitelist=function(a){arguments.length&&(b=hd(a));return b};this.resourceUrlBlacklist=function(b){arguments.length&&(a=hd(b));return a};this.$get=["$injector",function(c){function d(a,b){return"self"===a?$c(b):!!a.exec(b.href)}function e(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};
+b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var f=function(a){throw Ca("unsafe");};c.has("$sanitize")&&(f=c.get("$sanitize"));var g=e(),h={};h[ma.HTML]=e(g);h[ma.CSS]=e(g);h[ma.URL]=e(g);h[ma.JS]=e(g);h[ma.RESOURCE_URL]=e(h[ma.URL]);return{trustAs:function(a,b){var c=h.hasOwnProperty(a)?h[a]:null;if(!c)throw Ca("icontext",a,b);if(null===b||b===u||""===b)return b;if("string"!==typeof b)throw Ca("itype",a);return new c(b)},getTrusted:function(c,e){if(null===
+e||e===u||""===e)return e;var g=h.hasOwnProperty(c)?h[c]:null;if(g&&e instanceof g)return e.$$unwrapTrustedValue();if(c===ma.RESOURCE_URL){var g=Ba(e.toString()),p,q,t=!1;p=0;for(q=b.length;p<q;p++)if(d(b[p],g)){t=!0;break}if(t)for(p=0,q=a.length;p<q;p++)if(d(a[p],g)){t=!1;break}if(t)return e;throw Ca("insecurl",e.toString());}if(c===ma.HTML)return f(e);throw Ca("unsafe");},valueOf:function(a){return a instanceof g?a.$$unwrapTrustedValue():a}}}]}function Se(){var b=!0;this.enabled=function(a){arguments.length&&
+(b=!!a);return b};this.$get=["$parse","$sceDelegate",function(a,c){if(b&&8>Ra)throw Ca("iequirks");var d=qa(ma);d.isEnabled=function(){return b};d.trustAs=c.trustAs;d.getTrusted=c.getTrusted;d.valueOf=c.valueOf;b||(d.trustAs=d.getTrusted=function(a,b){return b},d.valueOf=oa);d.parseAs=function(b,c){var e=a(c);return e.literal&&e.constant?e:a(c,function(a){return d.getTrusted(b,a)})};var e=d.parseAs,f=d.getTrusted,g=d.trustAs;s(ma,function(a,b){var c=R(b);d[db("parse_as_"+c)]=function(b){return e(a,
+b)};d[db("get_trusted_"+c)]=function(b){return f(a,b)};d[db("trust_as_"+c)]=function(b){return g(a,b)}});return d}]}function Ue(){this.$get=["$window","$document",function(b,a){var c={},d=$((/android (\d+)/.exec(R((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,l=f.body&&f.body.style,k=!1,m=!1;if(l){for(var p in l)if(k=h.exec(p)){g=k[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in l&&"webkit");
+k=!!("transition"in l||g+"Transition"in l);m=!!("animation"in l||g+"Animation"in l);!d||k&&m||(k=x(f.body.style.webkitTransition),m=x(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hasEvent:function(a){if("input"===a&&11>=Ra)return!1;if(z(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:bb(),vendorPrefix:g,transitions:k,animations:m,android:d}}]}function We(){this.$get=["$templateCache","$http","$q",function(b,a,c){function d(e,f){d.totalPendingRequests++;
+var g=a.defaults&&a.defaults.transformResponse;E(g)?g=g.filter(function(a){return a!==Zb}):g===Zb&&(g=null);return a.get(e,{cache:b,transformResponse:g}).finally(function(){d.totalPendingRequests--}).then(function(a){return a.data},function(a){if(!f)throw ia("tpload",e);return c.reject(a)})}d.totalPendingRequests=0;return d}]}function Xe(){this.$get=["$rootScope","$browser","$location",function(b,a,c){return{findBindings:function(a,b,c){a=a.getElementsByClassName("ng-binding");var g=[];s(a,function(a){var d=
+aa.element(a).data("$binding");d&&s(d,function(d){c?(new RegExp("(^|\\s)"+gd(b)+"(\\s|\\||$)")).test(d)&&g.push(a):-1!=d.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,c){for(var g=["ng-","data-ng-","ng\\:"],h=0;h<g.length;++h){var l=a.querySelectorAll("["+g[h]+"model"+(c?"=":"*=")+'"'+b+'"]');if(l.length)return l}},getLocation:function(){return c.url()},setLocation:function(a){a!==c.url()&&(c.url(a),b.$digest())},whenStable:function(b){a.notifyWhenNoOutstandingRequests(b)}}}]}function Ye(){this.$get=
+["$rootScope","$browser","$q","$$q","$exceptionHandler",function(b,a,c,d,e){function f(f,l,k){var m=y(k)&&!k,p=(m?d:c).defer(),q=p.promise;l=a.defer(function(){try{p.resolve(f())}catch(a){p.reject(a),e(a)}finally{delete g[q.$$timeoutId]}m||b.$apply()},l);q.$$timeoutId=l;g[l]=p;return q}var g={};f.cancel=function(b){return b&&b.$$timeoutId in g?(g[b.$$timeoutId].reject("canceled"),delete g[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):!1};return f}]}function Ba(b){Ra&&(Y.setAttribute("href",b),b=Y.href);
+Y.setAttribute("href",b);return{href:Y.href,protocol:Y.protocol?Y.protocol.replace(/:$/,""):"",host:Y.host,search:Y.search?Y.search.replace(/^\?/,""):"",hash:Y.hash?Y.hash.replace(/^#/,""):"",hostname:Y.hostname,port:Y.port,pathname:"/"===Y.pathname.charAt(0)?Y.pathname:"/"+Y.pathname}}function $c(b){b=x(b)?Ba(b):b;return b.protocol===id.protocol&&b.host===id.host}function Ze(){this.$get=da(P)}function Ec(b){function a(c,d){if(J(c)){var e={};s(c,function(b,c){e[c]=a(c,b)});return e}return b.factory(c+
+"Filter",d)}this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+"Filter")}}];a("currency",jd);a("date",kd);a("filter",Df);a("json",Ef);a("limitTo",Ff);a("lowercase",Gf);a("number",ld);a("orderBy",md);a("uppercase",Hf)}function Df(){return function(b,a,c){if(!E(b))return b;var d;switch(typeof a){case "function":break;case "boolean":case "number":case "string":d=!0;case "object":a=If(a,c,d);break;default:return b}return b.filter(a)}}function If(b,a,c){var d=J(b)&&"$"in
+b;!0===a?a=ea:G(a)||(a=function(a,b){if(J(a)||J(b))return!1;a=R(""+a);b=R(""+b);return-1!==a.indexOf(b)});return function(e){return d&&!J(e)?Ia(e,b.$,a,!1):Ia(e,b,a,c)}}function Ia(b,a,c,d,e){var f=typeof b,g=typeof a;if("string"===g&&"!"===a.charAt(0))return!Ia(b,a.substring(1),c,d);if(E(b))return b.some(function(b){return Ia(b,a,c,d)});switch(f){case "object":var h;if(d){for(h in b)if("$"!==h.charAt(0)&&Ia(b[h],a,c,!0))return!0;return e?!1:Ia(b,a,c,!1)}if("object"===g){for(h in a)if(e=a[h],!G(e)&&
+(f="$"===h,!Ia(f?b:b[h],e,c,f,f)))return!1;return!0}return c(b,a);case "function":return!1;default:return c(b,a)}}function jd(b){var a=b.NUMBER_FORMATS;return function(b,d,e){z(d)&&(d=a.CURRENCY_SYM);z(e)&&(e=a.PATTERNS[1].maxFrac);return null==b?b:nd(b,a.PATTERNS[1],a.GROUP_SEP,a.DECIMAL_SEP,e).replace(/\u00A4/g,d)}}function ld(b){var a=b.NUMBER_FORMATS;return function(b,d){return null==b?b:nd(b,a.PATTERNS[0],a.GROUP_SEP,a.DECIMAL_SEP,d)}}function nd(b,a,c,d,e){if(!isFinite(b)||J(b))return"";var f=
+0>b;b=Math.abs(b);var g=b+"",h="",l=[],k=!1;if(-1!==g.indexOf("e")){var m=g.match(/([\d\.]+)e(-?)(\d+)/);m&&"-"==m[2]&&m[3]>e+1?b=0:(h=g,k=!0)}if(k)0<e&&1>b&&(h=b.toFixed(e),b=parseFloat(h));else{g=(g.split(od)[1]||"").length;z(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);var g=(""+b).split(od),k=g[0],g=g[1]||"",p=0,q=a.lgSize,t=a.gSize;if(k.length>=q+t)for(p=k.length-q,m=0;m<p;m++)0===(p-m)%t&&0!==m&&(h+=c),h+=k.charAt(m);for(m=p;m<k.length;m++)0===
+(k.length-m)%q&&0!==m&&(h+=c),h+=k.charAt(m);for(;g.length<e;)g+="0";e&&"0"!==e&&(h+=d+g.substr(0,e))}0===b&&(f=!1);l.push(f?a.negPre:a.posPre,h,f?a.negSuf:a.posSuf);return l.join("")}function Jb(b,a,c){var d="";0>b&&(d="-",b=-b);for(b=""+b;b.length<a;)b="0"+b;c&&(b=b.substr(b.length-a));return d+b}function Z(b,a,c,d){c=c||0;return function(e){e=e["get"+b]();if(0<c||e>-c)e+=c;0===e&&-12==c&&(e=12);return Jb(e,a,d)}}function Kb(b,a){return function(c,d){var e=c["get"+b](),f=vb(a?"SHORT"+b:b);return d[f][e]}}
+function pd(b){var a=(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function qd(b){return function(a){var c=pd(a.getFullYear());a=+new Date(a.getFullYear(),a.getMonth(),a.getDate()+(4-a.getDay()))-+c;a=1+Math.round(a/6048E5);return Jb(a,b)}}function kd(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,l=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=$(b[9]+b[10]),g=$(b[9]+b[11]));h.call(a,$(b[1]),$(b[2])-1,$(b[3]));f=$(b[4]||0)-f;g=$(b[5]||
+0)-g;h=$(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));l.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e,f){var g="",h=[],l,k;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;x(c)&&(c=Jf.test(c)?$(c):a(c));V(c)&&(c=new Date(c));if(!pa(c))return c;for(;e;)(k=Kf.exec(e))?(h=Ya(h,k,1),e=h.pop()):(h.push(e),e=null);f&&"UTC"===f&&(c=new Date(c.getTime()),c.setMinutes(c.getMinutes()+c.getTimezoneOffset()));
+s(h,function(a){l=Lf[a];g+=l?l(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function Ef(){return function(b,a){z(a)&&(a=2);return $a(b,a)}}function Ff(){return function(b,a){V(b)&&(b=b.toString());return E(b)||x(b)?(a=Infinity===Math.abs(Number(a))?Number(a):$(a))?0<a?b.slice(0,a):b.slice(a):x(b)?"":[]:b}}function md(b){return function(a,c,d){function e(a,b){return b?function(b,c){return a(c,b)}:a}function f(a){switch(typeof a){case "number":case "boolean":case "string":return!0;
+default:return!1}}function g(a){return null===a?"null":"function"===typeof a.valueOf&&(a=a.valueOf(),f(a))||"function"===typeof a.toString&&(a=a.toString(),f(a))?a:""}function h(a,b){var c=typeof a,d=typeof b;c===d&&"object"===c&&(a=g(a),b=g(b));return c===d?("string"===c&&(a=a.toLowerCase(),b=b.toLowerCase()),a===b?0:a<b?-1:1):c<d?-1:1}if(!Ta(a))return a;c=E(c)?c:[c];0===c.length&&(c=["+"]);c=c.map(function(a){var c=!1,d=a||oa;if(x(a)){if("+"==a.charAt(0)||"-"==a.charAt(0))c="-"==a.charAt(0),a=a.substring(1);
+if(""===a)return e(h,c);d=b(a);if(d.constant){var f=d();return e(function(a,b){return h(a[f],b[f])},c)}}return e(function(a,b){return h(d(a),d(b))},c)});return Za.call(a).sort(e(function(a,b){for(var d=0;d<c.length;d++){var e=c[d](a,b);if(0!==e)return e}return 0},d))}}function Ja(b){G(b)&&(b={link:b});b.restrict=b.restrict||"AC";return da(b)}function rd(b,a,c,d,e){var f=this,g=[],h=f.$$parentForm=b.parent().controller("form")||Lb;f.$error={};f.$$success={};f.$pending=u;f.$name=e(a.name||a.ngForm||
+"")(c);f.$dirty=!1;f.$pristine=!0;f.$valid=!0;f.$invalid=!1;f.$submitted=!1;h.$addControl(f);f.$rollbackViewValue=function(){s(g,function(a){a.$rollbackViewValue()})};f.$commitViewValue=function(){s(g,function(a){a.$commitViewValue()})};f.$addControl=function(a){Ma(a.$name,"input");g.push(a);a.$name&&(f[a.$name]=a)};f.$$renameControl=function(a,b){var c=a.$name;f[c]===a&&delete f[c];f[b]=a;a.$name=b};f.$removeControl=function(a){a.$name&&f[a.$name]===a&&delete f[a.$name];s(f.$pending,function(b,c){f.$setValidity(c,
+null,a)});s(f.$error,function(b,c){f.$setValidity(c,null,a)});s(f.$$success,function(b,c){f.$setValidity(c,null,a)});Xa(g,a)};sd({ctrl:this,$element:b,set:function(a,b,c){var d=a[b];d?-1===d.indexOf(c)&&d.push(c):a[b]=[c]},unset:function(a,b,c){var d=a[b];d&&(Xa(d,c),0===d.length&&delete a[b])},parentForm:h,$animate:d});f.$setDirty=function(){d.removeClass(b,Sa);d.addClass(b,Mb);f.$dirty=!0;f.$pristine=!1;h.$setDirty()};f.$setPristine=function(){d.setClass(b,Sa,Mb+" ng-submitted");f.$dirty=!1;f.$pristine=
+!0;f.$submitted=!1;s(g,function(a){a.$setPristine()})};f.$setUntouched=function(){s(g,function(a){a.$setUntouched()})};f.$setSubmitted=function(){d.addClass(b,"ng-submitted");f.$submitted=!0;h.$setSubmitted()}}function ic(b){b.$formatters.push(function(a){return b.$isEmpty(a)?a:a.toString()})}function jb(b,a,c,d,e,f){var g=R(a[0].type);if(!e.android){var h=!1;a.on("compositionstart",function(a){h=!0});a.on("compositionend",function(){h=!1;l()})}var l=function(b){k&&(f.defer.cancel(k),k=null);if(!h){var e=
+a.val();b=b&&b.type;"password"===g||c.ngTrim&&"false"===c.ngTrim||(e=T(e));(d.$viewValue!==e||""===e&&d.$$hasNativeValidators)&&d.$setViewValue(e,b)}};if(e.hasEvent("input"))a.on("input",l);else{var k,m=function(a,b,c){k||(k=f.defer(function(){k=null;b&&b.value===c||l(a)}))};a.on("keydown",function(a){var b=a.keyCode;91===b||15<b&&19>b||37<=b&&40>=b||m(a,this,this.value)});if(e.hasEvent("paste"))a.on("paste cut",m)}a.on("change",l);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)}}
+function Nb(b,a){return function(c,d){var e,f;if(pa(c))return c;if(x(c)){'"'==c.charAt(0)&&'"'==c.charAt(c.length-1)&&(c=c.substring(1,c.length-1));if(Mf.test(c))return new Date(c);b.lastIndex=0;if(e=b.exec(c))return e.shift(),f=d?{yyyy:d.getFullYear(),MM:d.getMonth()+1,dd:d.getDate(),HH:d.getHours(),mm:d.getMinutes(),ss:d.getSeconds(),sss:d.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},s(e,function(b,c){c<a.length&&(f[a[c]]=+b)}),new Date(f.yyyy,f.MM-1,f.dd,f.HH,f.mm,f.ss||0,
+1E3*f.sss||0)}return NaN}}function kb(b,a,c,d){return function(e,f,g,h,l,k,m){function p(a){return a&&!(a.getTime&&a.getTime()!==a.getTime())}function q(a){return y(a)?pa(a)?a:c(a):u}td(e,f,g,h);jb(e,f,g,h,l,k);var t=h&&h.$options&&h.$options.timezone,r;h.$$parserName=b;h.$parsers.push(function(b){return h.$isEmpty(b)?null:a.test(b)?(b=c(b,r),"UTC"===t&&b.setMinutes(b.getMinutes()-b.getTimezoneOffset()),b):u});h.$formatters.push(function(a){if(a&&!pa(a))throw Ob("datefmt",a);if(p(a)){if((r=a)&&"UTC"===
+t){var b=6E4*r.getTimezoneOffset();r=new Date(r.getTime()+b)}return m("date")(a,d,t)}r=null;return""});if(y(g.min)||g.ngMin){var s;h.$validators.min=function(a){return!p(a)||z(s)||c(a)>=s};g.$observe("min",function(a){s=q(a);h.$validate()})}if(y(g.max)||g.ngMax){var K;h.$validators.max=function(a){return!p(a)||z(K)||c(a)<=K};g.$observe("max",function(a){K=q(a);h.$validate()})}}}function td(b,a,c,d){(d.$$hasNativeValidators=J(a[0].validity))&&d.$parsers.push(function(b){var c=a.prop("validity")||{};
+return c.badInput&&!c.typeMismatch?u:b})}function ud(b,a,c,d,e){if(y(d)){b=b(d);if(!b.constant)throw M("ngModel")("constexpr",c,d);return b(a)}return e}function jc(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;d<a.length;d++){for(var e=a[d],m=0;m<b.length;m++)if(e==b[m])continue a;c.push(e)}return c}function e(a){if(!E(a)){if(x(a))return a.split(" ");if(J(a)){var b=[];s(a,function(a,c){a&&(b=b.concat(c.split(" ")))});return b}}return a}return{restrict:"AC",link:function(f,
+g,h){function l(a,b){var c=g.data("$classCounts")||{},d=[];s(a,function(a){if(0<b||c[a])c[a]=(c[a]||0)+b,c[a]===+(0<b)&&d.push(a)});g.data("$classCounts",c);return d.join(" ")}function k(b){if(!0===a||f.$index%2===a){var k=e(b||[]);if(!m){var t=l(k,1);h.$addClass(t)}else if(!ea(b,m)){var r=e(m),t=d(k,r),k=d(r,k),t=l(t,1),k=l(k,-1);t&&t.length&&c.addClass(g,t);k&&k.length&&c.removeClass(g,k)}}m=qa(b)}var m;f.$watch(h[b],k,!0);h.$observe("class",function(a){k(f.$eval(h[b]))});"ngClass"!==b&&f.$watch("$index",
+function(c,d){var g=c&1;if(g!==(d&1)){var k=e(f.$eval(h[b]));g===a?(g=l(k,1),h.$addClass(g)):(g=l(k,-1),h.$removeClass(g))}})}}}]}function sd(b){function a(a,b){b&&!f[a]?(k.addClass(e,a),f[a]=!0):!b&&f[a]&&(k.removeClass(e,a),f[a]=!1)}function c(b,c){b=b?"-"+uc(b,"-"):"";a(lb+b,!0===c);a(vd+b,!1===c)}var d=b.ctrl,e=b.$element,f={},g=b.set,h=b.unset,l=b.parentForm,k=b.$animate;f[vd]=!(f[lb]=e.hasClass(lb));d.$setValidity=function(b,e,f){e===u?(d.$pending||(d.$pending={}),g(d.$pending,b,f)):(d.$pending&&
+h(d.$pending,b,f),wd(d.$pending)&&(d.$pending=u));Wa(e)?e?(h(d.$error,b,f),g(d.$$success,b,f)):(g(d.$error,b,f),h(d.$$success,b,f)):(h(d.$error,b,f),h(d.$$success,b,f));d.$pending?(a(xd,!0),d.$valid=d.$invalid=u,c("",null)):(a(xd,!1),d.$valid=wd(d.$error),d.$invalid=!d.$valid,c("",d.$valid));e=d.$pending&&d.$pending[b]?u:d.$error[b]?!1:d.$$success[b]?!0:null;c(b,e);l.$setValidity(b,e,d)}}function wd(b){if(b)for(var a in b)return!1;return!0}var Nf=/^\/(.+)\/([a-z]*)$/,R=function(b){return x(b)?b.toLowerCase():
+b},sc=Object.prototype.hasOwnProperty,vb=function(b){return x(b)?b.toUpperCase():b},Ra,C,ra,Za=[].slice,pf=[].splice,Of=[].push,Da=Object.prototype.toString,Ka=M("ng"),aa=P.angular||(P.angular={}),cb,ob=0;Ra=X.documentMode;B.$inject=[];oa.$inject=[];var E=Array.isArray,T=function(b){return x(b)?b.trim():b},gd=function(b){return b.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},bb=function(){if(y(bb.isActive_))return bb.isActive_;var b=!(!X.querySelector("[ng-csp]")&&!X.querySelector("[data-ng-csp]"));
+if(!b)try{new Function("")}catch(a){b=!0}return bb.isActive_=b},sb=["ng-","data-ng-","ng:","x-ng-"],Md=/[A-Z]/g,vc=!1,Rb,na=1,qb=3,Qd={full:"1.3.14",major:1,minor:3,dot:14,codeName:"instantaneous-browserification"};Q.expando="ng339";var Ab=Q.cache={},hf=1;Q._data=function(b){return this.cache[b[this.expando]]||{}};var cf=/([\:\-\_]+(.))/g,df=/^moz([A-Z])/,Pf={mouseleave:"mouseout",mouseenter:"mouseover"},Ub=M("jqLite"),gf=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Tb=/<|&#?\w+;/,ef=/<([\w:]+)/,ff=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+ga={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ga.optgroup=ga.option;ga.tbody=ga.tfoot=ga.colgroup=ga.caption=ga.thead;ga.th=ga.td;var La=Q.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===X.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),Q(P).on("load",a))},
+toString:function(){var b=[];s(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?C(this[b]):C(this[this.length+b])},length:0,push:Of,sort:[].sort,splice:[].splice},Fb={};s("multiple selected checked disabled readOnly required open".split(" "),function(b){Fb[R(b)]=b});var Nc={};s("input select option textarea button form details".split(" "),function(b){Nc[b]=!0});var Oc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};
+s({data:Wb,removeData:yb},function(b,a){Q[a]=b});s({data:Wb,inheritedData:Eb,scope:function(b){return C.data(b,"$scope")||Eb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return C.data(b,"$isolateScope")||C.data(b,"$isolateScopeNoTemplate")},controller:Jc,injector:function(b){return Eb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Bb,css:function(b,a,c){a=db(a);if(y(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=R(a);if(Fb[d])if(y(c))c?
+(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||B).specified?d:u;else if(y(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?u:b},prop:function(b,a,c){if(y(c))b[a]=c;else return b[a]},text:function(){function b(a,b){if(z(b)){var d=a.nodeType;return d===na||d===qb?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(z(a)){if(b.multiple&&"select"===ta(b)){var c=[];s(b.options,function(a){a.selected&&
+c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(z(a))return b.innerHTML;xb(b,!0);b.innerHTML=a},empty:Kc},function(b,a){Q.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==Kc&&(2==b.length&&b!==Bb&&b!==Jc?a:d)===u){if(J(a)){for(e=0;e<g;e++)if(b===Wb)b(this[e],a);else for(f in a)b(this[e],f,a[f]);return this}e=b.$dv;g=e===u?Math.min(g,1):g;for(f=0;f<g;f++){var h=b(this[f],a,d);e=e?e+h:h}return e}for(e=0;e<g;e++)b(this[e],a,d);return this}});
+s({removeData:yb,on:function a(c,d,e,f){if(y(f))throw Ub("onargs");if(Fc(c)){var g=zb(c,!0);f=g.events;var h=g.handle;h||(h=g.handle=lf(c,f));for(var g=0<=d.indexOf(" ")?d.split(" "):[d],l=g.length;l--;){d=g[l];var k=f[d];k||(f[d]=[],"mouseenter"===d||"mouseleave"===d?a(c,Pf[d],function(a){var c=a.relatedTarget;c&&(c===this||this.contains(c))||h(a,d)}):"$destroy"!==d&&c.addEventListener(d,h,!1),k=f[d]);k.push(e)}}},off:Ic,one:function(a,c,d){a=C(a);a.on(c,function f(){a.off(c,d);a.off(c,f)});a.on(c,
+d)},replaceWith:function(a,c){var d,e=a.parentNode;xb(a);s(new Q(c),function(c){d?e.insertBefore(c,d.nextSibling):e.replaceChild(c,a);d=c})},children:function(a){var c=[];s(a.childNodes,function(a){a.nodeType===na&&c.push(a)});return c},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,c){var d=a.nodeType;if(d===na||11===d){c=new Q(c);for(var d=0,e=c.length;d<e;d++)a.appendChild(c[d])}},prepend:function(a,c){if(a.nodeType===na){var d=a.firstChild;s(new Q(c),function(c){a.insertBefore(c,
+d)})}},wrap:function(a,c){c=C(c).eq(0).clone()[0];var d=a.parentNode;d&&d.replaceChild(c,a);c.appendChild(a)},remove:Lc,detach:function(a){Lc(a,!0)},after:function(a,c){var d=a,e=a.parentNode;c=new Q(c);for(var f=0,g=c.length;f<g;f++){var h=c[f];e.insertBefore(h,d.nextSibling);d=h}},addClass:Db,removeClass:Cb,toggleClass:function(a,c,d){c&&s(c.split(" "),function(c){var f=d;z(f)&&(f=!Bb(a,c));(f?Db:Cb)(a,c)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){return a.nextElementSibling},
+find:function(a,c){return a.getElementsByTagName?a.getElementsByTagName(c):[]},clone:Vb,triggerHandler:function(a,c,d){var e,f,g=c.type||c,h=zb(a);if(h=(h=h&&h.events)&&h[g])e={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===this.defaultPrevented},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return!0===this.immediatePropagationStopped},stopPropagation:B,type:g,target:a},c.type&&(e=w(e,
+c)),c=qa(h),f=d?[e].concat(d):[e],s(c,function(c){e.isImmediatePropagationStopped()||c.apply(a,f)})}},function(a,c){Q.prototype[c]=function(c,e,f){for(var g,h=0,l=this.length;h<l;h++)z(g)?(g=a(this[h],c,e,f),y(g)&&(g=C(g))):Hc(g,a(this[h],c,e,f));return y(g)?g:this};Q.prototype.bind=Q.prototype.on;Q.prototype.unbind=Q.prototype.off});eb.prototype={put:function(a,c){this[Na(a,this.nextUid)]=c},get:function(a){return this[Na(a,this.nextUid)]},remove:function(a){var c=this[a=Na(a,this.nextUid)];delete this[a];
+return c}};var Qc=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,Qf=/,/,Rf=/^\s*(_?)(\S+?)\1\s*$/,Pc=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ga=M("$injector");ab.$$annotate=function(a,c,d){var e;if("function"===typeof a){if(!(e=a.$inject)){e=[];if(a.length){if(c)throw x(d)&&d||(d=a.name||mf(a)),Ga("strictdi",d);c=a.toString().replace(Pc,"");c=c.match(Qc);s(c[1].split(Qf),function(a){a.replace(Rf,function(a,c,d){e.push(d)})})}a.$inject=e}}else E(a)?(c=a.length-1,tb(a[c],"fn"),e=a.slice(0,c)):tb(a,"fn",!0);return e};
+var Sf=M("$animate"),Ce=["$provide",function(a){this.$$selectors={};this.register=function(c,d){var e=c+"-animation";if(c&&"."!=c.charAt(0))throw Sf("notcsel",c);this.$$selectors[c.substr(1)]=e;a.factory(e,d)};this.classNameFilter=function(a){1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null);return this.$$classNameFilter};this.$get=["$$q","$$asyncCallback","$rootScope",function(a,d,e){function f(d){var f,g=a.defer();g.promise.$$cancelFn=function(){f&&f()};e.$$postDigest(function(){f=
+d(function(){g.resolve()})});return g.promise}function g(a,c){var d=[],e=[],f=fa();s((a.attr("class")||"").split(/\s+/),function(a){f[a]=!0});s(c,function(a,c){var g=f[c];!1===a&&g?e.push(c):!0!==a||g||d.push(c)});return 0<d.length+e.length&&[d.length?d:null,e.length?e:null]}function h(a,c,d){for(var e=0,f=c.length;e<f;++e)a[c[e]]=d}function l(){m||(m=a.defer(),d(function(){m.resolve();m=null}));return m.promise}function k(a,c){if(aa.isObject(c)){var d=w(c.from||{},c.to||{});a.css(d)}}var m;return{animate:function(a,
+c,d){k(a,{from:c,to:d});return l()},enter:function(a,c,d,e){k(a,e);d?d.after(a):c.prepend(a);return l()},leave:function(a,c){a.remove();return l()},move:function(a,c,d,e){return this.enter(a,c,d,e)},addClass:function(a,c,d){return this.setClass(a,c,[],d)},$$addClassImmediately:function(a,c,d){a=C(a);c=x(c)?c:E(c)?c.join(" "):"";s(a,function(a){Db(a,c)});k(a,d);return l()},removeClass:function(a,c,d){return this.setClass(a,[],c,d)},$$removeClassImmediately:function(a,c,d){a=C(a);c=x(c)?c:E(c)?c.join(" "):
+"";s(a,function(a){Cb(a,c)});k(a,d);return l()},setClass:function(a,c,d,e){var k=this,l=!1;a=C(a);var m=a.data("$$animateClasses");m?e&&m.options&&(m.options=aa.extend(m.options||{},e)):(m={classes:{},options:e},l=!0);e=m.classes;c=E(c)?c:c.split(" ");d=E(d)?d:d.split(" ");h(e,c,!0);h(e,d,!1);l&&(m.promise=f(function(c){var d=a.data("$$animateClasses");a.removeData("$$animateClasses");if(d){var e=g(a,d.classes);e&&k.$$setClassImmediately(a,e[0],e[1],d.options)}c()}),a.data("$$animateClasses",m));
+return m.promise},$$setClassImmediately:function(a,c,d,e){c&&this.$$addClassImmediately(a,c);d&&this.$$removeClassImmediately(a,d);k(a,e);return l()},enabled:B,cancel:B}}]}],ia=M("$compile");xc.$inject=["$provide","$$sanitizeUriProvider"];var Sc=/^((?:x|data)[\:\-_])/i,qf=M("$controller"),Wc="application/json",$b={"Content-Type":Wc+";charset=utf-8"},sf=/^\[|^\{(?!\{)/,tf={"[":/]$/,"{":/}$/},rf=/^\)\]\}',?\n/,ac=M("$interpolate"),Tf=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,wf={http:80,https:443,ftp:21},Hb=
+M("$location"),Uf={$$html5:!1,$$replace:!1,absUrl:Ib("$$absUrl"),url:function(a){if(z(a))return this.$$url;var c=Tf.exec(a);(c[1]||""===a)&&this.path(decodeURIComponent(c[1]));(c[2]||c[1]||""===a)&&this.search(c[3]||"");this.hash(c[5]||"");return this},protocol:Ib("$$protocol"),host:Ib("$$host"),port:Ib("$$port"),path:dd("$$path",function(a){a=null!==a?a.toString():"";return"/"==a.charAt(0)?a:"/"+a}),search:function(a,c){switch(arguments.length){case 0:return this.$$search;case 1:if(x(a)||V(a))a=
+a.toString(),this.$$search=rc(a);else if(J(a))a=Ea(a,{}),s(a,function(c,e){null==c&&delete a[e]}),this.$$search=a;else throw Hb("isrcharg");break;default:z(c)||null===c?delete this.$$search[a]:this.$$search[a]=c}this.$$compose();return this},hash:dd("$$hash",function(a){return null!==a?a.toString():""}),replace:function(){this.$$replace=!0;return this}};s([cd,ec,dc],function(a){a.prototype=Object.create(Uf);a.prototype.state=function(c){if(!arguments.length)return this.$$state;if(a!==dc||!this.$$html5)throw Hb("nostate");
+this.$$state=z(c)?null:c;return this}});var ka=M("$parse"),Vf=Function.prototype.call,Wf=Function.prototype.apply,Xf=Function.prototype.bind,mb=fa();s({"null":function(){return null},"true":function(){return!0},"false":function(){return!1},undefined:function(){}},function(a,c){a.constant=a.literal=a.sharedGetter=!0;mb[c]=a});mb["this"]=function(a){return a};mb["this"].sharedGetter=!0;var nb=w(fa(),{"+":function(a,c,d,e){d=d(a,c);e=e(a,c);return y(d)?y(e)?d+e:d:y(e)?e:u},"-":function(a,c,d,e){d=d(a,
+c);e=e(a,c);return(y(d)?d:0)-(y(e)?e:0)},"*":function(a,c,d,e){return d(a,c)*e(a,c)},"/":function(a,c,d,e){return d(a,c)/e(a,c)},"%":function(a,c,d,e){return d(a,c)%e(a,c)},"===":function(a,c,d,e){return d(a,c)===e(a,c)},"!==":function(a,c,d,e){return d(a,c)!==e(a,c)},"==":function(a,c,d,e){return d(a,c)==e(a,c)},"!=":function(a,c,d,e){return d(a,c)!=e(a,c)},"<":function(a,c,d,e){return d(a,c)<e(a,c)},">":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,
+c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"!":function(a,c,d){return!d(a,c)},"=":!0,"|":!0}),Yf={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},hc=function(a){this.options=a};hc.prototype={constructor:hc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index<this.text.length;)if(a=this.text.charAt(this.index),'"'===a||"'"===a)this.readString(a);else if(this.isNumber(a)||"."===a&&this.isNumber(this.peek()))this.readNumber();
+else if(this.isIdent(a))this.readIdent();else if(this.is(a,"(){}[].,;:?"))this.tokens.push({index:this.index,text:a}),this.index++;else if(this.isWhitespace(a))this.index++;else{var c=a+this.peek(),d=c+this.peek(2),e=nb[c],f=nb[d];nb[a]||e||f?(a=f?d:e?c:a,this.tokens.push({index:this.index,text:a,operator:!0}),this.index+=a.length):this.throwError("Unexpected next character ",this.index,this.index+1)}return this.tokens},is:function(a,c){return-1!==c.indexOf(a)},peek:function(a){a=a||1;return this.index+
+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=y(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw ka("lexerr",a,c,this.text);
+},readNumber:function(){for(var a="",c=this.index;this.index<this.text.length;){var d=R(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var e=this.peek();if("e"==d&&this.isExpOperator(e))a+=d;else if(this.isExpOperator(d)&&e&&this.isNumber(e)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||e&&this.isNumber(e)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}this.tokens.push({index:c,text:a,constant:!0,value:Number(a)})},readIdent:function(){for(var a=
+this.index;this.index<this.text.length;){var c=this.text.charAt(this.index);if(!this.isIdent(c)&&!this.isNumber(c))break;this.index++}this.tokens.push({index:a,text:this.text.slice(a,this.index),identifier:!0})},readString:function(a){var c=this.index;this.index++;for(var d="",e=a,f=!1;this.index<this.text.length;){var g=this.text.charAt(this.index),e=e+g;if(f)"u"===g?(f=this.text.substring(this.index+1,this.index+5),f.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+f+"]"),this.index+=
+4,d+=String.fromCharCode(parseInt(f,16))):d+=Yf[g]||g,f=!1;else if("\\"===g)f=!0;else{if(g===a){this.index++;this.tokens.push({index:c,text:e,constant:!0,value:d});return}d+=g}this.index++}this.throwError("Unterminated quote",c)}};var ib=function(a,c,d){this.lexer=a;this.$filter=c;this.options=d};ib.ZERO=w(function(){return 0},{sharedGetter:!0,constant:!0});ib.prototype={constructor:ib,parse:function(a){this.text=a;this.tokens=this.lexer.lex(a);a=this.statements();0!==this.tokens.length&&this.throwError("is an unexpected token",
+this.tokens[0]);a.literal=!!a.literal;a.constant=!!a.constant;return a},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.peek().identifier&&this.peek().text in mb?a=mb[this.consume().text]:this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression",this.peek());for(var c,d;c=this.expect("(","[",".");)"("===c.text?(a=this.functionCall(a,
+d),d=null):"["===c.text?(d=a,a=this.objectIndex(a)):"."===c.text?(d=a,a=this.fieldAccess(a)):this.throwError("IMPOSSIBLE");return a},throwError:function(a,c){throw ka("syntax",c.text,a,c.index+1,this.text,this.text.substring(c.index));},peekToken:function(){if(0===this.tokens.length)throw ka("ueoe",this.text);return this.tokens[0]},peek:function(a,c,d,e){return this.peekAhead(0,a,c,d,e)},peekAhead:function(a,c,d,e,f){if(this.tokens.length>a){a=this.tokens[a];var g=a.text;if(g===c||g===d||g===e||g===
+f||!(c||d||e||f))return a}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},consume:function(a){if(0===this.tokens.length)throw ka("ueoe",this.text);var c=this.expect(a);c||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return c},unaryFn:function(a,c){var d=nb[a];return w(function(a,f){return d(a,f,c)},{constant:c.constant,inputs:[c]})},binaryFn:function(a,c,d,e){var f=nb[c];return w(function(c,e){return f(c,e,a,d)},{constant:a.constant&&
+d.constant,inputs:!e&&[a,d]})},identifier:function(){for(var a=this.consume().text;this.peek(".")&&this.peekAhead(1).identifier&&!this.peekAhead(2,"(");)a+=this.consume().text+this.consume().text;return yf(a,this.options,this.text)},constant:function(){var a=this.consume().value;return w(function(){return a},{constant:!0,literal:!0})},statements:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",";","]")&&a.push(this.filterChain()),!this.expect(";"))return 1===a.length?a[0]:function(c,
+d){for(var e,f=0,g=a.length;f<g;f++)e=a[f](c,d);return e}},filterChain:function(){for(var a=this.expression();this.expect("|");)a=this.filter(a);return a},filter:function(a){var c=this.$filter(this.consume().text),d,e;if(this.peek(":"))for(d=[],e=[];this.expect(":");)d.push(this.expression());var f=[a].concat(d||[]);return w(function(f,h){var l=a(f,h);if(e){e[0]=l;for(l=d.length;l--;)e[l+1]=d[l](f,h);return c.apply(u,e)}return c(l)},{constant:!c.$stateful&&f.every(fc),inputs:!c.$stateful&&f})},expression:function(){return this.assignment()},
+assignment:function(){var a=this.ternary(),c,d;return(d=this.expect("="))?(a.assign||this.throwError("implies assignment but ["+this.text.substring(0,d.index)+"] can not be assigned to",d),c=this.ternary(),w(function(d,f){return a.assign(d,c(d,f),f)},{inputs:[a,c]})):a},ternary:function(){var a=this.logicalOR(),c;if(this.expect("?")&&(c=this.assignment(),this.consume(":"))){var d=this.assignment();return w(function(e,f){return a(e,f)?c(e,f):d(e,f)},{constant:a.constant&&c.constant&&d.constant})}return a},
+logicalOR:function(){for(var a=this.logicalAND(),c;c=this.expect("||");)a=this.binaryFn(a,c.text,this.logicalAND(),!0);return a},logicalAND:function(){for(var a=this.equality(),c;c=this.expect("&&");)a=this.binaryFn(a,c.text,this.equality(),!0);return a},equality:function(){for(var a=this.relational(),c;c=this.expect("==","!=","===","!==");)a=this.binaryFn(a,c.text,this.relational());return a},relational:function(){for(var a=this.additive(),c;c=this.expect("<",">","<=",">=");)a=this.binaryFn(a,c.text,
+this.additive());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.text,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.text,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(ib.ZERO,a.text,this.unary()):(a=this.expect("!"))?this.unaryFn(a.text,this.unary()):this.primary()},fieldAccess:function(a){var c=
+this.identifier();return w(function(d,e,f){d=f||a(d,e);return null==d?u:c(d)},{assign:function(d,e,f){var g=a(d,f);g||a.assign(d,g={},f);return c.assign(g,e)}})},objectIndex:function(a){var c=this.text,d=this.expression();this.consume("]");return w(function(e,f){var g=a(e,f),h=d(e,f);sa(h,c);return g?la(g[h],c):u},{assign:function(e,f,g){var h=sa(d(e,g),c),l=la(a(e,g),c);l||a.assign(e,l={},g);return l[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());
+while(this.expect(","))}this.consume(")");var e=this.text,f=d.length?[]:null;return function(g,h){var l=c?c(g,h):y(c)?u:g,k=a(g,h,l)||B;if(f)for(var m=d.length;m--;)f[m]=la(d[m](g,h),e);la(l,e);if(k){if(k.constructor===k)throw ka("isecfn",e);if(k===Vf||k===Wf||k===Xf)throw ka("isecff",e);}l=k.apply?k.apply(l,f):k(f[0],f[1],f[2],f[3],f[4]);f&&(f.length=0);return la(l,e)}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))
+}this.consume("]");return w(function(c,d){for(var e=[],f=0,g=a.length;f<g;f++)e.push(a[f](c,d));return e},{literal:!0,constant:a.every(fc),inputs:a})},object:function(){var a=[],c=[];if("}"!==this.peekToken().text){do{if(this.peek("}"))break;var d=this.consume();d.constant?a.push(d.value):d.identifier?a.push(d.text):this.throwError("invalid key",d);this.consume(":");c.push(this.expression())}while(this.expect(","))}this.consume("}");return w(function(d,f){for(var g={},h=0,l=c.length;h<l;h++)g[a[h]]=
+c[h](d,f);return g},{literal:!0,constant:c.every(fc),inputs:c})}};var Af=fa(),zf=fa(),Bf=Object.prototype.valueOf,Ca=M("$sce"),ma={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},ia=M("$compile"),Y=X.createElement("a"),id=Ba(P.location.href);Ec.$inject=["$provide"];jd.$inject=["$locale"];ld.$inject=["$locale"];var od=".",Lf={yyyy:Z("FullYear",4),yy:Z("FullYear",2,0,!0),y:Z("FullYear",1),MMMM:Kb("Month"),MMM:Kb("Month",!0),MM:Z("Month",2,1),M:Z("Month",1,1),dd:Z("Date",2),d:Z("Date",
+1),HH:Z("Hours",2),H:Z("Hours",1),hh:Z("Hours",2,-12),h:Z("Hours",1,-12),mm:Z("Minutes",2),m:Z("Minutes",1),ss:Z("Seconds",2),s:Z("Seconds",1),sss:Z("Milliseconds",3),EEEE:Kb("Day"),EEE:Kb("Day",!0),a:function(a,c){return 12>a.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Jb(Math[0<a?"floor":"ceil"](a/60),2)+Jb(Math.abs(a%60),2))},ww:qd(2),w:qd(1)},Kf=/((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/,Jf=/^\-?\d+$/;
+kd.$inject=["$locale"];var Gf=da(R),Hf=da(vb);md.$inject=["$parse"];var Td=da({restrict:"E",compile:function(a,c){if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){if("a"===c[0].nodeName.toLowerCase()){var f="[object SVGAnimatedString]"===Da.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}}),wb={};s(Fb,function(a,c){if("multiple"!=a){var d=ya("ng-"+c);wb[d]=function(){return{restrict:"A",priority:100,link:function(a,f,g){a.$watch(g[d],function(a){g.$set(c,
+!!a)})}}}}});s(Oc,function(a,c){wb[c]=function(){return{priority:100,link:function(a,e,f){if("ngPattern"===c&&"/"==f.ngPattern.charAt(0)&&(e=f.ngPattern.match(Nf))){f.$set("ngPattern",new RegExp(e[1],e[2]));return}a.$watch(f[c],function(a){f.$set(c,a)})}}}});s(["src","srcset","href"],function(a){var c=ya("ng-"+a);wb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===Da.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href",g=null);f.$observe(c,
+function(c){c?(f.$set(h,c),Ra&&g&&e.prop(g,f[h])):"href"===a&&f.$set(h,null)})}}}});var Lb={$addControl:B,$$renameControl:function(a,c){a.$name=c},$removeControl:B,$setValidity:B,$setDirty:B,$setPristine:B,$setSubmitted:B};rd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var yd=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:rd,compile:function(a){a.addClass(Sa).addClass(lb);return{pre:function(a,d,g,h){if(!("action"in g)){var l=function(c){a.$apply(function(){h.$commitViewValue();
+h.$setSubmitted()});c.preventDefault()};d[0].addEventListener("submit",l,!1);d.on("$destroy",function(){c(function(){d[0].removeEventListener("submit",l,!1)},0,!1)})}var k=h.$$parentForm,m=h.$name;m&&(hb(a,null,m,h,m),g.$observe(g.name?"name":"ngForm",function(c){m!==c&&(hb(a,null,m,u,m),m=c,hb(a,null,m,h,m),k.$$renameControl(h,m))}));d.on("$destroy",function(){k.$removeControl(h);m&&hb(a,null,m,u,m);w(h,Lb)})}}}}}]},Ud=yd(),ge=yd(!0),Mf=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,
+Zf=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,$f=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,ag=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,zd=/^(\d{4})-(\d{2})-(\d{2})$/,Ad=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,kc=/^(\d{4})-W(\d\d)$/,Bd=/^(\d{4})-(\d\d)$/,Cd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Dd={text:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);ic(e)},date:kb("date",zd,Nb(zd,["yyyy",
+"MM","dd"]),"yyyy-MM-dd"),"datetime-local":kb("datetimelocal",Ad,Nb(Ad,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:kb("time",Cd,Nb(Cd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:kb("week",kc,function(a,c){if(pa(a))return a;if(x(a)){kc.lastIndex=0;var d=kc.exec(a);if(d){var e=+d[1],f=+d[2],g=d=0,h=0,l=0,k=pd(e),f=7*(f-1);c&&(d=c.getHours(),g=c.getMinutes(),h=c.getSeconds(),l=c.getMilliseconds());return new Date(e,0,k.getDate()+f,d,g,h,l)}}return NaN},"yyyy-Www"),month:kb("month",
+Bd,Nb(Bd,["yyyy","MM"]),"yyyy-MM"),number:function(a,c,d,e,f,g){td(a,c,d,e);jb(a,c,d,e,f,g);e.$$parserName="number";e.$parsers.push(function(a){return e.$isEmpty(a)?null:ag.test(a)?parseFloat(a):u});e.$formatters.push(function(a){if(!e.$isEmpty(a)){if(!V(a))throw Ob("numfmt",a);a=a.toString()}return a});if(y(d.min)||d.ngMin){var h;e.$validators.min=function(a){return e.$isEmpty(a)||z(h)||a>=h};d.$observe("min",function(a){y(a)&&!V(a)&&(a=parseFloat(a,10));h=V(a)&&!isNaN(a)?a:u;e.$validate()})}if(y(d.max)||
+d.ngMax){var l;e.$validators.max=function(a){return e.$isEmpty(a)||z(l)||a<=l};d.$observe("max",function(a){y(a)&&!V(a)&&(a=parseFloat(a,10));l=V(a)&&!isNaN(a)?a:u;e.$validate()})}},url:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);ic(e);e.$$parserName="url";e.$validators.url=function(a,c){var d=a||c;return e.$isEmpty(d)||Zf.test(d)}},email:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);ic(e);e.$$parserName="email";e.$validators.email=function(a,c){var d=a||c;return e.$isEmpty(d)||$f.test(d)}},radio:function(a,c,
+d,e){z(d.name)&&c.attr("name",++ob);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,l){var k=ud(l,a,"ngTrueValue",d.ngTrueValue,!0),m=ud(l,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked,a&&a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return!1===a};e.$formatters.push(function(a){return ea(a,
+k)});e.$parsers.push(function(a){return a?k:m})},hidden:B,button:B,submit:B,reset:B,file:B},yc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,l){l[0]&&(Dd[R(h.type)]||Dd.text)(f,g,h,l[0],c,a,d,e)}}}}],bg=/^(true|false|\d+)$/,ye=function(){return{restrict:"A",priority:100,compile:function(a,c){return bg.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",
+a)})}}}},Zd=["$compile",function(a){return{restrict:"AC",compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===u?"":a})}}}}],ae=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate));c.$$addBindingInfo(f,d.expressions);f=f[0];g.$observe("ngBindTemplate",function(a){f.textContent=a===u?"":a})}}}}],$d=["$sce",
+"$parse","$compile",function(a,c,d){return{restrict:"A",compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],xe=da({restrict:"A",require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),be=jc("",!0),de=jc("Odd",0),ce=jc("Even",1),ee=Ja({compile:function(a,c){c.$set("ngCloak",
+u);a.removeClass("ng-cloak")}}),fe=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Dc={},cg={blur:!0,focus:!0};s("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=ya("ng-"+a);Dc[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h=d(g[c],null,!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};
+cg[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var ie=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,l,k;c.$watch(e.ngIf,function(c){c?l||g(function(c,f){l=f;c[c.length++]=X.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(k&&(k.remove(),k=null),l&&(l.$destroy(),l=null),h&&(k=ub(h.clone),a.leave(k).then(function(){k=null}),h=null))})}}}],je=["$templateRequest","$anchorScroll",
+"$animate","$sce",function(a,c,d,e){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:aa.noop,compile:function(f,g){var h=g.ngInclude||g.src,l=g.onload||"",k=g.autoscroll;return function(f,g,q,s,r){var u=0,w,n,D,H=function(){n&&(n.remove(),n=null);w&&(w.$destroy(),w=null);D&&(d.leave(D).then(function(){n=null}),n=D,D=null)};f.$watch(e.parseAsResourceUrl(h),function(e){var h=function(){!y(k)||k&&!f.$eval(k)||c()},n=++u;e?(a(e,!0).then(function(a){if(n===u){var c=f.$new();
+s.template=a;a=r(c,function(a){H();d.enter(a,null,g).then(h)});w=c;D=a;w.$emit("$includeContentLoaded",e);f.$eval(l)}},function(){n===u&&(H(),f.$emit("$includeContentError",e))}),f.$emit("$includeContentRequested",e)):(H(),s.template=null)})}}}}],Ae=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(Gc(f.template,X).childNodes)(c,function(a){d.append(a)},{futureParentElement:d})):(d.html(f.template),a(d.contents())(c))}}}],
+ke=Ja({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),we=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?T(f):f;e.$parsers.push(function(a){if(!z(a)){var c=[];a&&s(a.split(h),function(a){a&&c.push(g?T(a):a)});return c}});e.$formatters.push(function(a){return E(a)?a.join(f):u});e.$isEmpty=function(a){return!a||!a.length}}}},lb="ng-valid",vd="ng-invalid",Sa="ng-pristine",
+Mb="ng-dirty",xd="ng-pending",Ob=new M("ngModel"),dg=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,l,k,m){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=u;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success=
+{};this.$pending=u;this.$name=m(d.name||"",!1)(a);var p=f(d.ngModel),q=p.assign,t=p,r=q,w=null,C,n=this;this.$$setOptions=function(a){if((n.$options=a)&&a.getterSetter){var c=f(d.ngModel+"()"),g=f(d.ngModel+"($$$p)");t=function(a){var d=p(a);G(d)&&(d=c(a));return d};r=function(a,c){G(p(a))?g(a,{$$$p:n.$modelValue}):q(a,n.$modelValue)}}else if(!p.assign)throw Ob("nonassign",d.ngModel,ua(e));};this.$render=B;this.$isEmpty=function(a){return z(a)||""===a||null===a||a!==a};var D=e.inheritedData("$formController")||
+Lb,H=0;sd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:D,$animate:g});this.$setPristine=function(){n.$dirty=!1;n.$pristine=!0;g.removeClass(e,Mb);g.addClass(e,Sa)};this.$setDirty=function(){n.$dirty=!0;n.$pristine=!1;g.removeClass(e,Sa);g.addClass(e,Mb);D.$setDirty()};this.$setUntouched=function(){n.$touched=!1;n.$untouched=!0;g.setClass(e,"ng-untouched","ng-touched")};this.$setTouched=function(){n.$touched=!0;n.$untouched=!1;g.setClass(e,"ng-touched",
+"ng-untouched")};this.$rollbackViewValue=function(){h.cancel(w);n.$viewValue=n.$$lastCommittedViewValue;n.$render()};this.$validate=function(){if(!V(n.$modelValue)||!isNaN(n.$modelValue)){var a=n.$$rawModelValue,c=n.$valid,d=n.$modelValue,e=n.$options&&n.$options.allowInvalid;n.$$runValidators(a,n.$$lastCommittedViewValue,function(f){e||c===f||(n.$modelValue=f?a:u,n.$modelValue!==d&&n.$$writeModelToScope())})}};this.$$runValidators=function(a,c,d){function e(){var d=!0;s(n.$validators,function(e,
+f){var h=e(a,c);d=d&&h;g(f,h)});return d?!0:(s(n.$asyncValidators,function(a,c){g(c,null)}),!1)}function f(){var d=[],e=!0;s(n.$asyncValidators,function(f,h){var k=f(a,c);if(!k||!G(k.then))throw Ob("$asyncValidators",k);g(h,u);d.push(k.then(function(){g(h,!0)},function(a){e=!1;g(h,!1)}))});d.length?k.all(d).then(function(){h(e)},B):h(!0)}function g(a,c){l===H&&n.$setValidity(a,c)}function h(a){l===H&&d(a)}H++;var l=H;(function(){var a=n.$$parserName||"parse";if(C===u)g(a,null);else return C||(s(n.$validators,
+function(a,c){g(c,null)}),s(n.$asyncValidators,function(a,c){g(c,null)})),g(a,C),C;return!0})()?e()?f():h(!1):h(!1)};this.$commitViewValue=function(){var a=n.$viewValue;h.cancel(w);if(n.$$lastCommittedViewValue!==a||""===a&&n.$$hasNativeValidators)n.$$lastCommittedViewValue=a,n.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var c=n.$$lastCommittedViewValue;if(C=z(c)?u:!0)for(var d=0;d<n.$parsers.length;d++)if(c=n.$parsers[d](c),z(c)){C=!1;break}V(n.$modelValue)&&
+isNaN(n.$modelValue)&&(n.$modelValue=t(a));var e=n.$modelValue,f=n.$options&&n.$options.allowInvalid;n.$$rawModelValue=c;f&&(n.$modelValue=c,n.$modelValue!==e&&n.$$writeModelToScope());n.$$runValidators(c,n.$$lastCommittedViewValue,function(a){f||(n.$modelValue=a?c:u,n.$modelValue!==e&&n.$$writeModelToScope())})};this.$$writeModelToScope=function(){r(a,n.$modelValue);s(n.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}})};this.$setViewValue=function(a,c){n.$viewValue=a;n.$options&&!n.$options.updateOnDefault||
+n.$$debounceViewValueCommit(c)};this.$$debounceViewValueCommit=function(c){var d=0,e=n.$options;e&&y(e.debounce)&&(e=e.debounce,V(e)?d=e:V(e[c])?d=e[c]:V(e["default"])&&(d=e["default"]));h.cancel(w);d?w=h(function(){n.$commitViewValue()},d):l.$$phase?n.$commitViewValue():a.$apply(function(){n.$commitViewValue()})};a.$watch(function(){var c=t(a);if(c!==n.$modelValue){n.$modelValue=n.$$rawModelValue=c;C=u;for(var d=n.$formatters,e=d.length,f=c;e--;)f=d[e](f);n.$viewValue!==f&&(n.$viewValue=n.$$lastCommittedViewValue=
+f,n.$render(),n.$$runValidators(c,f,B))}return c})}],ve=["$rootScope",function(a){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:dg,priority:1,compile:function(c){c.addClass(Sa).addClass("ng-untouched").addClass(lb);return{pre:function(a,c,f,g){var h=g[0],l=g[1]||Lb;h.$$setOptions(g[2]&&g[2].$options);l.$addControl(h);f.$observe("name",function(a){h.$name!==a&&l.$$renameControl(h,a)});a.$on("$destroy",function(){l.$removeControl(h)})},post:function(c,e,f,g){var h=g[0];
+if(h.$options&&h.$options.updateOn)e.on(h.$options.updateOn,function(a){h.$$debounceViewValueCommit(a&&a.type)});e.on("blur",function(e){h.$touched||(a.$$phase?c.$evalAsync(h.$setTouched):c.$apply(h.$setTouched))})}}}}}],eg=/(\s+|^)default(\s+|$)/,ze=function(){return{restrict:"A",controller:["$scope","$attrs",function(a,c){var d=this;this.$options=a.$eval(c.ngModelOptions);this.$options.updateOn!==u?(this.$options.updateOnDefault=!1,this.$options.updateOn=T(this.$options.updateOn.replace(eg,function(){d.$options.updateOnDefault=
+!0;return" "}))):this.$options.updateOnDefault=!0}]}},le=Ja({terminal:!0,priority:1E3}),me=["$locale","$interpolate",function(a,c){var d=/{}/g,e=/^when(Minus)?(.+)$/;return{restrict:"EA",link:function(f,g,h){function l(a){g.text(a||"")}var k=h.count,m=h.$attr.when&&g.attr(h.$attr.when),p=h.offset||0,q=f.$eval(m)||{},t={},m=c.startSymbol(),r=c.endSymbol(),u=m+k+"-"+p+r,w=aa.noop,n;s(h,function(a,c){var d=e.exec(c);d&&(d=(d[1]?"-":"")+R(d[2]),q[d]=g.attr(h.$attr[c]))});s(q,function(a,e){t[e]=c(a.replace(d,
+u))});f.$watch(k,function(c){c=parseFloat(c);var d=isNaN(c);d||c in q||(c=a.pluralCat(c-p));c===n||d&&isNaN(n)||(w(),w=f.$watch(t[c],l),n=c)})}}}],ne=["$parse","$animate",function(a,c){var d=M("ngRepeat"),e=function(a,c,d,e,k,m,p){a[d]=e;k&&(a[k]=m);a.$index=c;a.$first=0===c;a.$last=c===p-1;a.$middle=!(a.$first||a.$last);a.$odd=!(a.$even=0===(c&1))};return{restrict:"A",multiElement:!0,transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,compile:function(f,g){var h=g.ngRepeat,l=X.createComment(" end ngRepeat: "+
+h+" "),k=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!k)throw d("iexp",h);var m=k[1],p=k[2],q=k[3],t=k[4],k=m.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/);if(!k)throw d("iidexp",m);var r=k[3]||k[1],w=k[2];if(q&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(q)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(q)))throw d("badident",q);var y,n,D,H,v={$id:Na};t?y=a(t):(D=function(a,c){return Na(c)},
+H=function(a){return a});return function(a,f,g,k,m){y&&(n=function(c,d,e){w&&(v[w]=c);v[r]=d;v.$index=e;return y(a,v)});var t=fa();a.$watchCollection(p,function(g){var k,p,y=f[0],F,v=fa(),B,z,G,E,J,x,K;q&&(a[q]=g);if(Ta(g))J=g,p=n||D;else{p=n||H;J=[];for(K in g)g.hasOwnProperty(K)&&"$"!=K.charAt(0)&&J.push(K);J.sort()}B=J.length;K=Array(B);for(k=0;k<B;k++)if(z=g===J?k:J[k],G=g[z],E=p(z,G,k),t[E])x=t[E],delete t[E],v[E]=x,K[k]=x;else{if(v[E])throw s(K,function(a){a&&a.scope&&(t[a.id]=a)}),d("dupes",
+h,E,G);K[k]={id:E,scope:u,clone:u};v[E]=!0}for(F in t){x=t[F];E=ub(x.clone);c.leave(E);if(E[0].parentNode)for(k=0,p=E.length;k<p;k++)E[k].$$NG_REMOVED=!0;x.scope.$destroy()}for(k=0;k<B;k++)if(z=g===J?k:J[k],G=g[z],x=K[k],x.scope){F=y;do F=F.nextSibling;while(F&&F.$$NG_REMOVED);x.clone[0]!=F&&c.move(ub(x.clone),null,C(y));y=x.clone[x.clone.length-1];e(x.scope,k,r,G,w,z,B)}else m(function(a,d){x.scope=d;var f=l.cloneNode(!1);a[a.length++]=f;c.enter(a,null,C(y));y=f;x.clone=a;v[x.id]=x;e(x.scope,k,r,
+G,w,z,B)});t=v})}}}}],oe=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(c,d,e){c.$watch(e.ngShow,function(c){a[c?"removeClass":"addClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],he=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(c,d,e){c.$watch(e.ngHide,function(c){a[c?"addClass":"removeClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],pe=Ja(function(a,c,d){a.$watchCollection(d.ngStyle,function(a,d){d&&a!==d&&s(d,function(a,
+d){c.css(d,"")});a&&c.css(a)})}),qe=["$animate",function(a){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(c,d,e,f){var g=[],h=[],l=[],k=[],m=function(a,c){return function(){a.splice(c,1)}};c.$watch(e.ngSwitch||e.on,function(c){var d,e;d=0;for(e=l.length;d<e;++d)a.cancel(l[d]);d=l.length=0;for(e=k.length;d<e;++d){var r=ub(h[d].clone);k[d].$destroy();(l[d]=a.leave(r)).then(m(l,d))}h.length=0;k.length=0;(g=f.cases["!"+c]||f.cases["?"])&&s(g,function(c){c.transclude(function(d,
+e){k.push(e);var f=c.element;d[d.length++]=X.createComment(" end ngSwitchWhen: ");h.push({clone:d});a.enter(d,f.parent(),f)})})})}}}],re=Ja({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,c,d,e,f){e.cases["!"+d.ngSwitchWhen]=e.cases["!"+d.ngSwitchWhen]||[];e.cases["!"+d.ngSwitchWhen].push({transclude:f,element:c})}}),se=Ja({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,c,d,e,f){e.cases["?"]=e.cases["?"]||[];e.cases["?"].push({transclude:f,
+element:c})}}),ue=Ja({restrict:"EAC",link:function(a,c,d,e,f){if(!f)throw M("ngTransclude")("orphan",ua(c));f(function(a){c.empty();c.append(a)})}}),Vd=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(c,d){"text/ng-template"==d.type&&a.put(d.id,c[0].text)}}}],fg=M("ngOptions"),te=da({restrict:"A",terminal:!0}),Wd=["$compile","$parse",function(a,c){var d=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
+e={$setViewValue:B};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(a,c,d){var l=this,k={},m=e,p;l.databound=d.ngModel;l.init=function(a,c,d){m=a;p=d};l.addOption=function(c,d){Ma(c,'"option value"');k[c]=!0;m.$viewValue==c&&(a.val(c),p.parent()&&p.remove());d&&d[0].hasAttribute("selected")&&(d[0].selected=!0)};l.removeOption=function(a){this.hasOption(a)&&(delete k[a],m.$viewValue===a&&this.renderUnknownOption(a))};l.renderUnknownOption=function(c){c=
+"? "+Na(c)+" ?";p.val(c);a.prepend(p);a.val(c);p.prop("selected",!0)};l.hasOption=function(a){return k.hasOwnProperty(a)};c.$on("$destroy",function(){l.renderUnknownOption=B})}],link:function(e,g,h,l){function k(a,c,d,e){d.$render=function(){var a=d.$viewValue;e.hasOption(a)?(v.parent()&&v.remove(),c.val(a),""===a&&B.prop("selected",!0)):z(a)&&B?c.val(""):e.renderUnknownOption(a)};c.on("change",function(){a.$apply(function(){v.parent()&&v.remove();d.$setViewValue(c.val())})})}function m(a,c,d){var e;
+d.$render=function(){var a=new eb(d.$viewValue);s(c.find("option"),function(c){c.selected=y(a.get(c.value))})};a.$watch(function(){ea(e,d.$viewValue)||(e=qa(d.$viewValue),d.$render())});c.on("change",function(){a.$apply(function(){var a=[];s(c.find("option"),function(c){c.selected&&a.push(c.value)});d.$setViewValue(a)})})}function p(e,f,g){function h(a,c,d){R[B]=d;G&&(R[G]=c);return a(e,R)}function k(a){var c;if(t)if(K&&E(a)){c=new eb([]);for(var d=0;d<a.length;d++)c.put(h(K,null,a[d]),!0)}else c=
+new eb(a);else K&&(a=h(K,null,a));return function(d,e){var f;f=K?K:z?z:A;return t?y(c.remove(h(f,d,e))):a===h(f,d,e)}}function l(){n||(e.$$postDigest(p),n=!0)}function m(a,c,d){a[c]=a[c]||0;a[c]+=d?1:-1}function p(){n=!1;var a={"":[]},c=[""],d,l,r,u,v;r=g.$viewValue;u=N(e)||[];var B=G?Object.keys(u).sort():u,x,z,E,A,O={};v=k(r);var M=!1,T,V;Q={};for(A=0;E=B.length,A<E;A++){x=A;if(G&&(x=B[A],"$"===x.charAt(0)))continue;z=u[x];d=h(J,x,z)||"";(l=a[d])||(l=a[d]=[],c.push(d));d=v(x,z);M=M||d;z=h(C,x,z);
+z=y(z)?z:"";V=K?K(e,R):G?B[A]:A;K&&(Q[V]=x);l.push({id:V,label:z,selected:d})}t||(w||null===r?a[""].unshift({id:"",label:"",selected:!M}):M||a[""].unshift({id:"?",label:"",selected:!0}));x=0;for(B=c.length;x<B;x++){d=c[x];l=a[d];P.length<=x?(r={element:H.clone().attr("label",d),label:l.label},u=[r],P.push(u),f.append(r.element)):(u=P[x],r=u[0],r.label!=d&&r.element.attr("label",r.label=d));M=null;A=0;for(E=l.length;A<E;A++)d=l[A],(v=u[A+1])?(M=v.element,v.label!==d.label&&(m(O,v.label,!1),m(O,d.label,
+!0),M.text(v.label=d.label),M.prop("label",v.label)),v.id!==d.id&&M.val(v.id=d.id),M[0].selected!==d.selected&&(M.prop("selected",v.selected=d.selected),Ra&&M.prop("selected",v.selected))):(""===d.id&&w?T=w:(T=D.clone()).val(d.id).prop("selected",d.selected).attr("selected",d.selected).prop("label",d.label).text(d.label),u.push(v={element:T,label:d.label,id:d.id,selected:d.selected}),m(O,d.label,!0),M?M.after(T):r.element.append(T),M=T);for(A++;u.length>A;)d=u.pop(),m(O,d.label,!1),d.element.remove()}for(;P.length>
+x;){l=P.pop();for(A=1;A<l.length;++A)m(O,l[A].label,!1);l[0].element.remove()}s(O,function(a,c){0<a?q.addOption(c):0>a&&q.removeOption(c)})}var v;if(!(v=r.match(d)))throw fg("iexp",r,ua(f));var C=c(v[2]||v[1]),B=v[4]||v[6],x=/ as /.test(v[0])&&v[1],z=x?c(x):null,G=v[5],J=c(v[3]||""),A=c(v[2]?v[1]:B),N=c(v[7]),K=v[8]?c(v[8]):null,Q={},P=[[{element:f,label:""}]],R={};w&&(a(w)(e),w.removeClass("ng-scope"),w.remove());f.empty();f.on("change",function(){e.$apply(function(){var a=N(e)||[],c;if(t)c=[],s(f.val(),
+function(d){d=K?Q[d]:d;c.push("?"===d?u:""===d?null:h(z?z:A,d,a[d]))});else{var d=K?Q[f.val()]:f.val();c="?"===d?u:""===d?null:h(z?z:A,d,a[d])}g.$setViewValue(c);p()})});g.$render=p;e.$watchCollection(N,l);e.$watchCollection(function(){var a=N(e),c;if(a&&E(a)){c=Array(a.length);for(var d=0,f=a.length;d<f;d++)c[d]=h(C,d,a[d])}else if(a)for(d in c={},a)a.hasOwnProperty(d)&&(c[d]=h(C,d,a[d]));return c},l);t&&e.$watchCollection(function(){return g.$modelValue},l)}if(l[1]){var q=l[0];l=l[1];var t=h.multiple,
+r=h.ngOptions,w=!1,B,n=!1,D=C(X.createElement("option")),H=C(X.createElement("optgroup")),v=D.clone();h=0;for(var x=g.children(),G=x.length;h<G;h++)if(""===x[h].value){B=w=x.eq(h);break}q.init(l,w,v);t&&(l.$isEmpty=function(a){return!a||0===a.length});r?p(e,g,l):t?m(e,g,l):k(e,g,l,q)}}}}],Yd=["$interpolate",function(a){var c={addOption:B,removeOption:B};return{restrict:"E",priority:100,compile:function(d,e){if(z(e.value)){var f=a(d.text(),!0);f||e.$set("value",d.text())}return function(a,d,e){var k=
+d.parent(),m=k.data("$selectController")||k.parent().data("$selectController");m&&m.databound||(m=c);f?a.$watch(f,function(a,c){e.$set("value",a);c!==a&&m.removeOption(c);m.addOption(a,d)}):m.addOption(e.value,d);d.on("$destroy",function(){m.removeOption(e.value)})}}}}],Xd=da({restrict:"E",terminal:!1}),Ac=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){e&&(d.required=!0,e.$validators.required=function(a,c){return!d.required||!e.$isEmpty(c)},d.$observe("required",function(){e.$validate()}))}}},
+zc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f,g=d.ngPattern||d.pattern;d.$observe("pattern",function(a){x(a)&&0<a.length&&(a=new RegExp("^"+a+"$"));if(a&&!a.test)throw M("ngPattern")("noregexp",g,a,ua(c));f=a||u;e.$validate()});e.$validators.pattern=function(a){return e.$isEmpty(a)||z(f)||f.test(a)}}}}},Cc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=-1;d.$observe("maxlength",function(a){a=$(a);f=isNaN(a)?-1:a;e.$validate()});
+e.$validators.maxlength=function(a,c){return 0>f||e.$isEmpty(c)||c.length<=f}}}}},Bc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=0;d.$observe("minlength",function(a){f=$(a)||0;e.$validate()});e.$validators.minlength=function(a,c){return e.$isEmpty(c)||c.length>=f}}}}};P.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(Nd(),Pd(aa),C(X).ready(function(){Jd(X,tc)}))})(window,document);!window.angular.$$csp()&&window.angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}</style>');
+//# sourceMappingURL=angular.min.js.map
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.css b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.css
new file mode 100644 (file)
index 0000000..240be45
--- /dev/null
@@ -0,0 +1,74 @@
+.angularjs-datetime-picker {
+  color: #333;
+  font: normal 14px sans-serif;
+  border: 1px solid #ddd;
+  display: inline-block;
+  background: #fff;
+}
+.angularjs-datetime-picker > .adp-month {
+  text-align: center;
+  line-height: 22px;
+  padding: 10px;
+  background: #fcfcfc;
+  text-transform: uppercase;
+  font-weight: bold;
+  border-bottom: 1px solid #ddd;
+  position: relative;
+}
+.angularjs-datetime-picker > .adp-month > button {
+  color: #555;
+  font: normal 14px sans-serif;
+  outline: none;
+  position: absolute;
+  background: transparent;
+  border: none;
+  cursor: pointer;
+}
+.angularjs-datetime-picker > .adp-month > button:hover {
+  color: #333;
+}
+.angularjs-datetime-picker > .adp-month > button.adp-prev {
+  left: 10px;
+}
+.angularjs-datetime-picker > .adp-month > button.adp-next {
+  right: 10px;
+}
+.angularjs-datetime-picker > .adp-days {
+  width: 210px; /* 30 x 7 */
+  margin: 10px;
+  text-align: center;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day-of-week, .angularjs-datetime-picker > .adp-days > .adp-day {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  border: 1px solid transparent;
+  width: 30px;
+  line-height: 28px;
+  float: left;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day-of-week {
+  font-weight: bold;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day:not(.selectable) {
+  opacity: 0.15;
+  cursor: default;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day.selectable  {
+  cursor: pointer;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day.selected {
+  background: #e0e0e0;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day.selectable:hover {
+  background: #eee;
+}
+.angularjs-datetime-picker > .adp-days:after {
+  content: '';
+  display: block;
+  clear: left;
+  height: 0;
+}
+
+.angularjs-datetime-picker input[type=range] {
+  width: 150px;
+}
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.js b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.js
new file mode 100644 (file)
index 0000000..946f12e
--- /dev/null
@@ -0,0 +1,332 @@
+(function() {
+  'use strict';
+
+  angular.module('angularjs-datetime-picker', []);
+
+  var getTimezoneOffset = function(date) {
+    (typeof date == 'string')  && (date = new Date(date));
+    var jan = new Date(date.getFullYear(), 0, 1);
+    var jul = new Date(date.getFullYear(), 6, 1);
+    var stdTimezoneOffset = Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
+    var isDST = date.getTimezoneOffset() < stdTimezoneOffset;
+    var offset = isDST ? stdTimezoneOffset - 60 : stdTimezoneOffset;
+    var diff = offset >=0 ? '-' : '+';
+    return diff +
+      ("0"+ (offset / 60)).slice(-2) + ':' +
+      ("0"+ (offset % 60)).slice(-2);
+  };
+
+  var DatetimePicker = function($compile, $document, $controller){
+    var datetimePickerCtrl = $controller('DatetimePickerCtrl'); //directive controller
+    return {
+      open: function(options) {
+        datetimePickerCtrl.openDatetimePicker(options);
+      },
+      close: function() {
+        datetimePickerCtrl.closeDatetimePicker();
+      }
+    };
+  };
+  DatetimePicker.$inject = ['$compile', '$document', '$controller'];
+  angular.module('angularjs-datetime-picker').factory('DatetimePicker', DatetimePicker);
+
+  var DatetimePickerCtrl = function($compile, $document) {
+    var datetimePickerEl;
+    var _this = this;
+    var removeEl = function(el) {
+      el && el.remove();
+      $document[0].body.removeEventListener('click', _this.closeDatetimePicker);
+    };
+
+    this.openDatetimePicker = function(options) {
+      this.closeDatetimePicker();
+      var div = angular.element('<div datetime-picker-popup ng-cloak></div>');
+      options.dateFormat && div.attr('date-format', options.dateFormat);
+      options.ngModel  && div.attr('ng-model', options.ngModel);
+      options.year     && div.attr('year', parseInt(options.year));
+      options.month    && div.attr('month', parseInt(options.month));
+      options.day      && div.attr('day', parseInt(options.day));
+      options.hour     && div.attr('hour', parseInt(options.hour));
+      options.minute   && div.attr('minute', parseInt(options.minute));
+      if (options.dateOnly === '' || options.dateOnly === true) {
+        div.attr('date-only', 'true');
+      }
+      if (options.closeOnSelect === 'false') {
+        div.attr('close-on-select', 'false');
+      }
+
+      var triggerEl = options.triggerEl;
+      options.scope = options.scope || angular.element(triggerEl).scope();
+      datetimePickerEl = $compile(div)(options.scope)[0];
+      datetimePickerEl.triggerEl = options.triggerEl;
+
+      $document[0].body.appendChild(datetimePickerEl);
+
+      //show datetimePicker below triggerEl
+      var bcr = triggerEl.getBoundingClientRect();
+      datetimePickerEl.style.position='absolute';
+      datetimePickerEl.style.left= (bcr.left + window.scrollX) + 'px';
+
+      options.scope.$apply();
+
+      var datePickerElBcr = datetimePickerEl.getBoundingClientRect();
+
+      if (bcr.top < 300 || window.innerHeight - bcr.bottom > 300) {
+        datetimePickerEl.style.top = (bcr.bottom + window.scrollY) + 'px';
+      } else {
+        datetimePickerEl.style.top = (bcr.top - datePickerElBcr.height + window.scrollY) + 'px';
+      }
+
+      $document[0].body.addEventListener('click', this.closeDatetimePicker);
+    };
+
+    this.closeDatetimePicker = function(evt) {
+      var target = evt && evt.target;
+      var popupEl = $document[0].querySelector('div[datetime-picker-popup]');
+      if (evt && target) {
+        if (target.hasAttribute('datetime-picker')) {  // element with datetimePicker behaviour
+          // do nothing
+        } else if (popupEl && popupEl.contains(target)) { // datetimePicker itself
+          // do nothing
+        } else {
+          removeEl(popupEl);
+        }
+      } else {
+        removeEl(popupEl);
+      }
+    }
+  };
+  DatetimePickerCtrl.$inject = ['$compile', '$document'];
+  angular.module('angularjs-datetime-picker').controller('DatetimePickerCtrl', DatetimePickerCtrl);
+
+  var tmpl = [
+    '<div class="angularjs-datetime-picker">' ,
+    '  <div class="adp-month">',
+    '    <button type="button" class="adp-prev" ng-click="addMonth(-1)">&laquo;</button>',
+    '    <span title="{{months[mv.month].fullName}}">{{months[mv.month].shortName}}</span> {{mv.year}}',
+    '    <button type="button" class="adp-next" ng-click="addMonth(1)">&raquo;</button>',
+    '  </div>',
+    '  <div class="adp-days" ng-click="setDate($event)">',
+    '    <div class="adp-day-of-week" ng-repeat="dayOfWeek in ::daysOfWeek" title="{{dayOfWeek.fullName}}">{{::dayOfWeek.firstLetter}}</div>',
+    '    <div class="adp-day" ng-repeat="day in mv.leadingDays">{{::day}}</div>',
+    '    <div class="adp-day selectable" ng-repeat="day in mv.days" ',
+    '      ng-class="{selected: (day == selectedDay)}">{{::day}}</div>',
+    '    <div class="adp-day" ng-repeat="day in mv.trailingDays">{{::day}}</div>',
+    '  </div>',
+    '  <div class="adp-days" id="adp-time"> ',
+    '    Time : {{("0"+inputHour).slice(-2)}} : {{("0"+inputMinute).slice(-2)}} <br/>',
+    '    <label>Hour:</label> <input type="range" min="0" max="23" ng-model="inputHour" ng-change="updateNgModel()" />',
+    '    <label>Min.:</label> <input type="range" min="0" max="59" ng-model="inputMinute"  ng-change="updateNgModel()"/> ',
+    '  </div> ',
+    '</div>'].join("\n");
+
+  var datetimePickerPopup = function($locale, dateFilter){
+    var days, months, daysOfWeek, firstDayOfWeek;
+
+    var initVars = function() {
+      days =[], months=[]; daysOfWeek=[], firstDayOfWeek=0;
+      for (var i = 1; i <= 31; i++) {
+        days.push(i);
+      }
+
+      for (var i = 0; i < 12; i++) { //jshint ignore:line
+        months.push({
+          fullName: $locale.DATETIME_FORMATS.MONTH[i],
+          shortName: $locale.DATETIME_FORMATS.SHORTMONTH[i]
+        });
+      }
+
+      for (var i = 0; i < 7; i++) { //jshint ignore:line
+        var day = $locale.DATETIME_FORMATS.DAY[(i + firstDayOfWeek) % 7];
+
+        daysOfWeek.push({
+          fullName: day,
+          firstLetter: day.substr(0, 2)
+        });
+      }
+      firstDayOfWeek = $locale.DATETIME_FORMATS.FIRSTDAYOFWEEK || 0;
+    };
+
+    var getMonthView = function(year, month) {
+      if (month>11) {
+        year++;
+      } else if (month < 0) {
+        year--;
+      }
+      month = (month + 12) % 12;
+      var firstDayOfMonth = new Date(year, month, 1),
+        lastDayOfMonth = new Date(year, month + 1, 0),
+        lastDayOfPreviousMonth = new Date(year, month, 0),
+        daysInMonth = lastDayOfMonth.getDate(),
+        daysInLastMonth = lastDayOfPreviousMonth.getDate(),
+        dayOfWeek = firstDayOfMonth.getDay(),
+        leadingDays = (dayOfWeek - firstDayOfWeek + 7) % 7 || 7, // Ensure there are always leading days to give context
+        trailingDays = days.slice(0, 6 * 7 - (leadingDays + daysInMonth));
+      if (trailingDays.length > 7) {
+        trailingDays = trailingDays.slice(0, trailingDays.length-7);
+      }
+
+      return {
+        year: year,
+        month: month,
+        days: days.slice(0, daysInMonth),
+        leadingDays: days.slice(- leadingDays - (31 - daysInLastMonth), daysInLastMonth),
+        trailingDays: trailingDays
+      };
+    };
+
+    var linkFunc = function(scope, element, attrs, ctrl) { //jshint ignore:line
+      initVars(); //initialize days, months, daysOfWeek, and firstDayOfWeek;
+      var dateFormat = attrs.dateFormat || 'short';
+      scope.months = months;
+      scope.daysOfWeek = daysOfWeek;
+      scope.inputHour;
+      scope.inputMinute;
+
+      if (scope.dateOnly === true){
+        element[0].querySelector('#adp-time').style.display = 'none';
+      }
+
+      scope.$applyAsync( function() {
+        ctrl.triggerEl = angular.element(element[0].triggerEl);
+        if (attrs.ngModel) { // need to parse date string
+          var dateStr = ''+ctrl.triggerEl.scope().$eval(attrs.ngModel);
+          if (dateStr) {
+            if (!dateStr.match(/[0-9]{2}:/)) {  // if no time is given, add 00:00:00 at the end
+              dateStr += " 00:00:00";
+            }
+            dateStr = dateStr.replace(/([0-9]{2}-[0-9]{2})-([0-9]{4})/,'$2-$1');      //mm-dd-yyyy to yyyy-mm-dd
+            dateStr = dateStr.replace(/([\/-][0-9]{2,4})\ ([0-9]{2}\:[0-9]{2}\:)/,'$1T$2'); //reformat for FF
+            dateStr = dateStr.replace(/EDT|EST|CDT|CST|MDT|PDT|PST|UT|GMT/g,''); //remove timezone
+            dateStr = dateStr.replace(/\s*\(\)\s*/,'');                          //remove timezone
+            dateStr = dateStr.replace(/[\-\+][0-9]{2}:?[0-9]{2}$/,'');           //remove timezone
+            dateStr += getTimezoneOffset(dateStr);
+            var d = new Date(dateStr);
+            scope.selectedDate = new Date(
+              d.getFullYear(),
+              d.getMonth(),
+              d.getDate(),
+              d.getHours(),
+              d.getMinutes(),
+              d.getSeconds()
+            );
+          }
+        }
+
+        if (!scope.selectedDate || isNaN(scope.selectedDate.getTime())) { // no predefined date
+          var today = new Date();
+          var year = scope.year || today.getFullYear();
+          var month = scope.month ? (scope.month-1) : today.getMonth();
+          var day = scope.day || today.getDate();
+          var hour = scope.hour || today.getHours();
+          var minute = scope.minute || today.getMinutes();
+          scope.selectedDate = new Date(year, month, day, hour, minute, 0);
+        }
+        scope.inputHour   = scope.selectedDate.getHours();
+        scope.inputMinute = scope.selectedDate.getMinutes();
+
+        // Default to current year and month
+        scope.mv = getMonthView(scope.selectedDate.getFullYear(), scope.selectedDate.getMonth());
+        if (scope.mv.year == scope.selectedDate.getFullYear() && scope.mv.month == scope.selectedDate.getMonth()) {
+          scope.selectedDay = scope.selectedDate.getDate();
+        } else {
+          scope.selectedDay = null;
+        }
+      });
+
+      scope.addMonth = function (amount) {
+        scope.mv = getMonthView(scope.mv.year, scope.mv.month + amount);
+      };
+
+      scope.setDate = function (evt) {
+        var target = angular.element(evt.target)[0];
+        if (target.className.indexOf('selectable')) {
+          scope.updateNgModel(parseInt(target.innerHTML));
+          if (scope.closeOnSelect !== false) {
+            ctrl.closeDatetimePicker();
+          }
+        }
+      };
+
+      scope.updateNgModel = function(day) {
+        day = day ? day : scope.selectedDate.getDate();
+        scope.selectedDate = new Date(
+          scope.mv.year, scope.mv.month, day, scope.inputHour, scope.inputMinute, 0
+        );
+        scope.selectedDay = scope.selectedDate.getDate();
+        if (attrs.ngModel) {
+          //console.log('attrs.ngModel',attrs.ngModel);
+          var elScope = ctrl.triggerEl.scope(), dateValue;
+          if (elScope.$eval(attrs.ngModel) && elScope.$eval(attrs.ngModel).constructor.name === 'Date') {
+            dateValue = new Date(dateFilter(scope.selectedDate, dateFormat));
+          } else {
+            dateValue = dateFilter(scope.selectedDate, dateFormat);
+          }
+          elScope.$eval(attrs.ngModel + '= date', {date: dateValue});
+        }
+      };
+
+      scope.$on('$destroy', ctrl.closeDatetimePicker);
+    };
+
+    return {
+      restrict: 'A',
+      template: tmpl,
+      controller: 'DatetimePickerCtrl',
+      replace: true,
+      scope: {
+        year: '=',
+        month: '=',
+        day: '=',
+        hour: '=',
+        minute: '=',
+        dateOnly: '=',
+        closeOnSelect: '='
+      },
+      link: linkFunc
+    };
+  };
+  datetimePickerPopup.$inject = ['$locale', 'dateFilter'];
+  angular.module('angularjs-datetime-picker').directive('datetimePickerPopup', datetimePickerPopup);
+
+  var datetimePicker  = function($parse, DatetimePicker) {
+    return {
+      // An ngModel is required to get the controller argument
+      require: 'ngModel',
+      link: function(scope, element, attrs, ctrl) {
+        // Attach validation watcher
+        scope.$watch(attrs.ngModel, function(value) {
+          if( !value || value == '' ){
+            return;
+          }
+          // The value has already been cleaned by the above code
+          var date = new Date(value);
+          ctrl.$setValidity('date', !date? false : true);
+          var now = new Date();
+          if( attrs.hasOwnProperty('futureOnly') ){
+            ctrl.$setValidity('future-only', date < now? false : true);
+          }
+        });
+
+        element[0].addEventListener('click', function() {
+          DatetimePicker.open({
+            triggerEl: element[0],
+            dateFormat: attrs.dateFormat,
+            ngModel: attrs.ngModel,
+            year: attrs.year,
+            month: attrs.month,
+            day: attrs.day,
+            hour: attrs.hour,
+            minute: attrs.minute,
+            dateOnly: attrs.dateOnly,
+            futureOnly: attrs.futureOnly,
+            closeOnSelect: attrs.closeOnSelect
+          });
+        });
+      }
+    };
+  };
+  datetimePicker.$inject=['$parse', 'DatetimePicker'];
+  angular.module('angularjs-datetime-picker').directive('datetimePicker', datetimePicker);
+
+})();
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.min.js b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.min.js
new file mode 100644 (file)
index 0000000..bc6c19a
--- /dev/null
@@ -0,0 +1 @@
+!function(){"use strict";angular.module("angularjs-datetime-picker",[]);var e=function(e){"string"==typeof e&&(e=new Date(e));var t=new Date(e.getFullYear(),0,1),a=new Date(e.getFullYear(),6,1),n=Math.max(t.getTimezoneOffset(),a.getTimezoneOffset()),l=e.getTimezoneOffset()<n,r=l?n-60:n,i=r>=0?"-":"+";return i+("0"+r/60).slice(-2)+":"+("0"+r%60).slice(-2)},t=function(e,t,a){var n=a("DatetimePickerCtrl");return{open:function(e){n.openDatetimePicker(e)},close:function(){n.closeDatetimePicker()}}};t.$inject=["$compile","$document","$controller"],angular.module("angularjs-datetime-picker").factory("DatetimePicker",t);var a=function(e,t){var a,n=this,l=function(e){e&&e.remove(),t[0].body.removeEventListener("click",n.closeDatetimePicker)};this.openDatetimePicker=function(n){this.closeDatetimePicker();var l=angular.element("<div datetime-picker-popup ng-cloak></div>");n.dateFormat&&l.attr("date-format",n.dateFormat),n.ngModel&&l.attr("ng-model",n.ngModel),n.year&&l.attr("year",parseInt(n.year)),n.month&&l.attr("month",parseInt(n.month)),n.day&&l.attr("day",parseInt(n.day)),n.hour&&l.attr("hour",parseInt(n.hour)),n.minute&&l.attr("minute",parseInt(n.minute)),(""===n.dateOnly||n.dateOnly===!0)&&l.attr("date-only","true"),"false"===n.closeOnSelect&&l.attr("close-on-select","false");var r=n.triggerEl;n.scope=n.scope||angular.element(r).scope(),a=e(l)(n.scope)[0],a.triggerEl=n.triggerEl,t[0].body.appendChild(a);var i=r.getBoundingClientRect();a.style.position="absolute",a.style.left=i.left+window.scrollX+"px",n.scope.$apply();var o=a.getBoundingClientRect();a.style.top=i.top<300||window.innerHeight-i.bottom>300?i.bottom+window.scrollY+"px":i.top-o.height+window.scrollY+"px",t[0].body.addEventListener("click",this.closeDatetimePicker)},this.closeDatetimePicker=function(e){var a=e&&e.target,n=t[0].querySelector("div[datetime-picker-popup]");e&&a?a.hasAttribute("datetime-picker")||n&&n.contains(a)||l(n):l(n)}};a.$inject=["$compile","$document"],angular.module("angularjs-datetime-picker").controller("DatetimePickerCtrl",a);var n=['<div class="angularjs-datetime-picker">','  <div class="adp-month">','    <button type="button" class="adp-prev" ng-click="addMonth(-1)">&laquo;</button>','    <span title="{{months[mv.month].fullName}}">{{months[mv.month].shortName}}</span> {{mv.year}}','    <button type="button" class="adp-next" ng-click="addMonth(1)">&raquo;</button>',"  </div>",'  <div class="adp-days" ng-click="setDate($event)">','    <div class="adp-day-of-week" ng-repeat="dayOfWeek in ::daysOfWeek" title="{{dayOfWeek.fullName}}">{{::dayOfWeek.firstLetter}}</div>','    <div class="adp-day" ng-repeat="day in mv.leadingDays">{{::day}}</div>','    <div class="adp-day selectable" ng-repeat="day in mv.days" ','      ng-class="{selected: (day == selectedDay)}">{{::day}}</div>','    <div class="adp-day" ng-repeat="day in mv.trailingDays">{{::day}}</div>',"  </div>",'  <div class="adp-days" id="adp-time"> ','    Time : {{("0"+inputHour).slice(-2)}} : {{("0"+inputMinute).slice(-2)}} <br/>','    <label>Hour:</label> <input type="range" min="0" max="23" ng-model="inputHour" ng-change="updateNgModel()" />','    <label>Min.:</label> <input type="range" min="0" max="59" ng-model="inputMinute"  ng-change="updateNgModel()"/> ',"  </div> ","</div>"].join("\n"),l=function(t,a){var l,r,i,o,c=function(){l=[],r=[],i=[],o=0;for(var e=1;31>=e;e++)l.push(e);for(var e=0;12>e;e++)r.push({fullName:t.DATETIME_FORMATS.MONTH[e],shortName:t.DATETIME_FORMATS.SHORTMONTH[e]});for(var e=0;7>e;e++){var a=t.DATETIME_FORMATS.DAY[(e+o)%7];i.push({fullName:a,firstLetter:a.substr(0,2)})}o=t.DATETIME_FORMATS.FIRSTDAYOFWEEK||0},d=function(e,t){t>11?e++:0>t&&e--,t=(t+12)%12;var a=new Date(e,t,1),n=new Date(e,t+1,0),r=new Date(e,t,0),i=n.getDate(),c=r.getDate(),d=a.getDay(),s=(d-o+7)%7||7,u=l.slice(0,42-(s+i));return u.length>7&&(u=u.slice(0,u.length-7)),{year:e,month:t,days:l.slice(0,i),leadingDays:l.slice(-s-(31-c),c),trailingDays:u}},s=function(t,n,l,o){c();var s=l.dateFormat||"short";t.months=r,t.daysOfWeek=i,t.inputHour,t.inputMinute,t.dateOnly===!0&&(n[0].querySelector("#adp-time").style.display="none"),t.$applyAsync(function(){if(o.triggerEl=angular.element(n[0].triggerEl),l.ngModel){var a=""+o.triggerEl.scope().$eval(l.ngModel);if(a){a.match(/[0-9]{2}:/)||(a+=" 00:00:00"),a=a.replace(/([0-9]{2}-[0-9]{2})-([0-9]{4})/,"$2-$1"),a=a.replace(/([\/-][0-9]{2,4})\ ([0-9]{2}\:[0-9]{2}\:)/,"$1T$2"),a=a.replace(/EDT|EST|CDT|CST|MDT|PDT|PST|UT|GMT/g,""),a=a.replace(/\s*\(\)\s*/,""),a=a.replace(/[\-\+][0-9]{2}:?[0-9]{2}$/,""),a+=e(a);var r=new Date(a);t.selectedDate=new Date(r.getFullYear(),r.getMonth(),r.getDate(),r.getHours(),r.getMinutes(),r.getSeconds())}}if(!t.selectedDate||isNaN(t.selectedDate.getTime())){var i=new Date,c=t.year||i.getFullYear(),s=t.month?t.month-1:i.getMonth(),u=t.day||i.getDate(),m=t.hour||i.getHours(),g=t.minute||i.getMinutes();t.selectedDate=new Date(c,s,u,m,g,0)}t.inputHour=t.selectedDate.getHours(),t.inputMinute=t.selectedDate.getMinutes(),t.mv=d(t.selectedDate.getFullYear(),t.selectedDate.getMonth()),t.selectedDay=t.mv.year==t.selectedDate.getFullYear()&&t.mv.month==t.selectedDate.getMonth()?t.selectedDate.getDate():null}),t.addMonth=function(e){t.mv=d(t.mv.year,t.mv.month+e)},t.setDate=function(e){var a=angular.element(e.target)[0];a.className.indexOf("selectable")&&(t.updateNgModel(parseInt(a.innerHTML)),t.closeOnSelect!==!1&&o.closeDatetimePicker())},t.updateNgModel=function(e){if(e=e?e:t.selectedDate.getDate(),t.selectedDate=new Date(t.mv.year,t.mv.month,e,t.inputHour,t.inputMinute,0),t.selectedDay=t.selectedDate.getDate(),l.ngModel){var n,r=o.triggerEl.scope();n=r.$eval(l.ngModel)&&"Date"===r.$eval(l.ngModel).constructor.name?new Date(a(t.selectedDate,s)):a(t.selectedDate,s),r.$eval(l.ngModel+"= date",{date:n})}},t.$on("$destroy",o.closeDatetimePicker)};return{restrict:"A",template:n,controller:"DatetimePickerCtrl",replace:!0,scope:{year:"=",month:"=",day:"=",hour:"=",minute:"=",dateOnly:"=",closeOnSelect:"="},link:s}};l.$inject=["$locale","dateFilter"],angular.module("angularjs-datetime-picker").directive("datetimePickerPopup",l);var r=function(e,t){return{require:"ngModel",link:function(e,a,n,l){e.$watch(n.ngModel,function(e){if(e&&""!=e){var t=new Date(e);l.$setValidity("date",t?!0:!1);var a=new Date;n.hasOwnProperty("futureOnly")&&l.$setValidity("future-only",a>t?!1:!0)}}),a[0].addEventListener("click",function(){t.open({triggerEl:a[0],dateFormat:n.dateFormat,ngModel:n.ngModel,year:n.year,month:n.month,day:n.day,hour:n.hour,minute:n.minute,dateOnly:n.dateOnly,futureOnly:n.futureOnly,closeOnSelect:n.closeOnSelect})})}}};r.$inject=["$parse","DatetimePicker"],angular.module("angularjs-datetime-picker").directive("datetimePicker",r)}();
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/bootstrap-3.3.7/package.json b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/bootstrap-3.3.7/package.json
new file mode 100644 (file)
index 0000000..fe4b31d
--- /dev/null
@@ -0,0 +1,89 @@
+{
+  "name": "bootstrap",
+  "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
+  "version": "3.3.7",
+  "keywords": [
+    "css",
+    "less",
+    "mobile-first",
+    "responsive",
+    "front-end",
+    "framework",
+    "web"
+  ],
+  "homepage": "http://getbootstrap.com",
+  "author": "Twitter, Inc.",
+  "scripts": {
+    "change-version": "node grunt/change-version.js",
+    "update-shrinkwrap": "npm shrinkwrap --dev && shx mv ./npm-shrinkwrap.json ./grunt/npm-shrinkwrap.json",
+    "test": "grunt test"
+  },
+  "style": "dist/css/bootstrap.css",
+  "less": "less/bootstrap.less",
+  "main": "./dist/js/npm",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/twbs/bootstrap.git"
+  },
+  "bugs": {
+    "url": "https://github.com/twbs/bootstrap/issues"
+  },
+  "license": "MIT",
+  "devDependencies": {
+    "btoa": "~1.1.2",
+    "glob": "~7.0.3",
+    "grunt": "~1.0.1",
+    "grunt-autoprefixer": "~3.0.4",
+    "grunt-contrib-clean": "~1.0.0",
+    "grunt-contrib-compress": "~1.3.0",
+    "grunt-contrib-concat": "~1.0.0",
+    "grunt-contrib-connect": "~1.0.0",
+    "grunt-contrib-copy": "~1.0.0",
+    "grunt-contrib-csslint": "~1.0.0",
+    "grunt-contrib-cssmin": "~1.0.0",
+    "grunt-contrib-htmlmin": "~1.5.0",
+    "grunt-contrib-jshint": "~1.0.0",
+    "grunt-contrib-less": "~1.3.0",
+    "grunt-contrib-pug": "~1.0.0",
+    "grunt-contrib-qunit": "~0.7.0",
+    "grunt-contrib-uglify": "~1.0.0",
+    "grunt-contrib-watch": "~1.0.0",
+    "grunt-csscomb": "~3.1.0",
+    "grunt-exec": "~1.0.0",
+    "grunt-html": "~8.0.1",
+    "grunt-jekyll": "~0.4.4",
+    "grunt-jscs": "~3.0.1",
+    "grunt-saucelabs": "~9.0.0",
+    "load-grunt-tasks": "~3.5.0",
+    "markdown-it": "^7.0.0",
+    "shelljs": "^0.7.0",
+    "shx": "^0.1.2",
+    "time-grunt": "^1.3.0"
+  },
+  "engines": {
+    "node": ">=0.10.1"
+  },
+  "files": [
+    "dist",
+    "fonts",
+    "grunt",
+    "js/*.js",
+    "less/**/*.less",
+    "Gruntfile.js",
+    "LICENSE"
+  ],
+  "jspm": {
+    "main": "js/bootstrap",
+    "shim": {
+      "js/bootstrap": {
+        "deps": "jquery",
+        "exports": "$"
+      }
+    },
+    "files": [
+      "css",
+      "fonts",
+      "js"
+    ]
+  }
+}
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/jquery.min.js b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/jquery.min.js
new file mode 100644 (file)
index 0000000..4d9b3a2
--- /dev/null
@@ -0,0 +1,2 @@
+/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-csv/build/ng-csv.js b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-csv/build/ng-csv.js
new file mode 100644 (file)
index 0000000..80432ec
--- /dev/null
@@ -0,0 +1,319 @@
+(function(window, document) {
+
+// Create all modules and define dependencies to make sure they exist
+// and are loaded in the correct order to satisfy dependency injection
+// before all nested files are concatenated by Grunt
+
+// Config
+angular.module('ngCsv.config', []).
+  value('ngCsv.config', {
+      debug: true
+  }).
+  config(['$compileProvider', function($compileProvider){
+    if (angular.isDefined($compileProvider.urlSanitizationWhitelist)) {
+      $compileProvider.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/);
+    } else {
+      $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/);
+    }
+  }]);
+
+// Modules
+angular.module('ngCsv.directives', ['ngCsv.services']);
+angular.module('ngCsv.services', []);
+angular.module('ngCsv',
+    [
+        'ngCsv.config',
+        'ngCsv.services',
+        'ngCsv.directives',
+        'ngSanitize'
+    ]);
+
+// Common.js package manager support (e.g. ComponentJS, WebPack)
+if (typeof module !== 'undefined' && typeof exports !== 'undefined' && module.exports === exports) {
+  module.exports = 'ngCsv';
+}
+/**
+ * Created by asafdav on 15/05/14.
+ */
+angular.module('ngCsv.services').
+  service('CSV', ['$q', function ($q) {
+
+    var EOL = '\r\n';
+    var BOM = "\ufeff";
+
+    var specialChars = {
+      '\\t': '\t',
+      '\\b': '\b',
+      '\\v': '\v',
+      '\\f': '\f',
+      '\\r': '\r'
+    };
+
+    /**
+     * Stringify one field
+     * @param data
+     * @param options
+     * @returns {*}
+     */
+    this.stringifyField = function (data, options) {
+      if (options.decimalSep === 'locale' && this.isFloat(data)) {
+        return data.toLocaleString();
+      }
+
+      if (options.decimalSep !== '.' && this.isFloat(data)) {
+        return data.toString().replace('.', options.decimalSep);
+      }
+
+      if (typeof data === 'string') {
+        data = data.replace(/"/g, '""'); // Escape double qoutes
+
+        if (options.quoteStrings || data.indexOf(',') > -1 || data.indexOf('\n') > -1 || data.indexOf('\r') > -1) {
+            data = options.txtDelim + data + options.txtDelim;
+        }
+
+        return data;
+      }
+
+      if (typeof data === 'boolean') {
+        return data ? 'TRUE' : 'FALSE';
+      }
+
+      return data;
+    };
+
+    /**
+     * Helper function to check if input is float
+     * @param input
+     * @returns {boolean}
+     */
+    this.isFloat = function (input) {
+      return +input === input && (!isFinite(input) || Boolean(input % 1));
+    };
+
+    /**
+     * Creates a csv from a data array
+     * @param data
+     * @param options
+     *  * header - Provide the first row (optional)
+     *  * fieldSep - Field separator, default: ',',
+     *  * addByteOrderMarker - Add Byte order mark, default(false)
+     * @param callback
+     */
+    this.stringify = function (data, options) {
+      var def = $q.defer();
+
+      var that = this;
+      var csv = "";
+      var csvContent = "";
+
+      var dataPromise = $q.when(data).then(function (responseData) {
+        //responseData = angular.copy(responseData);//moved to row creation
+        // Check if there's a provided header array
+        if (angular.isDefined(options.header) && options.header) {
+          var encodingArray, headerString;
+
+          encodingArray = [];
+          angular.forEach(options.header, function (title, key) {
+            this.push(that.stringifyField(title, options));
+          }, encodingArray);
+
+          headerString = encodingArray.join(options.fieldSep ? options.fieldSep : ",");
+          csvContent += headerString + EOL;
+        }
+
+        var arrData = [];
+
+        if (angular.isArray(responseData)) {
+          arrData = responseData;
+        }
+        else if (angular.isFunction(responseData)) {
+          arrData = responseData();
+        }
+
+        // Check if using keys as labels
+        if (angular.isDefined(options.label) && options.label && typeof options.label === 'boolean') {
+            var labelArray, labelString;
+
+            labelArray = [];
+            angular.forEach(arrData[0], function(value, label) {
+                this.push(that.stringifyField(label, options));
+            }, labelArray);
+            labelString = labelArray.join(options.fieldSep ? options.fieldSep : ",");
+            csvContent += labelString + EOL;
+        }
+
+        angular.forEach(arrData, function (oldRow, index) {
+          var row = angular.copy(arrData[index]);
+          var dataString, infoArray;
+
+          infoArray = [];
+
+          var iterator = !!options.columnOrder ? options.columnOrder : row;
+          angular.forEach(iterator, function (field, key) {
+            var val = !!options.columnOrder ? row[field] : field;
+            this.push(that.stringifyField(val, options));
+          }, infoArray);
+
+          dataString = infoArray.join(options.fieldSep ? options.fieldSep : ",");
+          csvContent += index < arrData.length ? dataString + EOL : dataString;
+        });
+
+        // Add BOM if needed
+        if (options.addByteOrderMarker) {
+          csv += BOM;
+        }
+
+        // Append the content and resolve.
+        csv += csvContent;
+        def.resolve(csv);
+      });
+
+      if (typeof dataPromise['catch'] === 'function') {
+        dataPromise['catch'](function (err) {
+          def.reject(err);
+        });
+      }
+
+      return def.promise;
+    };
+
+    /**
+     * Helper function to check if input is really a special character
+     * @param input
+     * @returns {boolean}
+     */
+    this.isSpecialChar = function(input){
+      return specialChars[input] !== undefined;
+    };
+
+    /**
+     * Helper function to get what the special character was supposed to be
+     * since Angular escapes the first backslash
+     * @param input
+     * @returns {special character string}
+     */
+    this.getSpecialChar = function (input) {
+      return specialChars[input];
+    };
+
+
+  }]);
+/**
+ * ng-csv module
+ * Export Javascript's arrays to csv files from the browser
+ *
+ * Author: asafdav - https://github.com/asafdav
+ */
+angular.module('ngCsv.directives').
+  directive('ngCsv', ['$parse', '$q', 'CSV', '$document', '$timeout', function ($parse, $q, CSV, $document, $timeout) {
+    return {
+      restrict: 'AC',
+      scope: {
+        data: '&ngCsv',
+        filename: '@filename',
+        header: '&csvHeader',
+        columnOrder: '&csvColumnOrder',
+        txtDelim: '@textDelimiter',
+        decimalSep: '@decimalSeparator',
+        quoteStrings: '@quoteStrings',
+        fieldSep: '@fieldSeparator',
+        lazyLoad: '@lazyLoad',
+        addByteOrderMarker: "@addBom",
+        ngClick: '&',
+        charset: '@charset',
+        label: '&csvLabel'
+      },
+      controller: [
+        '$scope',
+        '$element',
+        '$attrs',
+        '$transclude',
+        function ($scope, $element, $attrs, $transclude) {
+          $scope.csv = '';
+
+          if (!angular.isDefined($scope.lazyLoad) || $scope.lazyLoad != "true") {
+            if (angular.isArray($scope.data)) {
+              $scope.$watch("data", function (newValue) {
+                $scope.buildCSV();
+              }, true);
+            }
+          }
+
+          $scope.getFilename = function () {
+            return $scope.filename || 'download.csv';
+          };
+
+          function getBuildCsvOptions() {
+            var options = {
+              txtDelim: $scope.txtDelim ? $scope.txtDelim : '"',
+              decimalSep: $scope.decimalSep ? $scope.decimalSep : '.',
+              quoteStrings: $scope.quoteStrings,
+              addByteOrderMarker: $scope.addByteOrderMarker
+            };
+            if (angular.isDefined($attrs.csvHeader)) options.header = $scope.$eval($scope.header);
+            if (angular.isDefined($attrs.csvColumnOrder)) options.columnOrder = $scope.$eval($scope.columnOrder);
+            if (angular.isDefined($attrs.csvLabel)) options.label = $scope.$eval($scope.label);
+
+            options.fieldSep = $scope.fieldSep ? $scope.fieldSep : ",";
+
+            // Replaces any badly formatted special character string with correct special character
+            options.fieldSep = CSV.isSpecialChar(options.fieldSep) ? CSV.getSpecialChar(options.fieldSep) : options.fieldSep;
+
+            return options;
+          }
+
+          /**
+           * Creates the CSV and updates the scope
+           * @returns {*}
+           */
+          $scope.buildCSV = function () {
+            var deferred = $q.defer();
+
+            $element.addClass($attrs.ngCsvLoadingClass || 'ng-csv-loading');
+
+            CSV.stringify($scope.data(), getBuildCsvOptions()).then(function (csv) {
+              $scope.csv = csv;
+              $element.removeClass($attrs.ngCsvLoadingClass || 'ng-csv-loading');
+              deferred.resolve(csv);
+            });
+            $scope.$apply(); // Old angular support
+
+            return deferred.promise;
+          };
+        }
+      ],
+      link: function (scope, element, attrs) {
+        function doClick() {
+          var charset = scope.charset || "utf-8";
+          var blob = new Blob([scope.csv], {
+            type: "text/csv;charset="+ charset + ";"
+          });
+
+          if (window.navigator.msSaveOrOpenBlob) {
+            navigator.msSaveBlob(blob, scope.getFilename());
+          } else {
+
+            var downloadContainer = angular.element('<div data-tap-disabled="true"><a></a></div>');
+            var downloadLink = angular.element(downloadContainer.children()[0]);
+            downloadLink.attr('href', window.URL.createObjectURL(blob));
+            downloadLink.attr('download', scope.getFilename());
+            downloadLink.attr('target', '_blank');
+
+            $document.find('body').append(downloadContainer);
+            $timeout(function () {
+              downloadLink[0].click();
+              downloadLink.remove();
+            }, null);
+          }
+        }
+
+        element.bind('click', function (e) {
+          scope.buildCSV().then(function (csv) {
+            doClick();
+          });
+          scope.$apply();
+        });
+      }
+    };
+  }]);
+})(window, document);
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-csv/build/ng-csv.min.js b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-csv/build/ng-csv.min.js
new file mode 100644 (file)
index 0000000..94dcd7f
--- /dev/null
@@ -0,0 +1,2 @@
+/*! ng-csv 10-10-2015 */
+!function(a){angular.module("ngCsv.config",[]).value("ngCsv.config",{debug:!0}).config(["$compileProvider",function(a){angular.isDefined(a.urlSanitizationWhitelist)?a.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/):a.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)}]),angular.module("ngCsv.directives",["ngCsv.services"]),angular.module("ngCsv.services",[]),angular.module("ngCsv",["ngCsv.config","ngCsv.services","ngCsv.directives","ngSanitize"]),"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports="ngCsv"),angular.module("ngCsv.services").service("CSV",["$q",function(a){var b="\r\n",c="",d={"\\t":"   ","\\b":"\b","\\v":"\v","\\f":"\f","\\r":"\r"};this.stringifyField=function(a,b){return"locale"===b.decimalSep&&this.isFloat(a)?a.toLocaleString():"."!==b.decimalSep&&this.isFloat(a)?a.toString().replace(".",b.decimalSep):"string"==typeof a?(a=a.replace(/"/g,'""'),(b.quoteStrings||a.indexOf(",")>-1||a.indexOf("\n")>-1||a.indexOf("\r")>-1)&&(a=b.txtDelim+a+b.txtDelim),a):"boolean"==typeof a?a?"TRUE":"FALSE":a},this.isFloat=function(a){return+a===a&&(!isFinite(a)||Boolean(a%1))},this.stringify=function(d,e){var f=a.defer(),g=this,h="",i="",j=a.when(d).then(function(a){if(angular.isDefined(e.header)&&e.header){var d,j;d=[],angular.forEach(e.header,function(a){this.push(g.stringifyField(a,e))},d),j=d.join(e.fieldSep?e.fieldSep:","),i+=j+b}var k=[];if(angular.isArray(a)?k=a:angular.isFunction(a)&&(k=a()),angular.isDefined(e.label)&&e.label&&"boolean"==typeof e.label){var l,m;l=[],angular.forEach(k[0],function(a,b){this.push(g.stringifyField(b,e))},l),m=l.join(e.fieldSep?e.fieldSep:","),i+=m+b}angular.forEach(k,function(a,c){var d,f,h=angular.copy(k[c]);f=[];var j=e.columnOrder?e.columnOrder:h;angular.forEach(j,function(a){var b=e.columnOrder?h[a]:a;this.push(g.stringifyField(b,e))},f),d=f.join(e.fieldSep?e.fieldSep:","),i+=c<k.length?d+b:d}),e.addByteOrderMarker&&(h+=c),h+=i,f.resolve(h)});return"function"==typeof j["catch"]&&j["catch"](function(a){f.reject(a)}),f.promise},this.isSpecialChar=function(a){return void 0!==d[a]},this.getSpecialChar=function(a){return d[a]}}]),angular.module("ngCsv.directives").directive("ngCsv",["$parse","$q","CSV","$document","$timeout",function(b,c,d,e,f){return{restrict:"AC",scope:{data:"&ngCsv",filename:"@filename",header:"&csvHeader",columnOrder:"&csvColumnOrder",txtDelim:"@textDelimiter",decimalSep:"@decimalSeparator",quoteStrings:"@quoteStrings",fieldSep:"@fieldSeparator",lazyLoad:"@lazyLoad",addByteOrderMarker:"@addBom",ngClick:"&",charset:"@charset",label:"&csvLabel"},controller:["$scope","$element","$attrs","$transclude",function(a,b,e){function f(){var b={txtDelim:a.txtDelim?a.txtDelim:'"',decimalSep:a.decimalSep?a.decimalSep:".",quoteStrings:a.quoteStrings,addByteOrderMarker:a.addByteOrderMarker};return angular.isDefined(e.csvHeader)&&(b.header=a.$eval(a.header)),angular.isDefined(e.csvColumnOrder)&&(b.columnOrder=a.$eval(a.columnOrder)),angular.isDefined(e.csvLabel)&&(b.label=a.$eval(a.label)),b.fieldSep=a.fieldSep?a.fieldSep:",",b.fieldSep=d.isSpecialChar(b.fieldSep)?d.getSpecialChar(b.fieldSep):b.fieldSep,b}a.csv="",angular.isDefined(a.lazyLoad)&&"true"==a.lazyLoad||angular.isArray(a.data)&&a.$watch("data",function(){a.buildCSV()},!0),a.getFilename=function(){return a.filename||"download.csv"},a.buildCSV=function(){var g=c.defer();return b.addClass(e.ngCsvLoadingClass||"ng-csv-loading"),d.stringify(a.data(),f()).then(function(c){a.csv=c,b.removeClass(e.ngCsvLoadingClass||"ng-csv-loading"),g.resolve(c)}),a.$apply(),g.promise}}],link:function(b,c){function d(){var c=b.charset||"utf-8",d=new Blob([b.csv],{type:"text/csv;charset="+c+";"});if(a.navigator.msSaveOrOpenBlob)navigator.msSaveBlob(d,b.getFilename());else{var g=angular.element('<div data-tap-disabled="true"><a></a></div>'),h=angular.element(g.children()[0]);h.attr("href",a.URL.createObjectURL(d)),h.attr("download",b.getFilename()),h.attr("target","_blank"),e.find("body").append(g),f(function(){h[0].click(),h.remove()},null)}}c.bind("click",function(){b.buildCSV().then(function(){d()}),b.$apply()})}}}])}(window,document);
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.min.js b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.min.js
new file mode 100644 (file)
index 0000000..fa1a020
--- /dev/null
@@ -0,0 +1 @@
+!function(){"use strict";angular.module("ng-ip-address",[]).directive("ngIpAddress",function(){return{restrict:"A",require:"?ngModel",scope:{config:"=?ngIpConfig"},link:function(e,i,n,r){function t(e){return!isNaN(parseFloat(e))&&isFinite(e)}if(r){var l=!1,c=!1,s=new RegExp("^0","g"),a=new RegExp("^\\.","g"),o=new RegExp("\\.\\.+","g"),h=new RegExp(":","g"),u=new RegExp("^:","g"),p=0,w=!1;e.$watchCollection("config",function(e){e?(c="boolean"==typeof e.requirePort&&e.requirePort,l=c||"boolean"==typeof e.allowPort&&e.allowPort):(l=!1,c=!1),l||!r.$viewValue?r.$parsers[0](r.$viewValue):r.$setViewValue(r.$viewValue.replace(h,""))}),i.bind("keydown",function(e){17!==e.which&&91!==e.which||(w=!0)}),i.bind("keyup",function(e){17!==e.which&&91!==e.which||(w=!1)}),i.bind("keypress",function(e){(e.which<46&&0!==e.which&&8!==e.which&&13!==e.which||47===e.which||58===e.which&&!l||e.which>58&&(!w||99!==e.which&&118!==e.which&&120!==e.which))&&e.preventDefault()}),r.$parsers.push(function(e){if(!e)return r.$setValidity("ipAddress",!0),e;p=i[0].selectionStart;var n=!0,w=null,g=(e=(e=e.replace(a,"")).replace(o,".")).split("."),f=g.length;f<4?n=!1:f>4&&(g.length=4,f=4);for(var d=0;d<f;d++){var $=g[d];if(l)if(d<3)$=$.replace(h,"");else if(-1!==($=$.replace(u,"")).indexOf(":")){var v=$.split(":");$=v[0],(!(w=v[1].replace(s,"").substring(0,5))||!t($)||w>65535)&&(n=!1)}else c&&(n=!1);$.length>1?(!t($=$.replace(s,"").substring(0,3))||$>255)&&(n=!1):$||(n=!1),g[d]=$}return e=g.join("."),null!==w&&(e+=":"+w),r.$setValidity("ipAddress",n),r.$setViewValue(e),r.$render(),i[0].setSelectionRange(p,p),e})}}}})}();
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.vanilla.min.js b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.vanilla.min.js
new file mode 100644 (file)
index 0000000..5c1f0dd
--- /dev/null
@@ -0,0 +1 @@
+!function(){"use strict";angular.module("ng-ip-address",[]).directive("ngIpAddress",function(){return{restrict:"A",require:"?ngModel",link:function(e,i,n,r){function t(e){return!isNaN(parseFloat(e))&&isFinite(e)}if(r){var h=new RegExp("^0","g"),c=new RegExp("^\\.","g"),s=new RegExp("\\.\\.+","g"),u=0,a=!1;i.bind("keydown",function(e){17!==e.which&&91!==e.which||(a=!0)}),i.bind("keyup",function(e){17!==e.which&&91!==e.which||(a=!1)}),i.bind("keypress",function(e){(e.which<46&&0!==e.which&&8!==e.which&&13!==e.which||47===e.which||e.which>57&&(!a||99!==e.which&&118!==e.which&&120!==e.which))&&e.preventDefault()}),r.$parsers.push(function(e){if(!e)return r.$setValidity("ipAddress",!0),e;u=i[0].selectionStart;var n=!0,a=(e=(e=e.replace(c,"")).replace(s,".")).split("."),d=a.length;d<4?n=!1:d>4&&(a.length=4,d=4);for(var l=0;l<d;l++){var w=a[l];w.length>1?(!t(w=w.replace(h,"").substring(0,3))||w>255)&&(n=!1):w||(n=!1),a[l]=w}return e=a.join("."),r.$setValidity("ipAddress",n),r.$setViewValue(e),r.$render(),i[0].setSelectionRange(u,u),e})}}}})}();
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/package.json b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/package.json
new file mode 100644 (file)
index 0000000..87f59cb
--- /dev/null
@@ -0,0 +1,67 @@
+{
+  "_from": "ng-ip-address",
+  "_id": "ng-ip-address@1.1.12",
+  "_inBundle": false,
+  "_integrity": "sha1-reynz2xY/ZSD8FLv30DF+2UMYrg=",
+  "_location": "/ng-ip-address",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "tag",
+    "registry": true,
+    "raw": "ng-ip-address",
+    "name": "ng-ip-address",
+    "escapedName": "ng-ip-address",
+    "rawSpec": "",
+    "saveSpec": null,
+    "fetchSpec": "latest"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/ng-ip-address/-/ng-ip-address-1.1.12.tgz",
+  "_shasum": "adeca7cf6c58fd9483f052efdf40c5fb650c62b8",
+  "_spec": "ng-ip-address",
+  "_where": "D:\\routing",
+  "author": {
+    "name": "Scott Gullen"
+  },
+  "bugs": {
+    "url": "https://github.com/CautemocSg/ng-ip-address/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "AngularJS directive that will validate an IP address and impose relevant character and structure limits",
+  "devDependencies": {
+    "gulp": "^3.9.1",
+    "gulp-rename": "^1.2.2",
+    "gulp-uglify": "^3.0.0",
+    "jasmine-core": "^2.6.4",
+    "karma": "^1.7.0",
+    "karma-jasmine": "^1.1.0",
+    "karma-phantomjs-launcher": "^1.0.4",
+    "phantomjs-prebuilt": "^2.1.14"
+  },
+  "homepage": "https://github.com/CautemocSg/ng-ip-address#readme",
+  "keywords": [
+    "angular",
+    "angularjs",
+    "directive",
+    "ip address",
+    "form",
+    "input",
+    "validation"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "ng-ip-address",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/CautemocSg/ng-ip-address.git"
+  },
+  "scripts": {
+    "build": "gulp default",
+    "test": "gulp test"
+  },
+  "version": "1.1.12"
+}
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/node_modules/tether.min.js b/SdncReports/SdncReportsApi/src/main/webapp/node_modules/tether.min.js
new file mode 100644 (file)
index 0000000..bd608c0
--- /dev/null
@@ -0,0 +1 @@
+!function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e(require,exports,module):t.Tether=e()}(this,function(t,e,o){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t){var e=t.getBoundingClientRect(),o={};for(var i in e)o[i]=e[i];if(t.ownerDocument!==document){var r=t.ownerDocument.defaultView.frameElement;if(r){var s=n(r);o.top+=s.top,o.bottom+=s.top,o.left+=s.left,o.right+=s.left}}return o}function r(t){var e=getComputedStyle(t)||{},o=e.position,i=[];if("fixed"===o)return[t];for(var n=t;(n=n.parentNode)&&n&&1===n.nodeType;){var r=void 0;try{r=getComputedStyle(n)}catch(s){}if("undefined"==typeof r||null===r)return i.push(n),i;var a=r,f=a.overflow,l=a.overflowX,h=a.overflowY;/(auto|scroll|overlay)/.test(f+h+l)&&("absolute"!==o||["relative","absolute","fixed"].indexOf(r.position)>=0)&&i.push(n)}return i.push(t.ownerDocument.body),t.ownerDocument!==document&&i.push(t.ownerDocument.defaultView),i}function s(){A&&document.body.removeChild(A),A=null}function a(t){var e=void 0;t===document?(e=document,t=document.documentElement):e=t.ownerDocument;var o=e.documentElement,i=n(t),r=P();return i.top-=r.top,i.left-=r.left,"undefined"==typeof i.width&&(i.width=document.body.scrollWidth-i.left-i.right),"undefined"==typeof i.height&&(i.height=document.body.scrollHeight-i.top-i.bottom),i.top=i.top-o.clientTop,i.left=i.left-o.clientLeft,i.right=e.body.clientWidth-i.width-i.left,i.bottom=e.body.clientHeight-i.height-i.top,i}function f(t){return t.offsetParent||document.documentElement}function l(){if(M)return M;var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");h(e.style,{position:"absolute",top:0,left:0,pointerEvents:"none",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),e.appendChild(t),document.body.appendChild(e);var o=t.offsetWidth;e.style.overflow="scroll";var i=t.offsetWidth;o===i&&(i=e.clientWidth),document.body.removeChild(e);var n=o-i;return M={width:n,height:n}}function h(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=[];return Array.prototype.push.apply(e,arguments),e.slice(1).forEach(function(e){if(e)for(var o in e)({}).hasOwnProperty.call(e,o)&&(t[o]=e[o])}),t}function d(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.remove(e)});else{var o=new RegExp("(^| )"+e.split(" ").join("|")+"( |$)","gi"),i=c(t).replace(o," ");g(t,i)}}function p(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.add(e)});else{d(t,e);var o=c(t)+(" "+e);g(t,o)}}function u(t,e){if("undefined"!=typeof t.classList)return t.classList.contains(e);var o=c(t);return new RegExp("(^| )"+e+"( |$)","gi").test(o)}function c(t){return t.className instanceof t.ownerDocument.defaultView.SVGAnimatedString?t.className.baseVal:t.className}function g(t,e){t.setAttribute("class",e)}function m(t,e,o){o.forEach(function(o){e.indexOf(o)===-1&&u(t,o)&&d(t,o)}),e.forEach(function(e){u(t,e)||p(t,e)})}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function y(t,e){var o=arguments.length<=2||void 0===arguments[2]?1:arguments[2];return t+o>=e&&e>=t-o}function b(){return"object"==typeof performance&&"function"==typeof performance.now?performance.now():+new Date}function w(){for(var t={top:0,left:0},e=arguments.length,o=Array(e),i=0;i<e;i++)o[i]=arguments[i];return o.forEach(function(e){var o=e.top,i=e.left;"string"==typeof o&&(o=parseFloat(o,10)),"string"==typeof i&&(i=parseFloat(i,10)),t.top+=o,t.left+=i}),t}function C(t,e){return"string"==typeof t.left&&t.left.indexOf("%")!==-1&&(t.left=parseFloat(t.left,10)/100*e.width),"string"==typeof t.top&&t.top.indexOf("%")!==-1&&(t.top=parseFloat(t.top,10)/100*e.height),t}function O(t,e){return"scrollParent"===e?e=t.scrollParents[0]:"window"===e&&(e=[pageXOffset,pageYOffset,innerWidth+pageXOffset,innerHeight+pageYOffset]),e===document&&(e=e.documentElement),"undefined"!=typeof e.nodeType&&!function(){var t=e,o=a(e),i=o,n=getComputedStyle(e);if(e=[i.left,i.top,o.width+i.left,o.height+i.top],t.ownerDocument!==document){var r=t.ownerDocument.defaultView;e[0]+=r.pageXOffset,e[1]+=r.pageYOffset,e[2]+=r.pageXOffset,e[3]+=r.pageYOffset}G.forEach(function(t,o){t=t[0].toUpperCase()+t.substr(1),"Top"===t||"Left"===t?e[o]+=parseFloat(n["border"+t+"Width"]):e[o]-=parseFloat(n["border"+t+"Width"])})}(),e}var E=function(){function t(t,e){for(var o=0;o<e.length;o++){var i=e[o];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,o,i){return o&&t(e.prototype,o),i&&t(e,i),e}}(),x=void 0;"undefined"==typeof x&&(x={modules:[]});var A=null,T=function(){var t=0;return function(){return++t}}(),S={},P=function(){var t=A;t&&document.body.contains(t)||(t=document.createElement("div"),t.setAttribute("data-tether-id",T()),h(t.style,{top:0,left:0,position:"absolute"}),document.body.appendChild(t),A=t);var e=t.getAttribute("data-tether-id");return"undefined"==typeof S[e]&&(S[e]=n(t),k(function(){delete S[e]})),S[e]},M=null,W=[],k=function(t){W.push(t)},_=function(){for(var t=void 0;t=W.pop();)t()},B=function(){function t(){i(this,t)}return E(t,[{key:"on",value:function(t,e,o){var i=!(arguments.length<=3||void 0===arguments[3])&&arguments[3];"undefined"==typeof this.bindings&&(this.bindings={}),"undefined"==typeof this.bindings[t]&&(this.bindings[t]=[]),this.bindings[t].push({handler:e,ctx:o,once:i})}},{key:"once",value:function(t,e,o){this.on(t,e,o,!0)}},{key:"off",value:function(t,e){if("undefined"!=typeof this.bindings&&"undefined"!=typeof this.bindings[t])if("undefined"==typeof e)delete this.bindings[t];else for(var o=0;o<this.bindings[t].length;)this.bindings[t][o].handler===e?this.bindings[t].splice(o,1):++o}},{key:"trigger",value:function(t){if("undefined"!=typeof this.bindings&&this.bindings[t]){for(var e=0,o=arguments.length,i=Array(o>1?o-1:0),n=1;n<o;n++)i[n-1]=arguments[n];for(;e<this.bindings[t].length;){var r=this.bindings[t][e],s=r.handler,a=r.ctx,f=r.once,l=a;"undefined"==typeof l&&(l=this),s.apply(l,i),f?this.bindings[t].splice(e,1):++e}}}}]),t}();x.Utils={getActualBoundingClientRect:n,getScrollParents:r,getBounds:a,getOffsetParent:f,extend:h,addClass:p,removeClass:d,hasClass:u,updateClasses:m,defer:k,flush:_,uniqueId:T,Evented:B,getScrollBarSize:l,removeUtilElements:s};var j=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),E=function(){function t(t,e){for(var o=0;o<e.length;o++){var i=e[o];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,o,i){return o&&t(e.prototype,o),i&&t(e,i),e}}(),z=function(t,e,o){for(var i=!0;i;){var n=t,r=e,s=o;i=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,r);if(void 0!==a){if("value"in a)return a.value;var f=a.get;if(void 0===f)return;return f.call(s)}var l=Object.getPrototypeOf(n);if(null===l)return;t=l,e=r,o=s,i=!0,a=l=void 0}};if("undefined"==typeof x)throw new Error("You must include the utils.js file before tether.js");var Y=x.Utils,r=Y.getScrollParents,a=Y.getBounds,f=Y.getOffsetParent,h=Y.extend,p=Y.addClass,d=Y.removeClass,m=Y.updateClasses,k=Y.defer,_=Y.flush,l=Y.getScrollBarSize,s=Y.removeUtilElements,L=function(){if("undefined"==typeof document)return"";for(var t=document.createElement("div"),e=["transform","WebkitTransform","OTransform","MozTransform","msTransform"],o=0;o<e.length;++o){var i=e[o];if(void 0!==t.style[i])return i}}(),D=[],X=function(){D.forEach(function(t){t.position(!1)}),_()};!function(){var t=null,e=null,o=null,i=function n(){return"undefined"!=typeof e&&e>16?(e=Math.min(e-16,250),void(o=setTimeout(n,250))):void("undefined"!=typeof t&&b()-t<10||(null!=o&&(clearTimeout(o),o=null),t=b(),X(),e=b()-t))};"undefined"!=typeof window&&"undefined"!=typeof window.addEventListener&&["resize","scroll","touchmove"].forEach(function(t){window.addEventListener(t,i)})}();var F={center:"center",left:"right",right:"left"},H={middle:"middle",top:"bottom",bottom:"top"},N={top:0,left:0,middle:"50%",center:"50%",bottom:"100%",right:"100%"},U=function(t,e){var o=t.left,i=t.top;return"auto"===o&&(o=F[e.left]),"auto"===i&&(i=H[e.top]),{left:o,top:i}},V=function(t){var e=t.left,o=t.top;return"undefined"!=typeof N[t.left]&&(e=N[t.left]),"undefined"!=typeof N[t.top]&&(o=N[t.top]),{left:e,top:o}},R=function(t){var e=t.split(" "),o=j(e,2),i=o[0],n=o[1];return{top:i,left:n}},q=R,I=function(t){function e(t){var o=this;i(this,e),z(Object.getPrototypeOf(e.prototype),"constructor",this).call(this),this.position=this.position.bind(this),D.push(this),this.history=[],this.setOptions(t,!1),x.modules.forEach(function(t){"undefined"!=typeof t.initialize&&t.initialize.call(o)}),this.position()}return v(e,t),E(e,[{key:"getClass",value:function(){var t=arguments.length<=0||void 0===arguments[0]?"":arguments[0],e=this.options.classes;return"undefined"!=typeof e&&e[t]?this.options.classes[t]:this.options.classPrefix?this.options.classPrefix+"-"+t:t}},{key:"setOptions",value:function(t){var e=this,o=arguments.length<=1||void 0===arguments[1]||arguments[1],i={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto",classPrefix:"tether"};this.options=h(i,t);var n=this.options,s=n.element,a=n.target,f=n.targetModifier;if(this.element=s,this.target=a,this.targetModifier=f,"viewport"===this.target?(this.target=document.body,this.targetModifier="visible"):"scroll-handle"===this.target&&(this.target=document.body,this.targetModifier="scroll-handle"),["element","target"].forEach(function(t){if("undefined"==typeof e[t])throw new Error("Tether Error: Both element and target must be defined");"undefined"!=typeof e[t].jquery?e[t]=e[t][0]:"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),p(this.element,this.getClass("element")),this.options.addTargetClasses!==!1&&p(this.target,this.getClass("target")),!this.options.attachment)throw new Error("Tether Error: You must provide an attachment");this.targetAttachment=q(this.options.targetAttachment),this.attachment=q(this.options.attachment),this.offset=R(this.options.offset),this.targetOffset=R(this.options.targetOffset),"undefined"!=typeof this.scrollParents&&this.disable(),"scroll-handle"===this.targetModifier?this.scrollParents=[this.target]:this.scrollParents=r(this.target),this.options.enabled!==!1&&this.enable(o)}},{key:"getTargetBounds",value:function(){if("undefined"==typeof this.targetModifier)return a(this.target);if("visible"===this.targetModifier){if(this.target===document.body)return{top:pageYOffset,left:pageXOffset,height:innerHeight,width:innerWidth};var t=a(this.target),e={height:t.height,width:t.width,top:t.top,left:t.left};return e.height=Math.min(e.height,t.height-(pageYOffset-t.top)),e.height=Math.min(e.height,t.height-(t.top+t.height-(pageYOffset+innerHeight))),e.height=Math.min(innerHeight,e.height),e.height-=2,e.width=Math.min(e.width,t.width-(pageXOffset-t.left)),e.width=Math.min(e.width,t.width-(t.left+t.width-(pageXOffset+innerWidth))),e.width=Math.min(innerWidth,e.width),e.width-=2,e.top<pageYOffset&&(e.top=pageYOffset),e.left<pageXOffset&&(e.left=pageXOffset),e}if("scroll-handle"===this.targetModifier){var t=void 0,o=this.target;o===document.body?(o=document.documentElement,t={left:pageXOffset,top:pageYOffset,height:innerHeight,width:innerWidth}):t=a(o);var i=getComputedStyle(o),n=o.scrollWidth>o.clientWidth||[i.overflow,i.overflowX].indexOf("scroll")>=0||this.target!==document.body,r=0;n&&(r=15);var s=t.height-parseFloat(i.borderTopWidth)-parseFloat(i.borderBottomWidth)-r,e={width:15,height:.975*s*(s/o.scrollHeight),left:t.left+t.width-parseFloat(i.borderLeftWidth)-15},f=0;s<408&&this.target===document.body&&(f=-11e-5*Math.pow(s,2)-.00727*s+22.58),this.target!==document.body&&(e.height=Math.max(e.height,24));var l=this.target.scrollTop/(o.scrollHeight-s);return e.top=l*(s-e.height-f)+t.top+parseFloat(i.borderTopWidth),this.target===document.body&&(e.height=Math.max(e.height,24)),e}}},{key:"clearCache",value:function(){this._cache={}}},{key:"cache",value:function(t,e){return"undefined"==typeof this._cache&&(this._cache={}),"undefined"==typeof this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]}},{key:"enable",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]||arguments[0];this.options.addTargetClasses!==!1&&p(this.target,this.getClass("enabled")),p(this.element,this.getClass("enabled")),this.enabled=!0,this.scrollParents.forEach(function(e){e!==t.target.ownerDocument&&e.addEventListener("scroll",t.position)}),e&&this.position()}},{key:"disable",value:function(){var t=this;d(this.target,this.getClass("enabled")),d(this.element,this.getClass("enabled")),this.enabled=!1,"undefined"!=typeof this.scrollParents&&this.scrollParents.forEach(function(e){e.removeEventListener("scroll",t.position)})}},{key:"destroy",value:function(){var t=this;this.disable(),D.forEach(function(e,o){e===t&&D.splice(o,1)}),0===D.length&&s()}},{key:"updateAttachClasses",value:function(t,e){var o=this;t=t||this.attachment,e=e||this.targetAttachment;var i=["left","top","bottom","right","middle","center"];"undefined"!=typeof this._addAttachClasses&&this._addAttachClasses.length&&this._addAttachClasses.splice(0,this._addAttachClasses.length),"undefined"==typeof this._addAttachClasses&&(this._addAttachClasses=[]);var n=this._addAttachClasses;t.top&&n.push(this.getClass("element-attached")+"-"+t.top),t.left&&n.push(this.getClass("element-attached")+"-"+t.left),e.top&&n.push(this.getClass("target-attached")+"-"+e.top),e.left&&n.push(this.getClass("target-attached")+"-"+e.left);var r=[];i.forEach(function(t){r.push(o.getClass("element-attached")+"-"+t),r.push(o.getClass("target-attached")+"-"+t)}),k(function(){"undefined"!=typeof o._addAttachClasses&&(m(o.element,o._addAttachClasses,r),o.options.addTargetClasses!==!1&&m(o.target,o._addAttachClasses,r),delete o._addAttachClasses)})}},{key:"position",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]||arguments[0];if(this.enabled){this.clearCache();var o=U(this.targetAttachment,this.attachment);this.updateAttachClasses(this.attachment,o);var i=this.cache("element-bounds",function(){return a(t.element)}),n=i.width,r=i.height;if(0===n&&0===r&&"undefined"!=typeof this.lastSize){var s=this.lastSize;n=s.width,r=s.height}else this.lastSize={width:n,height:r};var h=this.cache("target-bounds",function(){return t.getTargetBounds()}),d=h,p=C(V(this.attachment),{width:n,height:r}),u=C(V(o),d),c=C(this.offset,{width:n,height:r}),g=C(this.targetOffset,d);p=w(p,c),u=w(u,g);for(var m=h.left+u.left-p.left,v=h.top+u.top-p.top,y=0;y<x.modules.length;++y){var b=x.modules[y],O=b.position.call(this,{left:m,top:v,targetAttachment:o,targetPos:h,elementPos:i,offset:p,targetOffset:u,manualOffset:c,manualTargetOffset:g,scrollbarSize:S,attachment:this.attachment});if(O===!1)return!1;"undefined"!=typeof O&&"object"==typeof O&&(v=O.top,m=O.left)}var E={page:{top:v,left:m},viewport:{top:v-pageYOffset,bottom:pageYOffset-v-r+innerHeight,left:m-pageXOffset,right:pageXOffset-m-n+innerWidth}},A=this.target.ownerDocument,T=A.defaultView,S=void 0;return T.innerHeight>A.documentElement.clientHeight&&(S=this.cache("scrollbar-size",l),E.viewport.bottom-=S.height),T.innerWidth>A.documentElement.clientWidth&&(S=this.cache("scrollbar-size",l),E.viewport.right-=S.width),["","static"].indexOf(A.body.style.position)!==-1&&["","static"].indexOf(A.body.parentElement.style.position)!==-1||(E.page.bottom=A.body.scrollHeight-v-r,E.page.right=A.body.scrollWidth-m-n),"undefined"!=typeof this.options.optimizations&&this.options.optimizations.moveElement!==!1&&"undefined"==typeof this.targetModifier&&!function(){var e=t.cache("target-offsetparent",function(){return f(t.target)}),o=t.cache("target-offsetparent-bounds",function(){return a(e)}),i=getComputedStyle(e),n=o,r={};if(["Top","Left","Bottom","Right"].forEach(function(t){r[t.toLowerCase()]=parseFloat(i["border"+t+"Width"])}),o.right=A.body.scrollWidth-o.left-n.width+r.right,o.bottom=A.body.scrollHeight-o.top-n.height+r.bottom,E.page.top>=o.top+r.top&&E.page.bottom>=o.bottom&&E.page.left>=o.left+r.left&&E.page.right>=o.right){var s=e.scrollTop,l=e.scrollLeft;E.offset={top:E.page.top-o.top+s-r.top,left:E.page.left-o.left+l-r.left}}}(),this.move(E),this.history.unshift(E),this.history.length>3&&this.history.pop(),e&&_(),!0}}},{key:"move",value:function(t){var e=this;if("undefined"!=typeof this.element.parentNode){var o={};for(var i in t){o[i]={};for(var n in t[i]){for(var r=!1,s=0;s<this.history.length;++s){var a=this.history[s];if("undefined"!=typeof a[i]&&!y(a[i][n],t[i][n])){r=!0;break}}r||(o[i][n]=!0)}}var l={top:"",left:"",right:"",bottom:""},d=function(t,o){var i="undefined"!=typeof e.options.optimizations,n=i?e.options.optimizations.gpu:null;if(n!==!1){var r=void 0,s=void 0;if(t.top?(l.top=0,r=o.top):(l.bottom=0,r=-o.bottom),t.left?(l.left=0,s=o.left):(l.right=0,s=-o.right),window.matchMedia){var a=window.matchMedia("only screen and (min-resolution: 1.3dppx)").matches||window.matchMedia("only screen and (-webkit-min-device-pixel-ratio: 1.3)").matches;a||(s=Math.round(s),r=Math.round(r))}l[L]="translateX("+s+"px) translateY("+r+"px)","msTransform"!==L&&(l[L]+=" translateZ(0)")}else t.top?l.top=o.top+"px":l.bottom=o.bottom+"px",t.left?l.left=o.left+"px":l.right=o.right+"px"},p=!1;if((o.page.top||o.page.bottom)&&(o.page.left||o.page.right)?(l.position="absolute",d(o.page,t.page)):(o.viewport.top||o.viewport.bottom)&&(o.viewport.left||o.viewport.right)?(l.position="fixed",d(o.viewport,t.viewport)):"undefined"!=typeof o.offset&&o.offset.top&&o.offset.left?!function(){l.position="absolute";var i=e.cache("target-offsetparent",function(){return f(e.target)});f(e.element)!==i&&k(function(){e.element.parentNode.removeChild(e.element),i.appendChild(e.element)}),d(o.offset,t.offset),p=!0}():(l.position="absolute",d({top:!0,left:!0},t.page)),!p)if(this.options.bodyElement)this.element.parentNode!==this.options.bodyElement&&this.options.bodyElement.appendChild(this.element);else{for(var u=!0,c=this.element.parentNode;c&&1===c.nodeType&&"BODY"!==c.tagName;){if("static"!==getComputedStyle(c).position){u=!1;break}c=c.parentNode}u||(this.element.parentNode.removeChild(this.element),this.element.ownerDocument.body.appendChild(this.element))}var g={},m=!1;for(var n in l){var v=l[n],b=this.element.style[n];b!==v&&(m=!0,g[n]=v)}m&&k(function(){h(e.element.style,g),e.trigger("repositioned")})}}}]),e}(B);I.modules=[],x.position=X;var $=h(I,x),j=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),Y=x.Utils,a=Y.getBounds,h=Y.extend,m=Y.updateClasses,k=Y.defer,G=["left","top","right","bottom"];x.modules.push({position:function(t){var e=this,o=t.top,i=t.left,n=t.targetAttachment;if(!this.options.constraints)return!0;var r=this.cache("element-bounds",function(){return a(e.element)}),s=r.height,f=r.width;if(0===f&&0===s&&"undefined"!=typeof this.lastSize){var l=this.lastSize;f=l.width,s=l.height}var d=this.cache("target-bounds",function(){return e.getTargetBounds()}),p=d.height,u=d.width,c=[this.getClass("pinned"),this.getClass("out-of-bounds")];this.options.constraints.forEach(function(t){var e=t.outOfBoundsClass,o=t.pinnedClass;e&&c.push(e),o&&c.push(o)}),c.forEach(function(t){["left","top","right","bottom"].forEach(function(e){c.push(t+"-"+e)})});var g=[],v=h({},n),y=h({},this.attachment);return this.options.constraints.forEach(function(t){var r=t.to,a=t.attachment,l=t.pin;"undefined"==typeof a&&(a="");var h=void 0,d=void 0;if(a.indexOf(" ")>=0){var c=a.split(" "),m=j(c,2);d=m[0],h=m[1]}else h=d=a;var b=O(e,r);"target"!==d&&"both"!==d||(o<b[1]&&"top"===v.top&&(o+=p,v.top="bottom"),o+s>b[3]&&"bottom"===v.top&&(o-=p,v.top="top")),"together"===d&&("top"===v.top&&("bottom"===y.top&&o<b[1]?(o+=p,v.top="bottom",o+=s,y.top="top"):"top"===y.top&&o+s>b[3]&&o-(s-p)>=b[1]&&(o-=s-p,v.top="bottom",y.top="bottom")),"bottom"===v.top&&("top"===y.top&&o+s>b[3]?(o-=p,v.top="top",o-=s,y.top="bottom"):"bottom"===y.top&&o<b[1]&&o+(2*s-p)<=b[3]&&(o+=s-p,v.top="top",y.top="top")),"middle"===v.top&&(o+s>b[3]&&"top"===y.top?(o-=s,y.top="bottom"):o<b[1]&&"bottom"===y.top&&(o+=s,y.top="top"))),"target"!==h&&"both"!==h||(i<b[0]&&"left"===v.left&&(i+=u,v.left="right"),i+f>b[2]&&"right"===v.left&&(i-=u,v.left="left")),"together"===h&&(i<b[0]&&"left"===v.left?"right"===y.left?(i+=u,v.left="right",i+=f,y.left="left"):"left"===y.left&&(i+=u,v.left="right",i-=f,y.left="right"):i+f>b[2]&&"right"===v.left?"left"===y.left?(i-=u,v.left="left",i-=f,y.left="right"):"right"===y.left&&(i-=u,v.left="left",i+=f,y.left="left"):"center"===v.left&&(i+f>b[2]&&"left"===y.left?(i-=f,y.left="right"):i<b[0]&&"right"===y.left&&(i+=f,y.left="left"))),"element"!==d&&"both"!==d||(o<b[1]&&"bottom"===y.top&&(o+=s,y.top="top"),o+s>b[3]&&"top"===y.top&&(o-=s,y.top="bottom")),"element"!==h&&"both"!==h||(i<b[0]&&("right"===y.left?(i+=f,y.left="left"):"center"===y.left&&(i+=f/2,y.left="left")),i+f>b[2]&&("left"===y.left?(i-=f,y.left="right"):"center"===y.left&&(i-=f/2,y.left="right"))),"string"==typeof l?l=l.split(",").map(function(t){return t.trim()}):l===!0&&(l=["top","left","right","bottom"]),l=l||[];var w=[],C=[];o<b[1]&&(l.indexOf("top")>=0?(o=b[1],w.push("top")):C.push("top")),o+s>b[3]&&(l.indexOf("bottom")>=0?(o=b[3]-s,w.push("bottom")):C.push("bottom")),i<b[0]&&(l.indexOf("left")>=0?(i=b[0],w.push("left")):C.push("left")),i+f>b[2]&&(l.indexOf("right")>=0?(i=b[2]-f,w.push("right")):C.push("right")),w.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.pinnedClass?e.options.pinnedClass:e.getClass("pinned"),g.push(t),w.forEach(function(e){g.push(t+"-"+e)})}(),C.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.outOfBoundsClass?e.options.outOfBoundsClass:e.getClass("out-of-bounds"),g.push(t),C.forEach(function(e){g.push(t+"-"+e)})}(),(w.indexOf("left")>=0||w.indexOf("right")>=0)&&(y.left=v.left=!1),(w.indexOf("top")>=0||w.indexOf("bottom")>=0)&&(y.top=v.top=!1),v.top===n.top&&v.left===n.left&&y.top===e.attachment.top&&y.left===e.attachment.left||(e.updateAttachClasses(y,v),e.trigger("update",{attachment:y,targetAttachment:v}))}),k(function(){e.options.addTargetClasses!==!1&&m(e.target,g,c),m(e.element,g,c)}),{top:o,left:i}}});var Y=x.Utils,a=Y.getBounds,m=Y.updateClasses,k=Y.defer;x.modules.push({position:function(t){var e=this,o=t.top,i=t.left,n=this.cache("element-bounds",function(){return a(e.element)}),r=n.height,s=n.width,f=this.getTargetBounds(),l=o+r,h=i+s,d=[];o<=f.bottom&&l>=f.top&&["left","right"].forEach(function(t){var e=f[t];e!==i&&e!==h||d.push(t)}),i<=f.right&&h>=f.left&&["top","bottom"].forEach(function(t){var e=f[t];e!==o&&e!==l||d.push(t)});var p=[],u=[],c=["left","top","right","bottom"];return p.push(this.getClass("abutted")),c.forEach(function(t){p.push(e.getClass("abutted")+"-"+t)}),d.length&&u.push(this.getClass("abutted")),d.forEach(function(t){u.push(e.getClass("abutted")+"-"+t)}),k(function(){e.options.addTargetClasses!==!1&&m(e.target,u,p),m(e.element,u,p)}),!0}});var j=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();return x.modules.push({position:function(t){var e=t.top,o=t.left;if(this.options.shift){var i=this.options.shift;"function"==typeof this.options.shift&&(i=this.options.shift.call(this,{top:e,left:o}));var n=void 0,r=void 0;if("string"==typeof i){i=i.split(" "),i[1]=i[1]||i[0];var s=i,a=j(s,2);n=a[0],r=a[1],n=parseFloat(n,10),r=parseFloat(r,10)}else n=i.top,r=i.left;return e+=n,o+=r,{top:e,left:o}}}}),$});
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/package.json b/SdncReports/SdncReportsApi/src/main/webapp/package.json
new file mode 100644 (file)
index 0000000..ffb9715
--- /dev/null
@@ -0,0 +1,32 @@
+{
+  "name": "myapp",
+  "version": "1.0.0",
+  "description": "list of node modules for myapp",
+  "main": "app.js",
+  "scripts": {
+    "test": "standard"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/NMSVishal/SDNCReports.git"
+  },
+  "author": "",
+  "license": "ISC",
+  "bugs": {
+    "url": "https://github.com/NMSVishal/SDNCReports/issues"
+  },
+  "homepage": "https://github.com/NMSVishal/SDNCReports#readme",
+  "dependencies": {
+    "angular": "^1.6.9",
+    "angular-growl": "^0.1.0",
+    "angular-mocks": "^1.6.9",
+    "angular-route": "^1.6.9",
+    "angular-sanitize": "^1.6.9",
+    "angular-utils-pagination": "^0.11.1",
+    "angularjs-datetime-picker": "^0.1.16",
+    "bootstrap": "^4.0.0",
+    "jquery": "^3.3.1",
+    "ng-csv": "^0.3.6",
+    "ng-ip-address": "^1.1.12"
+  }
+}
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/ApplicationTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/ApplicationTest.java
new file mode 100644 (file)
index 0000000..58c9cd7
--- /dev/null
@@ -0,0 +1,35 @@
+package com.onap.sdnc.reports;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.onap.sdnc.reports.controller.ReportController;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class ApplicationTest {
+       
+       private static final Logger logger = LogManager.getLogger(ApplicationTest.class);
+       
+       @Autowired
+       private ReportController reportController;
+       
+       @Test
+    public void controllerAutoWireTest()
+    {
+       assertNotNull("Due to Application Context Fail", reportController);
+    }
+       
+       @Test
+       public void contextLoads() throws Exception
+       {
+               logger.info("Context Load Test Succeded");
+       }
+}
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/controller/ReportControllerTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/controller/ReportControllerTest.java
new file mode 100644 (file)
index 0000000..7e16e11
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.controller;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.servlet.MockMvc;
+
+import com.onap.sdnc.reports.Application;
+import com.onap.sdnc.reports.controller.ReportController;
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+import com.onap.sdnc.reports.service.IReportService;
+
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.when;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = { Application.class })
+@WebMvcTest(ReportController.class)
+
+public class ReportControllerTest {
+
+       @Autowired
+       private MockMvc mvc;
+
+       @MockBean
+       private IReportService reportService;
+
+       private Date startDate, endDate;
+
+       @Test
+       public void reportServiceAutoWireTest() {
+               assertNotNull("Due to Application Context Fail", reportService);
+       }
+
+       @Test
+       public void whenFindReportByDeviceName_thenReturnThis() throws Exception {
+               Calendar calendar = Calendar.getInstance();
+
+               calendar.add(Calendar.DATE, -7);
+               calendar.add(Calendar.HOUR_OF_DAY, 00);
+               calendar.add(Calendar.MINUTE, 00);
+               calendar.add(Calendar.SECOND, 00);
+               calendar.add(Calendar.MILLISECOND, 00);
+               startDate = calendar.getTime();
+
+               Calendar endDateCalendar = Calendar.getInstance();
+
+               endDateCalendar.add(Calendar.HOUR_OF_DAY, 23);
+               endDateCalendar.add(Calendar.MINUTE, 59);
+               calendar.add(Calendar.SECOND, 00);
+               endDateCalendar.add(Calendar.MILLISECOND, 00);
+               endDate = endDateCalendar.getTime();
+
+               Date d = new Date();
+               startDate = d;
+               endDate = d;
+               PreTestModel preTestModel = new PreTestModel(1, 1, "NetWorkTest", "Router", "Ping Got Successful", "Pass",
+                               endDate);
+
+               List<PreTestModel> allTests = Arrays.asList(preTestModel);
+
+               when(reportService.findReportByDeviceIP(startDate, endDate, "0.0.0.0")).thenReturn(allTests);
+
+               mvc.perform(get("/findReportByDeviceIP/{startDate}/{endDate}/{deviceIP}/", startDate, endDate, "0.0.0.0")
+                               .contentType(MediaType.APPLICATION_JSON)).andExpect(status().is(400));
+
+       }
+}
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/CertificationClientServiceTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/CertificationClientServiceTest.java
new file mode 100644 (file)
index 0000000..6da3921
--- /dev/null
@@ -0,0 +1,94 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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 com.onap.sdnc.reports.service;
+
+import static org.junit.Assert.assertEquals;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Test;
+import org.mockito.Mock;
+import com.onap.sdnc.reports.model.CertificationInputs;
+import com.onap.sdnc.reports.model.Input;
+import com.onap.sdnc.reports.model.Output;
+import com.onap.sdnc.reports.model.PreTestResponse;
+
+public class CertificationClientServiceTest {
+       
+       @Mock
+       CertificationClientService cService;
+       
+       private String hostname = "host";
+       private String ipaddress = "10.53.122.25";
+       private String statistics = "0% loss";
+       private String avgTime = "Minimum = 0ms";
+       private String testType = "network";
+       
+       @Test(expected = NullPointerException.class)
+       public void TestRestClient() {
+
+               PreTestResponse pretestResponse = new PreTestResponse();
+               pretestResponse.setIpaddress(ipaddress);
+               pretestResponse.setAvgTime(avgTime);
+               pretestResponse.setHostname(hostname);
+               pretestResponse.setStatus("successs");
+               pretestResponse.setStatistics(statistics);
+               pretestResponse.setTesttype(testType);
+
+               List<PreTestResponse> preTestNew = new ArrayList<PreTestResponse>();
+               preTestNew.add(pretestResponse);
+
+               Input input = new Input();
+               input.setIpaddress(ipaddress);
+               input.setHostname(hostname);
+               input.setNetwork(testType);
+
+               CertificationInputs certificationInputs = new CertificationInputs();
+               certificationInputs.setInput(input);
+               CertificationClientService certificationClientservice = new CertificationClientService();
+               certificationClientservice.restClient(certificationInputs, preTestNew, testType);
+               
+       }
+
+       @Test
+       public void pingServiceTest() {
+               CertificationInputs vnfinfo = new CertificationInputs();
+               Input input = new Input();
+               input.setIpaddress("10.53.122.25");
+               input.setHostname("hostname");
+               vnfinfo.setInput(input);
+               Output mockOutput = new Output();
+               mockOutput.setIpaddress("10.53.122.25");
+               Output output = CertificationClientService.pingTest(vnfinfo);
+               assertEquals(output.getIpaddress(), input.getIpaddress());
+       }
+
+       @Test
+       public void protocolTest() {
+               CertificationInputs vnfinfo = new CertificationInputs();
+               Input input = new Input();
+               input.setIpaddress(ipaddress);
+               input.setHostname("hostname");
+               vnfinfo.setInput(input);
+               Output mockOutput = new Output();
+               mockOutput.setIpaddress(ipaddress);
+       }
+}
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/LayerTestServiceImplTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/LayerTestServiceImplTest.java
new file mode 100644 (file)
index 0000000..c721401
--- /dev/null
@@ -0,0 +1,84 @@
+package com.onap.sdnc.reports.service;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.CertificationInputs;
+import com.onap.sdnc.reports.model.Input;
+import com.onap.sdnc.reports.model.PreTestResponse;
+import com.onap.sdnc.reports.model.Request;
+import com.onap.sdnc.reports.model.Response;
+import com.onap.sdnc.reports.model.ValidationTestType;
+import com.onap.sdnc.reports.model.VnfList;
+
+public class LayerTestServiceImplTest {
+
+       @Mock
+       CertificationClientService cService;
+
+       @Mock
+       LayerTestServiceImpl layerTestServiceImpl;
+
+       @Before
+       public void setUp() throws Exception {
+               MockitoAnnotations.initMocks(this);
+       }
+
+       @Test
+       public void networkCertificationTest() {
+
+               Request restReq = new Request();
+               Input input = new Input();
+               CertificationInputs vnfinfo = new CertificationInputs();
+               ValidationTestType vType = new ValidationTestType();
+
+               List<ValidationTestType> lVtype = new ArrayList<ValidationTestType>();
+               vType.setTypeId("1");
+               vType.setValidationType("Network Layer");
+               lVtype.add(vType);
+
+               ValidationTestType[] validationTestType = new ValidationTestType[lVtype.size()];
+               lVtype.toArray(validationTestType);
+               restReq.setValidationTestType(validationTestType);
+
+               VnfList vnfList = new VnfList();
+               vnfList.setHostName("hostname");
+               vnfList.setIpAddress("0.0.0.0");
+               vnfList.setPortNo("0");
+
+               List<VnfList> vnfListArray = new ArrayList<VnfList>();
+               vnfListArray.add(vnfList);
+
+               VnfList[] vnfInputArray = new VnfList[vnfListArray.size()];
+               vnfListArray.toArray(vnfInputArray);
+               restReq.setVnfList(vnfInputArray);
+               input.setHostname("hostname");
+               input.setIpaddress("10.20.30.50");
+               input.setNetwork("network");
+               vnfinfo.setInput(input);
+
+               Response res = new Response();
+
+               PreTestResponse preTestRes = new PreTestResponse();
+               preTestRes.setIpaddress("0.0.0.0");
+
+               List<PreTestResponse> preList = new ArrayList<PreTestResponse>();
+               preList.add(preTestRes);
+
+               res.setPreTestResponse(preList);
+
+               Mockito.when(layerTestServiceImpl.networkCertification(restReq)).thenReturn(res);
+
+               Response actualRes = layerTestServiceImpl.networkCertification(restReq);
+
+               assertEquals(actualRes.getPreTestResponse().get(0).getIpaddress(), vnfList.getIpAddress());
+       }
+
+}
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/NetworkCertificationTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/NetworkCertificationTest.java
new file mode 100644 (file)
index 0000000..c21b603
--- /dev/null
@@ -0,0 +1,109 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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 com.onap.sdnc.reports.service;
+import static org.junit.Assert.assertEquals;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+/*import com.onap.sdnc.testapi.model.ODLClientResponse;
+import com.onap.sdnc.testapi.model.PreTestResponse;
+import com.onap.sdnc.testapi.model.Request;
+import com.onap.sdnc.testapi.model.Response;
+import com.onap.sdnc.testapi.model.ValidationTestType;
+import com.onap.sdnc.testapi.model.Vnf;
+import com.onap.sdnc.testapi.model.VnfList;
+import com.onap.sdnc.testapi.service.LayerTestServiceImpl;*/
+
+import com.onap.sdnc.reports.model.ODLClientResponse;
+import com.onap.sdnc.reports.model.PreTestResponse;
+import com.onap.sdnc.reports.model.Request;
+import com.onap.sdnc.reports.model.Response;
+import com.onap.sdnc.reports.model.ValidationTestType;
+import com.onap.sdnc.reports.model.Vnf;
+import com.onap.sdnc.reports.model.VnfList;
+
+public class NetworkCertificationTest {
+
+       @Mock
+       LayerTestServiceImpl layerTestServiceImpl;
+
+       @Captor
+       ArgumentCaptor<LayerTestServiceImpl> captor;
+
+       private String hostname = "host";
+       private String ipaddress = "0.0.0.0";
+       private String network = "Network Layer";
+       private String statistics = "0% loss";
+       private String avgTime = "Minimum = 0ms";
+       private String testtype = "network";
+       private String typeId = "1";
+
+       Response response = new Response();
+       PreTestResponse preTestResponse = new PreTestResponse();
+       ODLClientResponse odlClientResponse = new ODLClientResponse();
+       Request restReq = new Request();
+
+       @Before
+       public void setUp() throws Exception {
+               MockitoAnnotations.initMocks(this);
+       }
+
+       @Test
+       public void TestNetworkClient() {
+
+               preTestResponse.setAvgTime(avgTime);
+               preTestResponse.setIpaddress(ipaddress);
+               preTestResponse.setStatistics(statistics);
+               preTestResponse.setStatus("reachable");
+               preTestResponse.setTesttype(testtype);
+
+               List<PreTestResponse> listPreTestResponse = new ArrayList<PreTestResponse>();
+               listPreTestResponse.add(preTestResponse);
+               response.setPreTestResponse(listPreTestResponse);
+
+               ValidationTestType validationTestType = new ValidationTestType();
+               validationTestType.setTypeId(typeId);
+               validationTestType.setValidationType(network);
+
+               VnfList<List> vnflistt = new VnfList<List>();
+               vnflistt.setHostName(hostname);
+               vnflistt.setIpAddress(ipaddress);
+               vnflistt.setPortNo(null);
+
+               VnfList[] vnflist = restReq.getVnfList();
+               ValidationTestType[] validationTestTypee = restReq.getValidationTestType();
+
+               Vnf vnf = new Vnf();
+               vnf.setValidationTestType(validationTestTypee);
+               vnf.setVnfList(vnflist);
+               Mockito.when(layerTestServiceImpl.networkCertification(restReq)).thenReturn(response);
+               Response res = layerTestServiceImpl.networkCertification(restReq);
+
+               assertEquals(res.getPreTestResponse(), response.getPreTestResponse());
+       }               
+}
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/ReportServiceImplTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/ReportServiceImplTest.java
new file mode 100644 (file)
index 0000000..27b88da
--- /dev/null
@@ -0,0 +1,127 @@
+package com.onap.sdnc.reports.service;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.TestConfiguration;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.onap.sdnc.reports.Application;
+import com.onap.sdnc.reports.config.EmbeddedMariaDbConfig;
+import com.onap.sdnc.reports.model.DeviceConfig;
+import com.onap.sdnc.reports.model.PreTestConfig;
+import com.onap.sdnc.reports.repository.PreTestConfigRepository;
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+
+import org.springframework.test.annotation.DirtiesContext;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+@ContextConfiguration(classes = EmbeddedMariaDbConfig.class)
+@DataJpaTest
+@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
+@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
+public class ReportServiceImplTest {
+
+       private static final Logger logger = LogManager.getLogger(ReportServiceImplTest.class);
+
+       private Date startDate, endDate;
+
+       @TestConfiguration
+       static class ReportServiceImplTestContextConfiguration {
+               @Bean
+               public IReportService reportService() {
+                       return new ReportServiceImpl();
+               }
+       }
+
+       @Autowired
+       private IReportService reportService;
+
+       @MockBean
+       private PreTestConfigRepository preTestConfigRepository;
+
+       @Test
+       public void reportServiceAutoWireTest() {
+               assertNotNull("Due to Application Context Fail", reportService);
+       }
+
+       @Test
+       public void preTestConfigRepositoryAutoWireTest() {
+               assertNotNull("Due to Application Context Fail", preTestConfigRepository);
+       }
+
+       @Before
+       public void setUp() {
+               DeviceConfig deviceConfig = new DeviceConfig();
+               deviceConfig.setDeviceIP("0.0.0.0");
+               deviceConfig.setPreTestConfig(null);
+               deviceConfig.setCreationDate(new Date().toLocaleString());
+
+               PreTestConfig obj = new PreTestConfig();
+               obj.setDevice(deviceConfig);
+               obj.setExecuationDetails("Ping Successful");
+               obj.setResult("Pass");
+
+               obj.setTestName("Network Layer");
+               obj.setTimestamp(new Date());
+
+               Calendar calendar = Calendar.getInstance();
+
+               calendar.add(Calendar.DATE, -7);
+               calendar.add(Calendar.HOUR_OF_DAY, 00);
+               calendar.add(Calendar.MINUTE, 00);
+               calendar.add(Calendar.SECOND, 00);
+               calendar.add(Calendar.MILLISECOND, 00);
+               startDate = calendar.getTime();
+
+               Calendar endDateCalendar = Calendar.getInstance();
+
+               endDateCalendar.add(Calendar.HOUR_OF_DAY, 23);
+               endDateCalendar.add(Calendar.MINUTE, 59);
+               calendar.add(Calendar.SECOND, 00);
+               endDateCalendar.add(Calendar.MILLISECOND, 00);
+               endDate = endDateCalendar.getTime();
+
+               System.out.println(
+                               "Before Call : startDate " + startDate.toLocaleString() + " endDate : " + endDate.toLocaleString());
+               List<PreTestConfig> configList = new ArrayList<>();
+               configList.add(obj);
+               Mockito.when(preTestConfigRepository.findReportByDeviceIP(startDate, endDate, "0.0.0.0"))
+                               .thenReturn(configList);
+       }
+
+       @Test
+       public void whenFindByDeviceName_thenReturPreTest() {
+               int expectedTestId = 0;
+               System.out.println(
+                               "Test Call : startDate " + startDate.toLocaleString() + " endDate : " + endDate.toLocaleString());
+
+               List<PreTestModel> testList;
+               try {
+                       testList = reportService.findReportByDeviceIP(startDate, endDate, "10.0.0.0");
+                       assertThat(testList.get(0).getTestid()).isEqualTo(expectedTestId);
+               } catch (Exception e) {
+
+                       e.printStackTrace();
+               }
+       }
+}
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/CertificationInputsTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/CertificationInputsTest.java
new file mode 100644 (file)
index 0000000..462f30f
--- /dev/null
@@ -0,0 +1,61 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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 com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.CertificationInputs;
+
+import com.onap.sdnc.reports.model.Input;
+
+public class CertificationInputsTest {
+
+       private String hostname = "host";
+       private String ipaddress = "0.0.0.0";
+       private String network = "Network Layer";
+
+       Input input = new Input();
+
+       @Before
+       public void setUp() throws Exception {
+               MockitoAnnotations.initMocks(this);
+       }
+
+       @Test
+       public void TestCertificationInputs() {
+
+               input.setIpaddress(ipaddress);
+               input.setHostname(hostname);
+               input.setNetwork(network);
+               
+               CertificationInputs certificationInputs=new CertificationInputs();
+               certificationInputs.setInput(input);
+               
+               assertEquals(certificationInputs.getInput(), input);
+               assertEquals(input.getHostname(), hostname);
+               assertEquals(input.getIpaddress(), ipaddress);
+               assertEquals(input.getNetwork(), network);
+
+       }
+}
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/InputTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/InputTest.java
new file mode 100644 (file)
index 0000000..d089837
--- /dev/null
@@ -0,0 +1,34 @@
+package com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.Input;
+
+public class InputTest {       
+       
+       private String hostname = "host";
+       private String ipaddress = "0.0.0.0";
+       private String network = "Network Layer";
+       
+       Input input = new Input();
+       
+       @Before
+       public void setUp() throws Exception {
+               MockitoAnnotations.initMocks(this);
+       }
+       
+       @Test
+       public void TestInput() {               
+               
+               input.setHostname(hostname);            
+               input.setIpaddress(ipaddress);
+               input.setNetwork(network);
+
+               assertEquals(input.getHostname(), hostname);
+               assertEquals(input.getIpaddress(), ipaddress);
+               assertEquals(input.getNetwork(), network);
+
+       }
+}
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/OdlResponseTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/OdlResponseTest.java
new file mode 100644 (file)
index 0000000..6c9f456
--- /dev/null
@@ -0,0 +1,60 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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 com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.ODLClientResponse;
+import com.onap.sdnc.reports.model.Output;
+
+public class OdlResponseTest {
+
+       private String hostname = "host";
+       private String ipaddress = "0.0.0.0";
+       private String statistics = "0% loss";
+       private String avgTime = "Minimum = 0ms";
+       private String testresult = "testresult";
+       Output output = new Output();
+       ODLClientResponse odlClientResponse = new ODLClientResponse();
+
+       @Before
+       public void setUp() throws Exception {
+               MockitoAnnotations.initMocks(this);
+       }
+
+       @Test
+       public void TestODLClientResponse() {
+               output.setAvgTime(avgTime);
+               output.setHostname(hostname);
+               output.setIpaddress(ipaddress);
+               output.setTestresult(testresult);
+               output.setStatistics(statistics);
+               output.setStatus("unreachable");
+               output.setReason("Check your input");
+
+               odlClientResponse.setOutput(output);
+
+               assertEquals(odlClientResponse.getOutput(), output);
+       }
+}
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/OutputTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/OutputTest.java
new file mode 100644 (file)
index 0000000..a01049d
--- /dev/null
@@ -0,0 +1,65 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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 com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.Output;
+
+public class OutputTest {
+       
+       private String hostname = "host";
+       private String ipaddress = "0.0.0.0";
+       private String statistics = "0% loss";
+       private String avgTime = "Minimum = 0ms";
+       private String testresult="testresult";
+       
+       @Before
+       public void setUp() throws Exception {
+               MockitoAnnotations.initMocks(this);
+       }
+       
+       @Test
+       public void TestOutput() {
+               
+               Output output=new Output();
+               
+               output.setAvgTime(avgTime);
+               output.setHostname(hostname);
+               output.setIpaddress(ipaddress);
+               output.setTestresult(testresult);               
+               output.setStatistics(statistics);
+               output.setStatus("unreachable");
+               output.setReason("Check your input");
+
+               assertEquals(output.getHostname(), hostname);
+               assertEquals(output.getIpaddress(), ipaddress);
+               assertEquals(output.getAvgTime(),avgTime);
+               assertEquals(output.getStatistics(), statistics);
+               assertEquals(output.getStatus(), "unreachable");                
+               assertEquals(output.getReason(), "Check your input");
+               assertEquals(output.getTestresult(), testresult);
+       }
+       
+}
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/PreTestResponseTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/PreTestResponseTest.java
new file mode 100644 (file)
index 0000000..669e43b
--- /dev/null
@@ -0,0 +1,59 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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 com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.PreTestResponse;
+
+public class PreTestResponseTest {
+
+       private String ipaddress = "0.0.0.0";
+       private String avgTime = "Minimum = 0ms";
+       private String statistics = "0% loss";
+       private String testtype = "network";
+
+       PreTestResponse preTestResponse = new PreTestResponse();
+
+       @Before
+       public void setUp() throws Exception {
+               MockitoAnnotations.initMocks(this);
+       }
+
+       @Test
+       public void TestPreTestResponse() {
+
+               preTestResponse.setAvgTime(avgTime);
+               preTestResponse.setIpaddress(ipaddress);
+               preTestResponse.setStatistics(statistics);
+               preTestResponse.setStatus("reachable");
+               preTestResponse.setTesttype(testtype);
+
+               assertEquals(preTestResponse.getAvgTime(), avgTime);
+               assertEquals(preTestResponse.getIpaddress(), ipaddress);
+               assertEquals(preTestResponse.getStatistics(), statistics);
+               assertEquals(preTestResponse.getStatus(), "reachable");
+               assertEquals(preTestResponse.getTesttype(), testtype);
+       }
+}
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/RequestTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/RequestTest.java
new file mode 100644 (file)
index 0000000..6515410
--- /dev/null
@@ -0,0 +1,75 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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 com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.Request;
+import com.onap.sdnc.reports.model.ValidationTestType;
+import com.onap.sdnc.reports.model.Vnf;
+import com.onap.sdnc.reports.model.VnfList;
+
+public class RequestTest {
+       
+       private String hostname = "host";
+       private String ipaddress = "0.0.0.0";
+       private String network = "Network Layer";
+       private String typeId="1";
+       
+       private ValidationTestType[] validationTestTypee;
+       Request restReq= new Request();
+       
+       @Before
+       public void setUp() throws Exception {
+               MockitoAnnotations.initMocks(this);
+       }
+       
+       @SuppressWarnings("deprecation")
+       @Test
+       public void TestRequest() {                                     
+               ValidationTestType validationTestType = new ValidationTestType();
+                       validationTestType.setTypeId(typeId);
+                       validationTestType.setValidationType(network);
+
+               VnfList<List> vnflistt = new VnfList<List>();
+                       vnflistt.setHostName(hostname);
+                       vnflistt.setIpAddress(ipaddress);
+                       vnflistt.setPortNo(null);
+               
+               VnfList[] vnflist = restReq.getVnfList();
+               restReq.setValidationTestType(validationTestTypee);
+               restReq.setVnfList(vnflist);
+               
+               ValidationTestType[] validationTestTypee = restReq.getValidationTestType();
+               
+               Vnf vnf = new Vnf();
+                       vnf.setValidationTestType(validationTestTypee);
+                       vnf.setVnfList(vnflist);                
+                       
+                       assertEquals(restReq.getValidationTestType(), validationTestTypee);
+                       assertEquals(restReq.getVnfList(), vnflist);
+       }
+       
+}
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/ResponseTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/ResponseTest.java
new file mode 100644 (file)
index 0000000..c802f09
--- /dev/null
@@ -0,0 +1,66 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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 com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.PreTestResponse;
+import com.onap.sdnc.reports.model.Response;
+
+
+public class ResponseTest {
+       
+       private String ipaddress = "0.0.0.0";
+       private String statistics = "0% loss";
+       private String avgTime = "Minimum = 0ms";
+       private String testtype = "network";
+       
+       PreTestResponse preTestResponse=new PreTestResponse();
+       Response response= new Response();
+       
+       @Before
+       public void setUp() throws Exception {
+               MockitoAnnotations.initMocks(this);
+       }
+       
+       @Test
+       public void TestResponse() {
+               preTestResponse.setAvgTime(avgTime);
+               preTestResponse.setIpaddress(ipaddress);
+               preTestResponse.setStatistics(statistics);
+               preTestResponse.setStatus("reachable");
+               preTestResponse.setTesttype(testtype);
+               
+               List<PreTestResponse> listPreTestResponse=new ArrayList<PreTestResponse>();
+               listPreTestResponse.add(preTestResponse);
+               response.setPreTestResponse(listPreTestResponse);
+               
+               assertEquals(response.getPreTestResponse(), listPreTestResponse);
+       }
+       
+}
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/ValidationTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/ValidationTest.java
new file mode 100644 (file)
index 0000000..37dc750
--- /dev/null
@@ -0,0 +1,48 @@
+/* ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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 com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.ValidationTestType;
+
+
+public class ValidationTest {
+       
+       private String validationType="network";        
+       private String typeId="1";
+       @Before
+       public void setUp() throws Exception {
+               MockitoAnnotations.initMocks(this);
+       }
+       
+       @Test
+       public void TestValidation() {      
+           ValidationTestType validationTestType=new ValidationTestType();
+                   validationTestType.setTypeId(typeId);
+                   validationTestType.setValidationType(validationType);
+               
+                   assertEquals(validationTestType.getTypeId(), "1"); 
+                   assertEquals(validationTestType.getValidationType(), "network");
+       }
+}
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/VnfListTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/VnfListTest.java
new file mode 100644 (file)
index 0000000..6a24e46
--- /dev/null
@@ -0,0 +1,53 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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 com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.VnfList;
+
+public class VnfListTest {
+
+       private String hostname = "host";
+       private String ipaddress = "0.0.0.0";
+       private String portnumber = null;
+
+       @Before
+       public void setUp() throws Exception {
+               MockitoAnnotations.initMocks(this);
+       }
+
+       @Test
+       public void TestVnfList() {
+               VnfList<List> vnfListt = new VnfList<List>();
+               vnfListt.setHostName(hostname);
+               vnfListt.setIpAddress(ipaddress);
+               vnfListt.setPortNo(null);
+
+               assertEquals(vnfListt.getHostName(), hostname);
+               assertEquals(vnfListt.getIpAddress(), ipaddress);
+               assertEquals(vnfListt.getPortNo(), portnumber);
+       }
+}
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/VnfTest.java b/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/VnfTest.java
new file mode 100644 (file)
index 0000000..0b7ac50
--- /dev/null
@@ -0,0 +1,61 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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 com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import java.util.List;
+import org.junit.Test;
+import com.onap.sdnc.reports.model.Request;
+import com.onap.sdnc.reports.model.ValidationTestType;
+import com.onap.sdnc.reports.model.Vnf;
+import com.onap.sdnc.reports.model.VnfList;
+
+
+public class VnfTest {
+
+       private String hostname = "host";
+       private String ipaddress = "0.0.0.0";
+       private ValidationTestType[] validationTestType;
+
+       Request restReq = new Request();
+
+       @SuppressWarnings("deprecation")
+       @Test
+       public void TestVnf() {
+
+               VnfList<List> vnfListt = new VnfList<List>();
+               vnfListt.setHostName(hostname);
+               vnfListt.setIpAddress(ipaddress);
+               vnfListt.setPortNo(null);
+
+               VnfList[] vnflist = restReq.getVnfList();
+               Vnf testvnf = new Vnf();
+               testvnf.setVnfList(vnflist);
+               testvnf.setValidationTestType(validationTestType);
+
+               ValidationTestType[] validationTestTypee = restReq.getValidationTestType();
+               testvnf.setValidationTestType(validationTestTypee);
+
+               assertEquals(testvnf.getVnfList(), vnflist);
+               assertEquals(testvnf.getValidationTestType(), validationTestTypee);
+       }
+}
\ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/test/resources/application.properties b/SdncReports/SdncReportsApi/src/test/resources/application.properties
new file mode 100644 (file)
index 0000000..a17b6c9
--- /dev/null
@@ -0,0 +1,17 @@
+server.tomcat.uri-encoding=utf-8
+
+# maria db details
+
+spring.datasource.url=jdbc:mariadb://localhost:3307/testreports
+spring.datasource.username=root
+spring.datasource.password=root
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
+
+
+spring.datasource.tomcat.max-wait=20000
+spring.datasource.tomcat.max-active=50
+spring.datasource.tomcat.max-idle=20
+spring.datasource.tomcat.min-idle=15
+
+spring.jpa.show-sql=true
diff --git a/SdncReports/SdncReportsApi/start.sh b/SdncReports/SdncReportsApi/start.sh
new file mode 100644 (file)
index 0000000..2a08ebe
--- /dev/null
@@ -0,0 +1,6 @@
+# start.sh
+/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar target/sdnc_reports_api-0.0.1-SNAPSHOT.jar &
+
+/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar target/sdnc_reports_certification-1.0.1-SNAPSHOT.jar &
+
+/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar target/sdnc_reports_service-0.0.1-SNAPSHOT.jar
\ No newline at end of file
diff --git a/SdncReports/SdncReportsDao/pom.xml b/SdncReports/SdncReportsDao/pom.xml
new file mode 100644 (file)
index 0000000..5e6afa1
--- /dev/null
@@ -0,0 +1,65 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>SdncReportsDao</artifactId>
+  <packaging>jar</packaging>
+  
+  <parent>
+    <groupId>org.onap.ccsdk.parent</groupId>
+    <artifactId>SdncReports</artifactId>
+    <version>0.0.1-SNAPSHOT</version>    
+  </parent>
+  
+  <dependencies>
+       <dependency>
+               <groupId>org.springframework</groupId>
+               <artifactId>spring-context</artifactId>
+       </dependency>
+       
+       <dependency>
+           <groupId>org.springframework.boot</groupId>
+           <artifactId>spring-boot-starter-test</artifactId>
+           <scope>test</scope>
+           <version>1.5.3.RELEASE</version>
+       </dependency>
+       
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-data-jpa</artifactId>
+                       <exclusions>
+                               <exclusion>
+                                       <groupId>org.hibernate</groupId>
+                                       <artifactId>hibernate-entitymanager</artifactId>                                
+                               </exclusion>
+                       </exclusions>
+                       
+               </dependency>
+               
+               <dependency>
+                       <groupId>mysql</groupId>
+                       <artifactId>mysql-connector-java</artifactId>
+                       <scope>runtime</scope>
+               </dependency>
+
+       <!--    <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-tomcat</artifactId>
+                       <scope>provided</scope>
+               </dependency> -->
+
+               <dependency>
+                       <groupId>com.fasterxml.jackson.core</groupId>
+                       <artifactId>jackson-annotations</artifactId>
+               </dependency>
+               
+       <!--            <dependency>
+           <groupId>org.hibernate.javax.persistence</groupId>
+           <artifactId>hibernate-jpa-2.0-api</artifactId>
+           <version>1.0.1.Final</version>
+       </dependency> -->
+       <dependency>
+    <groupId>org.mariadb.jdbc</groupId>
+    <artifactId>mariadb-java-client</artifactId>
+    <version>1.1.7</version>
+</dependency>
+  </dependencies>
+</project>
\ No newline at end of file
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/CertificationInputs.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/CertificationInputs.java
new file mode 100644 (file)
index 0000000..d8952fc
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+public class CertificationInputs {
+
+       private Input input;
+
+    public Input getInput ()
+    {
+        return input;
+    }
+
+    public void setInput (Input input)
+    {
+        this.input = input;
+    }  
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/DeviceConfig.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/DeviceConfig.java
new file mode 100644 (file)
index 0000000..2a999e2
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+import java.io.Serializable;
+import java.util.Set;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "deviceconfig")
+public class DeviceConfig implements Serializable 
+{
+       private static final long serialVersionUID = -3009157732242241606L;
+       @Id
+       @GeneratedValue(strategy = GenerationType.AUTO)
+       @Column(name = "deviceid")
+       private long id;
+
+       @Column(name = "deviceIP")
+       private String deviceIP;
+       
+       @Column(name = "createdon")
+       private String createdon;
+       
+       @OneToMany(mappedBy="device")
+       private Set<PreTestConfig> preTestConfig;
+       
+       public DeviceConfig() {
+       }
+
+       public long getId() {
+               return id;
+       }
+
+       public void setId(long id) {
+               this.id = id;
+       }
+       
+       public String getCreationDate() {
+               return createdon;
+       }
+
+       public void setCreationDate(String creationDate) {
+               this.createdon = creationDate;
+       }
+       
+       public Set<PreTestConfig> getPreTestConfig() {
+               return preTestConfig;
+       }
+
+       public void setPreTestConfig(Set<PreTestConfig> preTestConfig) {
+               this.preTestConfig = preTestConfig;
+       }
+       
+       public String getDeviceIP() {
+               return deviceIP;
+       }
+
+       public void setDeviceIP(String deviceIP) {
+               this.deviceIP = deviceIP;
+       }
+
+       @Override
+       public String toString() {
+               return "DeviceConfig [id=" + id + ", deviceName=" +  ", createdon=" + createdon
+                               +  ", deviceIP=" + deviceIP + "]";
+       }
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Input.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Input.java
new file mode 100644 (file)
index 0000000..7a49034
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+public class Input {
+       
+           private String ipaddress;
+           private String hostname;
+           private String network;
+           
+           public String getHostname() {
+                       return hostname;
+               }
+
+               public void setHostname(String hostname) {
+                       this.hostname = hostname;
+               }       
+               
+           public String getIpaddress ()
+           {
+               return ipaddress;
+           }
+
+           public void setIpaddress (String ipaddress)
+           {
+               this.ipaddress = ipaddress;
+           }
+
+               public String getNetwork() {
+                       return network;
+               }
+
+               public void setNetwork(String network) {
+                       this.network = network;
+               }
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/ODLClientResponse.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/ODLClientResponse.java
new file mode 100644 (file)
index 0000000..999059d
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+public class ODLClientResponse {
+        private Output output;
+
+           public Output getOutput ()
+           {
+               return output;
+           }
+
+           public void setOutput (Output output)
+           {
+               this.output = output;
+           }   
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Output.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Output.java
new file mode 100644 (file)
index 0000000..3cc0932
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+public class Output {
+               
+               private String status;
+
+           private String testresult;
+
+           private String hostname;
+
+           private String ipaddress;
+           
+           private String statistics;
+           
+           private String avgTime;
+
+           private String reason;
+           
+           public String getStatus ()
+           {
+               return status;
+           }
+
+           public String getStatistics() {
+                       return statistics;
+               }
+
+               public void setStatistics(String statistics) {
+                       this.statistics = statistics;
+               }
+
+               public void setStatus (String status)
+           {
+               this.status = status;
+           }
+
+           public String getTestresult ()
+           {
+               return testresult;
+           }
+
+           public void setTestresult (String testresult)
+           {
+               this.testresult = testresult;
+           }
+
+           public String getHostname ()
+           {
+               return hostname;
+           }
+
+           public void setHostname (String hostname)
+           {
+               this.hostname = hostname;
+           }
+
+           public String getIpaddress ()
+           {
+               return ipaddress;
+           }
+
+           public void setIpaddress (String ipaddress)
+           {
+               this.ipaddress = ipaddress;
+           }
+
+               public String getAvgTime() {
+                       return avgTime;
+               }
+
+               public void setAvgTime(String avgTime) {
+                       this.avgTime = avgTime;
+               }
+
+               public String getReason() {
+                       return reason;
+               }
+
+               public void setReason(String reason) {
+                       this.reason = reason;
+               }
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/PreTestConfig.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/PreTestConfig.java
new file mode 100644 (file)
index 0000000..672a6f2
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+@Entity
+@Table(name = "pretestconfig")
+public class PreTestConfig implements Serializable{
+       
+       private static final long serialVersionUID = -3009157732242241606L;
+       @Id
+       @GeneratedValue(strategy = GenerationType.AUTO)
+       @Column(name = "testid")
+       private long testId ;
+
+       @Column(name = "testname")
+       private String testName;
+               
+       @Column(name = "result")
+       private String result;
+       
+       @Column(name = "execuationdetails")
+       private String execuationDetails;
+       
+       @Column(name = "timestamp")
+       @Temporal(TemporalType.DATE)
+       private Date timestamp;
+       
+       @ManyToOne
+       @JoinColumn(name="deviceid",nullable=false)
+       private DeviceConfig device;
+       
+       public PreTestConfig() 
+       {
+       }
+
+       public long getTestId() {
+               return testId;
+       }
+
+       public void setTestId(long testId) {
+               this.testId = testId;
+       }
+
+       public String getTestName() {
+               return testName;
+       }
+
+       public void setTestName(String testName) {
+               this.testName = testName;
+       }
+
+       public DeviceConfig getDevice() {
+               return device;
+       }
+
+       public void setDevice(DeviceConfig device) {
+               this.device = device;
+       }
+
+       public String getResult() {
+               return result;
+       }
+
+       public void setResult(String result) {
+               this.result = result;
+       }
+
+       public String getExecuationDetails() {
+               return execuationDetails;
+       }
+
+       public void setExecuationDetails(String execuationDetails) {
+               this.execuationDetails = execuationDetails;
+       }
+
+       public Date getTimestamp() {
+               return timestamp;
+       }
+
+       public void setTimestamp(Date timestamp) {
+               this.timestamp = timestamp;
+       }
+
+       @Override
+       public String toString() {
+               return "PreTestConfig [testId=" + testId + ", testName=" + testName + ", result=" + result
+                               + ", execuationDetails=" + execuationDetails + ", timestamp=" + timestamp + ", device=" + device + "]";
+       }               
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/PreTestResponse.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/PreTestResponse.java
new file mode 100644 (file)
index 0000000..a2349e7
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class PreTestResponse {
+
+       private String ipaddress;
+       private String status;
+       private String testtype;
+       private String statistics;
+       private String avgTime;
+       private String hostname;
+
+       public PreTestResponse() {
+
+       }
+
+       public String getStatus() {
+               return status;
+       }
+
+       public void setStatus(String status) {
+               this.status = status;
+       }
+
+       public String getIpaddress() {
+               return ipaddress;
+       }
+
+       public void setIpaddress(String ipaddress) {
+               this.ipaddress = ipaddress;
+       }
+
+       public String getTesttype() {
+               return testtype;
+       }
+
+       public void setTesttype(String testtype) {
+               this.testtype = testtype;
+       }
+
+       public String getStatistics() {
+               return statistics;
+       }
+
+       public void setStatistics(String statistics) {
+               this.statistics = statistics;
+       }
+
+       public String getAvgTime() {
+               return avgTime;
+       }
+
+       public void setAvgTime(String avgTime) {
+               this.avgTime = avgTime;
+       }
+
+       public String getHostname() {
+               return hostname;
+       }
+
+       public void setHostname(String hostname) {
+               this.hostname = hostname;
+       }
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Request.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Request.java
new file mode 100644 (file)
index 0000000..e934a4c
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+public class Request {
+
+       private VnfList[] vnfList;
+
+       private ValidationTestType[] validationTestType;
+
+       public VnfList[] getVnfList() {
+               return vnfList;
+       }
+
+       public void setVnfList(VnfList[] vnfList) {
+               this.vnfList = vnfList;
+       }
+
+       public ValidationTestType[] getValidationTestType() {
+               return validationTestType;
+       }
+
+       public void setValidationTestType(ValidationTestType[] validationTestType) {
+               this.validationTestType = validationTestType;
+       }       
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Response.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Response.java
new file mode 100644 (file)
index 0000000..e773212
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class Response {
+
+       private List<PreTestResponse> preTestResponse;
+
+       public List<PreTestResponse> getPreTestResponse() {
+               return preTestResponse;
+       }
+
+       public void setPreTestResponse(List<PreTestResponse> preTestResponse) {
+               this.preTestResponse = preTestResponse;
+       }
+
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/ValidationTestType.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/ValidationTestType.java
new file mode 100644 (file)
index 0000000..9d6c987
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+public class ValidationTestType
+{
+    private String validationType;
+
+    private String typeId;
+
+    public String getValidationType ()
+    {
+        return validationType;
+    }
+
+    public void setValidationType (String validationType)
+    {
+        this.validationType = validationType;
+    }
+
+    public String getTypeId ()
+    {
+        return typeId;
+    }
+
+    public void setTypeId (String typeId)
+    {
+        this.typeId = typeId;
+    }
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Vnf.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Vnf.java
new file mode 100644 (file)
index 0000000..b7eb456
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+public class Vnf {
+
+        private VnfList[] vnfList;
+
+           private ValidationTestType[] validationTestType;
+
+           public VnfList[] getVnfList ()
+           {
+               return vnfList;
+           }
+
+           public void setVnfList (VnfList[] vnfList)
+           {
+               this.vnfList = vnfList;
+           }
+
+           public ValidationTestType[] getValidationTestType ()
+           {
+               return validationTestType;
+           }
+
+           public void setValidationTestType (ValidationTestType[] validationTestType)
+           {
+               this.validationTestType = validationTestType;
+           }
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/VnfList.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/VnfList.java
new file mode 100644 (file)
index 0000000..09bf2eb
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.model;
+
+public class VnfList<List> {
+
+       private String portNo;
+
+       private String ipAddress;
+
+       private String hostName;
+
+       public String getPortNo() {
+               return portNo;
+       }
+
+       public void setPortNo(String portNo) {
+               this.portNo = portNo;
+       }
+
+       public String getIpAddress() {
+               return ipAddress;
+       }
+
+       public void setIpAddress(String ipAddress) {
+               this.ipAddress = ipAddress;
+       }
+
+       public String getHostName() {
+               return hostName;
+       }
+
+       public void setHostName(String hostName) {
+               this.hostName = hostName;
+       }
+
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/repository/DeviceRepository.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/repository/DeviceRepository.java
new file mode 100644 (file)
index 0000000..9a33bad
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.repository;
+
+import javax.transaction.Transactional;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import com.onap.sdnc.reports.model.DeviceConfig;
+
+
+@Repository
+public interface DeviceRepository extends JpaRepository<DeviceConfig, Long> {
+
+               @Query(value= "from DeviceConfig where deviceIP = :deviceIP" )
+               DeviceConfig findDeviceIP(@Param("deviceIP") String  deviceIP);
+               
+               @Modifying
+           @Query(value = "insert into DeviceConfig (deviceIP,createdOn) VALUES (:deviceIP,:createdOn)", nativeQuery = true)
+           @Transactional
+           void logDeviceName(@Param("deviceIP") String deviceIP, @Param("createdOn") String  createdOn);
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/repository/PreTestConfigRepository.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/repository/PreTestConfigRepository.java
new file mode 100644 (file)
index 0000000..7c86042
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.repository;
+
+import java.util.Date;
+
+import java.util.List;
+
+import javax.transaction.Transactional;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import com.onap.sdnc.reports.model.PreTestConfig;
+
+
+@Repository
+public interface PreTestConfigRepository extends JpaRepository<PreTestConfig, Long> {
+
+       @Query(value= " from PreTestConfig where timestamp >= :startDate and timestamp <= :endDate  and device.deviceIP = :deviceIP" )
+       List<PreTestConfig> findReportByDeviceIP(@Param("startDate") Date startDate, @Param("endDate")Date endDate, @Param("deviceIP")String deviceIP);
+       
+       @Modifying
+    @Query(value = "insert into PreTestConfig (testName,result,execuationDetails,timestamp,deviceId) VALUES (:testName,:result,:execuationDetails,:timestamp,:deviceId)", nativeQuery = true)
+    @Transactional
+    void logPreTestReport(@Param("testName") String testName,@Param("result") String result, @Param("execuationDetails") String  execuationDetails,@Param("timestamp") String  timestamp,@Param("deviceId") long  deviceId);
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/ConfigDetailsRestModel.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/ConfigDetailsRestModel.java
new file mode 100644 (file)
index 0000000..143e726
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.rest.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ConfigDetailsRestModel {
+
+       @JsonProperty(value = JSONTags.TAG_ROUTER)
+       String router;
+       
+       @JsonProperty(value = JSONTags.TAG_DATE)
+       String date;
+       
+       public ConfigDetailsRestModel() {
+               super();
+       }
+       public String getRouter() {
+               return router;
+       }
+       
+       public void setRouter(String router) {
+               this.router = router;
+       }
+
+       public String getDate() {
+               return date;
+       }
+
+       public void setDate(String date) {
+               this.date = date;
+       }
+       
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/JSONTags.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/JSONTags.java
new file mode 100644 (file)
index 0000000..54b5c0f
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.rest.model;
+
+public class JSONTags {
+
+       public static final String TAG_REQUEST_FNAME = "first_name";
+       public static final String TAG_REQUEST_MNAME = "middle_name";
+       public static final String TAG_STATUS_SUCCESS = "success";
+       public static final String TAG_RESPONSE_STATUS = "status";
+       public static final String TAG_REQUEST_FROM = "request_from";
+       public static final String TAG_REQUEST_ID = "request_id";
+       public static final String TAG_RESPONSE_DETAIL = "response_detail";
+       public static final String TAG_RESPONSE_BODY = "response_body";
+       public static final String TAG_REQUEST_BODY = "request_body";
+       public static final String TAG_RESPONSE_MESSAGE = "request";
+       public static final String TAG_ERROR_CODE = "error_code";
+       public static final String TAG_ERROR_CODE_SUCCESS = "100";
+       
+       
+       public static final String TAG_ROUTER = "router";
+       public static final String TAG_IPSLA = "ipsla";
+       public static final String TAG_OSPF = "ospf";
+       public static final String TAG_DATE = "date";
+       public static final String TAG_COS_ENTRY_NUMBER = "cos-entry-number";
+       public static final String TAG_DESTINATION_ADDRESS = "destination-address";
+       public static final String TAG_SOURCE_ADDRESS = "source-address";
+       public static final String TAG_CUSTOMER_NAME = "customer-name";
+       public static final String TAG_PROTOCOL_NAME = "protocol-name";
+       
+       public static final String TAG_AS_NUMBER = "as-number";
+       public static final String TAG_ROUTER_ID = "router-id";
+       public static final String TAG_PEER_IP = "peer-ip";
+       
+       public static final String TAG_PROCESS_ID = "process-id";
+       
+
+}
diff --git a/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/PreTestModel.java b/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/PreTestModel.java
new file mode 100644 (file)
index 0000000..0a58121
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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 com.onap.sdnc.reports.rest.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class PreTestModel implements Serializable{
+
+       private static final long serialVersionUID = -3009157732242241606L;
+       
+       private long testid;
+       
+       private long deviceid;
+       
+       private String testName;
+       
+       private String deviceIP,execuationDetails,result;
+       
+       private Date timeStamp;
+
+       public PreTestModel(long testid, long deviceid, String testName, String deviceIP, String execuationDetails,
+                       String result, Date timeStamp) {
+               super();
+               this.testid = testid;
+               this.deviceid = deviceid;
+               this.testName = testName;
+               this.deviceIP = deviceIP;
+               this.execuationDetails = execuationDetails;
+               this.result = result;
+               this.timeStamp = timeStamp;
+       }
+
+       @Override
+       public String toString() {
+               return "PreTestModel [testid=" + testid + ", deviceid=" + deviceid + ", testName=" + testName + ", deviceName="
+                               + deviceIP + ", execuationDetails=" + execuationDetails + ", result=" + result + ", timeStamp="
+                               + timeStamp + "]";
+       }
+
+       public long getTestid() {
+               return testid;
+       }
+
+       public void setTestid(long testid) {
+               this.testid = testid;
+       }
+
+       public long getDeviceid() {
+               return deviceid;
+       }
+
+       public void setDeviceid(long deviceid) {
+               this.deviceid = deviceid;
+       }
+
+       public String getTestName() {
+               return testName;
+       }
+
+       public void setTestName(String testName) {
+               this.testName = testName;
+       }
+
+       public String getDeviceIP() {
+               return deviceIP;
+       }
+
+       public void setDeviceName(String deviceName) {
+               this.deviceIP = deviceName;
+       }
+
+       public String getExecuationDetails() {
+               return execuationDetails;
+       }
+
+       public void setExecuationDetails(String execuationDetails) {
+               this.execuationDetails = execuationDetails;
+       }
+
+       public String getResult() {
+               return result;
+       }
+
+       public void setResult(String result) {
+               this.result = result;
+       }
+
+       public Date getTimeStamp() {
+               return timeStamp;
+       }
+
+       public void setTimeStamp(Date timeStamp) {
+               this.timeStamp = timeStamp;
+       }
+}
diff --git a/SdncReports/SdncReportsDao/src/main/resources/application.properties b/SdncReports/SdncReportsDao/src/main/resources/application.properties
new file mode 100644 (file)
index 0000000..71ead1b
--- /dev/null
@@ -0,0 +1,11 @@
+spring.jpa.generate-ddl=true
+spring.datasource.url=jdbc:mariadb://localhost:3306/testreports
+spring.datasource.username=root
+spring.datasource.password=12345
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
+
+spring.datasource.testWhileIdle=true
+
+#spring.jpa.hibernate.ddl-auto=update
+
diff --git a/SdncReports/SdncReportsDao/src/test/resources/application.properties b/SdncReports/SdncReportsDao/src/test/resources/application.properties
new file mode 100644 (file)
index 0000000..bf76714
--- /dev/null
@@ -0,0 +1,17 @@
+# H2 DB Details
+spring.jpa.hibernate.ddl-auto = update
+spring.jpa.database = HSQL
+spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.HSQLDialect
+spring.datasource.driverClassName = org.hsqldb.jdbcDriver
+spring.datasource.url: jdbc:hsqldb:mem:scratchdb
+spring.datasource.username =sa
+spring.datasource.password =sa
+
+spring.datasource.tomcat.max-wait=20000
+spring.datasource.tomcat.max-active=50
+spring.datasource.tomcat.max-idle=20
+spring.datasource.tomcat.min-idle=15
+
+spring.jpa.show-sql=true
+
+
diff --git a/SdncReports/pom.xml b/SdncReports/pom.xml
new file mode 100644 (file)
index 0000000..65d209d
--- /dev/null
@@ -0,0 +1,65 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+
+
+       <groupId>org.onap.ccsdk.parent</groupId>        
+       <artifactId>SdncReports</artifactId>
+       <version>0.0.1-SNAPSHOT</version>
+       <packaging>pom</packaging>
+
+       <parent>
+               <groupId>org.springframework.boot</groupId>
+               <artifactId>spring-boot-starter-parent</artifactId>
+               <version>1.5.4.RELEASE</version>
+       </parent>
+       
+       <modules>
+               <module>SdncReportsDao</module>
+               <module>SdncReportsApi</module>         
+       </modules>
+
+       <build>
+
+               <plugins>
+                       <plugin>
+                               <groupId>org.jacoco</groupId>
+                               <artifactId>jacoco-maven-plugin</artifactId>
+                               <version>0.7.5.201505241946</version>
+                               <executions>
+                                       <!-- Prepares the property pointing to the JaCoCo runtime agent which 
+                                               is passed as VM argument when Maven the Surefire plugin is executed. -->
+                                       <execution>
+                                               <id>pre-unit-test</id>
+                                               <goals>
+                                                       <goal>prepare-agent</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <!-- Sets the path to the file which contains the execution data. -->
+                                                       <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
+                                                       <!-- Sets the name of the property containing the settings for JaCoCo 
+                                                               runtime agent. -->
+                                                       <propertyName>surefireArgLine</propertyName>
+                                               </configuration>
+                                       </execution>
+                                       <!-- Ensures that the code coverage report for unit tests is created 
+                                               after unit tests have been run. -->
+                                       <execution>
+                                               <id>post-unit-test</id>
+                                               <phase>test</phase>
+                                               <goals>
+                                                       <goal>report</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <!-- Sets the path to the file which contains the execution data. -->
+                                                       <dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
+                                                       <!-- Sets the output directory for the code coverage report. -->
+                                                       <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
+                                               </configuration>
+                                       </execution>
+                               </executions>
+                       </plugin>
+               </plugins>
+       </build>
+
+</project>
\ No newline at end of file
diff --git a/configbackuprestore/getBackupVnfDetailService/pom.xml b/configbackuprestore/getBackupVnfDetailService/pom.xml
new file mode 100644 (file)
index 0000000..a5259f0
--- /dev/null
@@ -0,0 +1,154 @@
+<?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">
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <groupId>org.onap.ccsdk.parent</groupId>
+               <artifactId>configbackuprestore</artifactId>
+               <version>1.0-SNAPSHOT</version>
+       </parent>
+       <groupId>com.onap.sdnc.vnfbackup</groupId>
+       <artifactId>getBackupVnfDetailService</artifactId>
+       <version>1.0-SNAPSHOT</version>
+       <name>getBackupVnfDetailService</name>
+       <url>http://maven.apache.org</url>
+       <properties>
+               <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+       </properties>
+       <dependencies>
+               <dependency>
+                       <groupId>junit</groupId>
+                       <artifactId>junit</artifactId>
+                       <version>4.4</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.mariadb.jdbc</groupId>
+                       <artifactId>mariadb-java-client</artifactId>
+                       <version>1.1.9</version>
+               </dependency>
+               <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
+               <dependency>
+                       <groupId>commons-codec</groupId>
+                       <artifactId>commons-codec</artifactId>
+                       <version>1.9</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-web</artifactId>
+                       <version>1.5.4.RELEASE</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework</groupId>
+                       <artifactId>spring-context</artifactId>
+                       <version>4.3.9.RELEASE</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-tomcat</artifactId>
+                       <scope>provided</scope>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.apache.tomcat.embed</groupId>
+                       <artifactId>tomcat-embed-jasper</artifactId>
+                       <scope>provided</scope>
+               </dependency>
+
+
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-devtools</artifactId>
+                       <optional>true</optional>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-test</artifactId>
+                       <scope>test</scope>
+                       <version>1.5.3.RELEASE</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-data-jpa</artifactId>
+               </dependency>
+
+               <!-- Add Log4j2 Dependency -->
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-log4j2</artifactId>
+               </dependency>
+               <!-- https://mvnrepository.com/artifact/org.javers/javers-core -->
+               <dependency>
+                       <groupId>org.javers</groupId>
+                       <artifactId>javers-core</artifactId>
+                       <version>3.9.3</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.json</groupId>
+                       <artifactId>json</artifactId>
+                       <version>20180130</version>
+               </dependency>
+
+               <!-- https://mvnrepository.com/artifact/com.flipkart.zjsonpatch/zjsonpatch -->
+               <dependency>
+                       <groupId>com.flipkart.zjsonpatch</groupId>
+                       <artifactId>zjsonpatch</artifactId>
+                       <version>0.2.1</version>
+               </dependency>
+
+       </dependencies>
+       <build>
+       <plugins>
+       <plugin>
+    <groupId>org.jacoco</groupId>
+    <artifactId>jacoco-maven-plugin</artifactId>
+    <version>0.7.5.201505241946</version>
+    <executions>
+        <!--
+            Prepares the property pointing to the JaCoCo runtime agent which
+            is passed as VM argument when Maven the Surefire plugin is executed.
+        -->
+        <execution>
+            <id>pre-unit-test</id>
+            <goals>
+                <goal>prepare-agent</goal>
+            </goals>
+            <configuration>
+                <!-- Sets the path to the file which contains the execution data. -->
+                <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
+                <!--
+                    Sets the name of the property containing the settings
+                    for JaCoCo runtime agent.
+                -->
+                <propertyName>surefireArgLine</propertyName>
+            </configuration>
+        </execution>
+        <!--
+            Ensures that the code coverage report for unit tests is created after
+            unit tests have been run.
+        -->
+        <execution>
+            <id>post-unit-test</id>
+            <phase>test</phase>
+            <goals>
+                <goal>report</goal>
+            </goals>
+            <configuration>
+                <!-- Sets the path to the file which contains the execution data. -->
+                <dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
+                <!-- Sets the output directory for the code coverage report. -->
+                <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
+            </configuration>
+        </execution>
+    </executions>
+</plugin>
+</plugins>
+       </build>
+</project>
\ No newline at end of file
diff --git a/configbackuprestore/getBackupVnfDetailService/read.md b/configbackuprestore/getBackupVnfDetailService/read.md
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/controller/VnfComparisonController.java b/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/controller/VnfComparisonController.java
new file mode 100644 (file)
index 0000000..2f83368
--- /dev/null
@@ -0,0 +1,68 @@
+package com.onap.sdnc.vnfcomparsion.controller;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfCompareResponse;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfConfigDetailsDB;
+import com.onap.sdnc.vnfconfigcomparsion.service.VnfComparisonService;
+
+
+@RestController
+public class VnfComparisonController {
+       
+       private static final Logger logger = Logger.getLogger(VnfComparisonController.class);
+
+       @Autowired
+       VnfComparisonService vnfComparisonService;
+       
+       
+       @RequestMapping(value="/getAllBackupVnfIds", method=RequestMethod.GET,produces="application/json")
+       public List<VnfConfigDetailsDB>  getAllBackupVnfIds() {
+               return vnfComparisonService.getAllBackupVnfIds();
+       }
+       
+       
+       @RequestMapping(value="/configcomparison/{vnfid}", method = RequestMethod.POST,produces="application/json")
+       public VnfCompareResponse configComparison(@RequestBody String versionNames,@PathVariable("vnfid") String vnfId) {
+               VnfCompareResponse vnfCompareResponse = null;
+               try {
+                       JSONObject versionId = new JSONObject(versionNames);
+                       vnfCompareResponse = vnfComparisonService.getConfigurationDeatils(versionId,vnfId);
+               
+       } catch (JSONException e1) {
+               logger.error("exception occered"+e1);
+       }
+       
+       return vnfCompareResponse;
+}
+       
+       @RequestMapping(value="/configDetailsByIdVersion/{vnfid}", method = RequestMethod.POST,produces="application/json")
+       public VnfCompareResponse getVnfDetailsOfVersionsAndVnfID(@RequestBody String versionNames,@PathVariable("vnfid") String vnfId) {
+               VnfCompareResponse vnfCompareResponse = null;
+               try {
+                       JSONObject versionId = new JSONObject(versionNames);
+                       vnfCompareResponse = vnfComparisonService.getConfigDeatilsByVnfIdVnfVersion(versionId,vnfId);
+               
+       } catch (JSONException e1) {
+               logger.error("exception occered"+e1);
+       }
+       
+       return vnfCompareResponse;
+}
+       
+       @RequestMapping(value="/configDetailsById/{vnfid}", method = RequestMethod.GET,produces="application/json")
+       public List<VnfConfigDetailsDB> getVnfDetailsOfVnfID(@PathVariable("vnfid") String vnfId) {
+               List<VnfConfigDetailsDB> vnfConfigDetails = null;
+               vnfConfigDetails = vnfComparisonService.getConfigurationDeatils(vnfId);
+       return vnfConfigDetails;
+}
+}
diff --git a/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/dao/VnfComparisonRepository.java b/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/dao/VnfComparisonRepository.java
new file mode 100644 (file)
index 0000000..265206d
--- /dev/null
@@ -0,0 +1,30 @@
+package com.onap.sdnc.vnfcomparsion.dao;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfConfigDetailsDB;
+
+
+@Repository
+public interface VnfComparisonRepository extends JpaRepository<VnfConfigDetailsDB, Serializable>{
+       
+       
+       @Query(value = "Select * from vnfconfigdetails where vnfid = :vnfid", nativeQuery = true)
+       List<VnfConfigDetailsDB> getVnfDetailsByVnfID(@Param("vnfid") String vnfid);
+
+       @Query(value = "Select * from vnfconfigdetails where vnfversion = :vnfversion and vnfid = :vnfid", nativeQuery = true)
+       VnfConfigDetailsDB getVnfDetails(@Param("vnfversion") String vnfversion, @Param("vnfid") String vnfid);
+
+       public static final String FIND_VNFID = "SELECT * FROM vnfconfigdetails group by vnfid";
+
+       @Query(value= FIND_VNFID,nativeQuery = true) 
+       List<VnfConfigDetailsDB> findvnfidvnfname();
+
+}
diff --git a/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/dao/VnfIds.java b/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/dao/VnfIds.java
new file mode 100644 (file)
index 0000000..51210b1
--- /dev/null
@@ -0,0 +1,7 @@
+package com.onap.sdnc.vnfcomparsion.dao;
+
+public interface VnfIds {
+       
+       String getVnfID();
+
+}
diff --git a/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfCompareResponse.java b/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfCompareResponse.java
new file mode 100644 (file)
index 0000000..b684541
--- /dev/null
@@ -0,0 +1,16 @@
+package com.onap.sdnc.vnfconfigcomparsion.model;
+
+import java.util.List;
+
+public class VnfCompareResponse {
+
+       private List<VnfDetails> vnfDetails;
+
+       public List<VnfDetails> getVnfDetails() {
+               return vnfDetails;
+       }
+
+       public void setVnfDetails(List<VnfDetails> vnfDetails) {
+               this.vnfDetails = vnfDetails;
+       }
+}
diff --git a/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfConfigDetailsDB.java b/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfConfigDetailsDB.java
new file mode 100644 (file)
index 0000000..7a62dc2
--- /dev/null
@@ -0,0 +1,108 @@
+package com.onap.sdnc.vnfconfigcomparsion.model;
+
+import java.sql.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "vnfconfigdetails", schema = "testreports")
+public class VnfConfigDetailsDB {
+
+       private static final long serialVersionUID = 1L;
+
+       @Id
+       @GeneratedValue
+       private int id;
+       
+       @Column(name = "vnfid")
+       private String vnfid;
+
+       @Column(name = "vnfversion")
+       private String vnfversion;
+
+       @Column(name = "vnfname")
+       private String vnfname;
+
+       @Column(name = "configinfo")
+       @Lob
+       private String configinfo;
+
+       @Column(name = "creationdate")
+       private Date creationdate;
+
+       @Column(name = "lastupdated")
+       private String lastupdated;
+
+       @Column(name = "status")
+       private String status;
+
+       public int getId() {
+               return id;
+       }
+
+       public void setId(int id) {
+               this.id = id;
+       }
+
+       public String getVnfid() {
+               return vnfid;
+       }
+
+       public void setVnfid(String vnfid) {
+               this.vnfid = vnfid;
+       }
+
+       public String getVnfversion() {
+               return vnfversion;
+       }
+
+       public void setVnfversion(String vnfversion) {
+               this.vnfversion = vnfversion;
+       }
+
+       public String getVnfname() {
+               return vnfname;
+       }
+
+       public void setVnfname(String vnfname) {
+               this.vnfname = vnfname;
+       }
+
+       public String getConfiginfo() {
+               return configinfo;
+       }
+
+       public void setConfiginfo(String configinfo) {
+               this.configinfo = configinfo;
+       }
+
+       public Date getCreationdate() {
+               return creationdate;
+       }
+
+       public void setCreationdate(Date creationdate) {
+               this.creationdate = creationdate;
+       }
+
+       public String getLastupdated() {
+               return lastupdated;
+       }
+
+       public void setLastupdated(String lastupdated) {
+               this.lastupdated = lastupdated;
+       }
+
+       public String getStatus() {
+               return status;
+       }
+
+       public void setStatus(String status) {
+               this.status = status;
+       }
+
+}
diff --git a/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfDetails.java b/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfDetails.java
new file mode 100644 (file)
index 0000000..56b5ee2
--- /dev/null
@@ -0,0 +1,27 @@
+package com.onap.sdnc.vnfconfigcomparsion.model;
+
+public class VnfDetails {
+
+       private String vnfId;
+       private String vnfDeatils;
+       private String vnfversion;
+       
+       public String getVnfversion() {
+               return vnfversion;
+       }
+       public void setVnfversion(String vnfversion) {
+               this.vnfversion = vnfversion;
+       }
+       public String getVnfDeatils() {
+               return vnfDeatils;
+       }
+       public void setVnfDeatils(String vnfDeatils) {
+               this.vnfDeatils = vnfDeatils;
+       }
+       public String getVnfId() {
+               return vnfId;
+       }
+       public void setVnfId(String vnfId) {
+               this.vnfId = vnfId;
+       }
+}
diff --git a/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfComparisonService.java b/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfComparisonService.java
new file mode 100644 (file)
index 0000000..73111e6
--- /dev/null
@@ -0,0 +1,96 @@
+package com.onap.sdnc.vnfconfigcomparsion.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.onap.sdnc.vnfcomparsion.dao.VnfComparisonRepository;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfCompareResponse;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfConfigDetailsDB;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfDetails;
+
+@Service
+public class VnfComparisonService {
+
+       private static final Logger logger = LogManager.getLogger(VnfComparisonService.class);
+
+       @Autowired
+       VnfComparisonRepository vnfComparisonRepository;
+
+       //Returns vnfconfig details if at list 2 and at most 4 versions selected.
+       public VnfCompareResponse getConfigurationDeatils(JSONObject vnfVersionNames, String vnfId) {
+               VnfCompareResponse vnfCompareResponse = new VnfCompareResponse();
+               List<VnfDetails> vnfDetailsList = new ArrayList<VnfDetails>();
+               VnfDetails vnfDetails = null;
+               try {
+                       JSONArray vnfIdArray = vnfVersionNames.getJSONArray("versionNames");
+                       if (vnfIdArray.length() >= 2 && vnfIdArray.length() <= 4) {
+                               for (int i = 0; i < vnfIdArray.length(); i++) {
+                                       
+                                               VnfConfigDetailsDB vnfconfigdetails = vnfComparisonRepository
+                                                               .getVnfDetails(vnfIdArray.get(i).toString(), vnfId);
+                                               vnfDetails = new VnfDetails();
+                                               vnfDetails.setVnfDeatils(vnfconfigdetails.getConfiginfo());
+                                               vnfDetails.setVnfId(vnfconfigdetails.getVnfid());
+                                               vnfDetails.setVnfversion(vnfconfigdetails.getVnfversion());
+                                               vnfDetailsList.add(vnfDetails);
+                                               logger.debug("Versions : " + vnfIdArray.get(i));
+                               }
+                       }/*else {
+                               throw new RuntimeException("At list 2 and at most 4 versions need to be selected");
+                       }*/
+               } catch (JSONException jSONException1) {
+                       
+                       logger.debug("JSONException occered " + jSONException1);
+                       
+               }
+               vnfCompareResponse.setVnfDetails(vnfDetailsList);
+               return vnfCompareResponse;
+       }
+
+       //Returns vnfconfig details for any version.
+       public VnfCompareResponse getConfigDeatilsByVnfIdVnfVersion(JSONObject vnfVersionNames, String vnfId) {
+               VnfCompareResponse vnfCompareResponse = new VnfCompareResponse();
+               List<VnfDetails> vnfDetailsList = new ArrayList<VnfDetails>();
+               VnfDetails vnfDetails = null;
+               try {
+                       JSONArray vnfIdArray = vnfVersionNames.getJSONArray("versionNames");
+                       for (int i = 0; i < vnfIdArray.length(); i++) {
+                               VnfConfigDetailsDB vnfconfigdetails = vnfComparisonRepository
+                                               .getVnfDetails(vnfIdArray.get(i).toString(), vnfId);
+                               vnfDetails = new VnfDetails();
+                               vnfDetails.setVnfDeatils(vnfconfigdetails.getConfiginfo());
+                               vnfDetails.setVnfId(vnfconfigdetails.getVnfid());
+                               vnfDetails.setVnfversion(vnfconfigdetails.getVnfversion());
+                               vnfDetailsList.add(vnfDetails);
+                               logger.debug("Versions : " + vnfIdArray.get(i));
+                       }
+               } catch (JSONException jSONException2) {
+
+                       logger.debug("JSONException occered " + jSONException2);
+               }
+               vnfCompareResponse.setVnfDetails(vnfDetailsList);
+               return vnfCompareResponse;
+       }
+       
+       //Returns backup vnf details according to vnf id.
+       public List<VnfConfigDetailsDB> getConfigurationDeatils(String vnfId) {
+               List<VnfConfigDetailsDB> vnfconfigdetails = vnfComparisonRepository.getVnfDetailsByVnfID(vnfId);
+               return vnfconfigdetails;
+       }
+
+       //Returns all backup vnf details.
+       public List<VnfConfigDetailsDB> getAllBackupVnfIds() {
+               List<VnfConfigDetailsDB> vnfconfigdetails = vnfComparisonRepository.findvnfidvnfname();
+               
+               return vnfconfigdetails;
+       }
+
+}
diff --git a/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfDetailsForVnfIDAndVnfVersionService.java b/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfDetailsForVnfIDAndVnfVersionService.java
new file mode 100644 (file)
index 0000000..27db0ac
--- /dev/null
@@ -0,0 +1,56 @@
+/*package com.onap.sdnc.vnfconfigcomparsion.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.onap.sdnc.vnfcomparsion.dao.VnfComparisonRepository;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfCompareResponse;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfConfigDetailsDB;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfDetails;
+
+public class VnfDetailsForVnfIDAndVnfVersionService {
+       
+       private static final Logger logger = LogManager.getLogger(VnfComparisonService.class);
+       
+       @Autowired
+       VnfComparisonRepository vnfComparisonRepository;
+
+       public VnfCompareResponse getConfigurationDeatils(JSONObject vnfVersionNames, String vnfId) {
+               
+               VnfCompareResponse vnfCompareResponse = new VnfCompareResponse();
+               List<VnfDetails> vnfDetailsList = new ArrayList<VnfDetails>();
+               VnfDetails vnfDetails = new VnfDetails();
+               try {
+                       JSONArray vnfIdArray = vnfVersionNames.getJSONArray("versionNames");
+                               for (int i = 0; i < vnfIdArray.length(); i++) {
+                                       try {
+                                               VnfConfigDetailsDB vnfconfigdetails = vnfComparisonRepository
+                                                               .getVnfDetails(vnfIdArray.get(i).toString(), vnfId);
+                                               vnfDetails.setVnfDeatils(vnfconfigdetails.getConfiginfo());
+                                               vnfDetails.setVnfId(vnfconfigdetails.getVnfid());
+                                               vnfDetailsList.add(vnfDetails);
+                                               logger.debug("Versions : " + vnfIdArray.get(i));
+                                       } catch (Exception e) {
+                                               // TODO Auto-generated catch block
+                                               // e.printStackTrace();
+                                       }
+                               }
+               } catch (JSONException jSONException) {
+
+                       throw new RuntimeException("Enter atlist 2 versions and maximum 4 versions");
+               }
+               vnfCompareResponse.setVnfDetails(vnfDetailsList);
+               return vnfCompareResponse;
+               
+       }
+
+}
+*/
\ No newline at end of file
diff --git a/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfDetailsForVnfIDService.java b/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfDetailsForVnfIDService.java
new file mode 100644 (file)
index 0000000..2aff5bd
--- /dev/null
@@ -0,0 +1,36 @@
+/*package com.onap.sdnc.vnfconfigcomparsion.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.onap.sdnc.vnfcomparsion.dao.VnfComparisonRepository;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfCompareResponse;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfConfigDetailsDB;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfDetails;
+
+public class VnfDetailsForVnfIDService {
+       
+       @Autowired
+       VnfComparisonRepository vnfComparisonRepository;
+
+       public VnfCompareResponse getConfigurationDeatils(String vnfId) {
+               VnfCompareResponse vnfCompareResponse = new VnfCompareResponse();
+               List<VnfDetails> vnfDetailsList = new ArrayList<VnfDetails>();
+               VnfDetails vnfDetails = new VnfDetails();
+                       try {
+                               VnfConfigDetailsDB vnfconfigdetails = vnfComparisonRepository.getVnfDetailsByVnfID(vnfId);
+                               vnfDetails.setVnfDeatils(vnfconfigdetails.getConfiginfo());
+                               vnfDetails.setVnfId(vnfconfigdetails.getVnfid());
+                               vnfDetailsList.add(vnfDetails);
+                               } catch (Exception e) {
+                               // TODO Auto-generated catch block
+                               // e.printStackTrace();
+                               }
+               vnfCompareResponse.setVnfDetails(vnfDetailsList);
+               return vnfCompareResponse;
+       }
+
+}
+*/
\ No newline at end of file
diff --git a/configbackuprestore/getBackupVnfDetailService/src/test/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfComparisonServiceTest.java b/configbackuprestore/getBackupVnfDetailService/src/test/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfComparisonServiceTest.java
new file mode 100644 (file)
index 0000000..0afcd69
--- /dev/null
@@ -0,0 +1,123 @@
+package com.onap.sdnc.vnfconfigcomparsion.service;
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Matchers.anyString;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+
+import com.onap.sdnc.vnfcomparsion.dao.VnfComparisonRepository;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfCompareResponse;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfConfigDetailsDB;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfDetails;
+
+
+
+@RunWith(MockitoJUnitRunner.class)
+public class VnfComparisonServiceTest {
+
+       @InjectMocks
+       VnfComparisonService vnfComparisonService;
+       
+       @Mock
+       VnfComparisonRepository vnfComparisonRepository;
+       
+       @Test
+       public void testGetConfigurationDeatils_1() throws JSONException {
+               VnfCompareResponse response = new VnfCompareResponse();
+               String exampleJson = "{\"vnfname\":\"vnfversion\":[\"vnf1\",\"1.0\"]}";
+               JSONObject vnfVersionNames = new JSONObject("{ \"versionNames\":[\"1.0\"]  }");
+               String vnfId = "1a";
+               List<VnfDetails> vnfDetailslist = new ArrayList<VnfDetails>();
+               VnfDetails vnfdetails = new VnfDetails();
+               JSONArray vnfIdArray = vnfVersionNames.getJSONArray("versionNames");
+               VnfConfigDetailsDB value = new VnfConfigDetailsDB();
+               value.setVnfid("1a");
+               value.setConfiginfo(exampleJson);
+               value.setId(1);
+               value.setLastupdated("05-22-2018");
+               value.setStatus("Y");
+               value.setVnfname("vnf1");
+               value.setVnfversion("1.0");
+
+               //Mockito.when(vnfComparisonRepository.getVnfDetails(anyString(), anyString())).thenReturn(value);
+               response.setVnfDetails(vnfDetailslist);
+               response = vnfComparisonService.getConfigurationDeatils(vnfVersionNames, vnfId);
+               assertEquals(value.getConfiginfo(), exampleJson);
+               
+       }
+       
+       @Test
+       public void testGetConfigurationDeatils() throws Exception {
+               VnfCompareResponse response = new VnfCompareResponse();
+               String exampleJson = "{\"vnfname\":\"vnfversion\":[\"vnf1\",\"1.0\"]}";
+               JSONObject vnfVersionNames = new JSONObject("{ \"versionNames\":[\"1.0\",\"2.0\"]  }");
+               // String vnfversion = "{ \"versionNames\":[\"Version-1\"] }";
+               String vnfId = "1a";
+               List<VnfDetails> vnfDetailslist = new ArrayList<VnfDetails>();
+               VnfDetails vnfdetails = new VnfDetails();
+               JSONArray vnfIdArray = vnfVersionNames.getJSONArray("versionNames");
+               VnfConfigDetailsDB value = new VnfConfigDetailsDB();
+               value.setVnfid("1a");
+               value.setConfiginfo(exampleJson);
+               value.setId(1);
+               value.setLastupdated("05-22-2018");
+               value.setStatus("Y");
+               value.setVnfname("vnf1");
+               value.setVnfversion("1.0");
+
+               Mockito.when(vnfComparisonRepository.getVnfDetails(anyString(), anyString())).thenReturn(value);
+               response.setVnfDetails(vnfDetailslist);
+
+               response = vnfComparisonService.getConfigurationDeatils(vnfVersionNames, vnfId);
+               System.out.println(response);
+               assertNotNull(response);
+               assertEquals(value.getConfiginfo(), exampleJson);
+               assertEquals(value.getVnfid(), vnfId);
+               assertEquals(value.getStatus(), "Y");
+       }
+       
+       @Test
+       public void testgetConfigDeatilsByVnfIdVnfVersion() throws JSONException {
+               VnfCompareResponse response = new VnfCompareResponse();
+               String exampleJson = "{\"vnfname\":\"vnfversion\":[\"vnf1\",\"1.0\"]}";
+               JSONObject vnfVersionNames = new JSONObject("{ \"versionNames\":[\"1.0\",\"2.0\"]  }");
+               // String vnfversion = "{ \"versionNames\":[\"Version-1\"] }";
+               String vnfId = "1a";
+               List<VnfDetails> vnfDetailslist = new ArrayList<VnfDetails>();
+               VnfDetails vnfdetails = new VnfDetails();
+               JSONArray vnfIdArray = vnfVersionNames.getJSONArray("versionNames");
+               VnfConfigDetailsDB value = new VnfConfigDetailsDB();
+               value.setVnfid("1a");
+               value.setConfiginfo(exampleJson);
+               value.setId(1);
+               value.setLastupdated("05-22-2018");
+               value.setStatus("Y");
+               value.setVnfname("vnf1");
+               value.setVnfversion("1.0");
+
+               Mockito.when(vnfComparisonRepository.getVnfDetails(anyString(), anyString())).thenReturn(value);
+               response.setVnfDetails(vnfDetailslist);
+
+               response = vnfComparisonService.getConfigDeatilsByVnfIdVnfVersion(vnfVersionNames, vnfId);
+               System.out.println(response);
+               assertNotNull(response);
+               assertEquals(value.getConfiginfo(), exampleJson);
+               assertEquals(value.getVnfid(), vnfId);
+               assertEquals(value.getStatus(), "Y");
+       }
+
+
+}
diff --git a/configbackuprestore/pom.xml b/configbackuprestore/pom.xml
new file mode 100644 (file)
index 0000000..c925197
--- /dev/null
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+       <groupId>org.onap.ccsdk.parent</groupId>
+       <artifactId>configbackuprestore</artifactId>
+       <version>1.0-SNAPSHOT</version>
+       <name>Archetype - configbackuprestore</name>
+       <packaging>pom</packaging>
+
+       <parent>
+               <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-parent</artifactId>
+                       <version>1.5.4.RELEASE</version>
+    </parent>
+
+       <properties>
+               <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+       </properties>
+
+       <dependencies>
+               <dependency>
+                       <groupId>junit</groupId>
+                       <artifactId>junit</artifactId>
+                       <version>3.8.1</version>
+                       <scope>test</scope>
+               </dependency>
+       </dependencies>
+
+
+
+       <modules>               
+               <module>getBackupVnfDetailService</module>
+               <module>vnfconfigreportsservice</module>
+  </modules>
+
+  <build>
+<plugins>
+       <plugin>
+    <groupId>org.jacoco</groupId>
+    <artifactId>jacoco-maven-plugin</artifactId>
+    <version>0.7.5.201505241946</version>
+    <executions>
+        <!--
+            Prepares the property pointing to the JaCoCo runtime agent which
+            is passed as VM argument when Maven the Surefire plugin is executed.
+        -->
+        <execution>
+            <id>pre-unit-test</id>
+            <goals>
+                <goal>prepare-agent</goal>
+            </goals>
+            <configuration>
+                <!-- Sets the path to the file which contains the execution data. -->
+                <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
+                <!--
+                    Sets the name of the property containing the settings
+                    for JaCoCo runtime agent.
+                -->
+                <propertyName>surefireArgLine</propertyName>
+            </configuration>
+        </execution>
+        <!--
+            Ensures that the code coverage report for unit tests is created after
+            unit tests have been run.
+        -->
+        <execution>
+            <id>post-unit-test</id>
+            <phase>test</phase>
+            <goals>
+                <goal>report</goal>
+            </goals>
+            <configuration>
+                <!-- Sets the path to the file which contains the execution data. -->
+                <dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
+                <!-- Sets the output directory for the code coverage report. -->
+                <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
+            </configuration>
+        </execution>
+    </executions>
+       </plugin>
+</plugins>
+</build>
+</project>
diff --git a/configbackuprestore/read.md b/configbackuprestore/read.md
new file mode 100644 (file)
index 0000000..3667cd3
--- /dev/null
@@ -0,0 +1,7 @@
+Pconfigbackuprestore
+---------------------
+It is the parent of bellow services
+
+vnfconfigbackupservice
+getBackupVnfDetailService
+vnfconfigreportsservice
diff --git a/configbackuprestore/vnfconfigreportsservice/README.md b/configbackuprestore/vnfconfigreportsservice/README.md
new file mode 100644 (file)
index 0000000..4462cbe
--- /dev/null
@@ -0,0 +1,3 @@
+vnfconfigreportsservice
+------------------------
+It will show all the information about backup vnf configuration details.
diff --git a/configbackuprestore/vnfconfigreportsservice/pom.xml b/configbackuprestore/vnfconfigreportsservice/pom.xml
new file mode 100644 (file)
index 0000000..1d83bd0
--- /dev/null
@@ -0,0 +1,112 @@
+<?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">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+               <groupId>org.onap.ccsdk.parent</groupId>
+               <artifactId>configbackuprestore</artifactId>
+               <version>1.0-SNAPSHOT</version>
+       </parent>
+  <groupId>com.onap.sdnc.vnfbackup</groupId>
+  <artifactId>vnfconfigreportsservice</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <name>vnfconfigreportsservice</name>
+  <url>http://maven.apache.org</url>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  <dependencies>
+               <dependency>
+                       <groupId>junit</groupId>
+                       <artifactId>junit</artifactId>
+                       <version>4.11</version>
+                       <scope>test</scope>
+               </dependency>
+               
+               <dependency>
+    <groupId>javax.servlet</groupId>
+    <artifactId>jstl</artifactId>
+    <scope>provided</scope>
+</dependency>
+               
+               <dependency>
+                       <groupId>org.mariadb.jdbc</groupId>
+                       <artifactId>mariadb-java-client</artifactId>
+                       <version>1.1.9</version>
+               </dependency>
+               <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
+               <dependency>
+                       <groupId>commons-codec</groupId>
+                       <artifactId>commons-codec</artifactId>
+                       <version>1.9</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-web</artifactId>
+                       <version>1.5.4.RELEASE</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework</groupId>
+                       <artifactId>spring-context</artifactId>
+                       <version>4.3.9.RELEASE</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-tomcat</artifactId>
+                       <scope>provided</scope>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.apache.tomcat.embed</groupId>
+                       <artifactId>tomcat-embed-jasper</artifactId>
+                       <scope>provided</scope>
+               </dependency>
+
+
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-devtools</artifactId>
+                       <optional>true</optional>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-test</artifactId>
+                       <scope>test</scope>
+                       <version>1.5.3.RELEASE</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-data-jpa</artifactId>
+               </dependency>
+
+               <!-- Add Log4j2 Dependency -->
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-log4j2</artifactId>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.json</groupId>
+                       <artifactId>json</artifactId>
+                       <version>20180130</version>
+               </dependency>
+               <!-- https://mvnrepository.com/artifact/com.fasterxml/jackson-xml-databind -->
+               <dependency>
+                       <groupId>com.fasterxml</groupId>
+                       <artifactId>jackson-xml-databind</artifactId>
+                       <version>0.6.2</version>
+               </dependency>
+<dependency>
+    <groupId>org.mockito</groupId>
+    <artifactId>mockito-all</artifactId>
+    <version>1.9.5</version>
+    <scope>test</scope>
+</dependency>
+       </dependencies>
+</project>
+
diff --git a/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/controller/VnfReportsServiceController.java b/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/controller/VnfReportsServiceController.java
new file mode 100644 (file)
index 0000000..4ef1536
--- /dev/null
@@ -0,0 +1,44 @@
+package com.onap.sdnc.vnfreportsservice.controller;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.onap.sdnc.vnfreportsservice.model.VnfConfigDetailsDB;
+import com.onap.sdnc.vnfreportsservice.service.VnfReportsServiceImpl;
+
+@RestController
+public class VnfReportsServiceController {
+
+       private static final Logger logger = LogManager.getLogger(VnfReportsServiceController.class);
+
+       @Autowired
+       VnfReportsServiceImpl Vnfreportsservice;
+
+       @RequestMapping(value = "/getVnfDetBetDates/{startDate}/{endDate}", method = RequestMethod.GET, produces = "application/json")
+
+       public List<VnfConfigDetailsDB> getVnfConfigDetailsBetweenDates(
+                       @PathVariable("startDate") @DateTimeFormat(pattern = "dd-MM-yyyy") Date startDate,
+                       @PathVariable("endDate") @DateTimeFormat(pattern = "dd-MM-yyyy") Date endDate) {
+                       logger.info("Get VNF Configuration Details Inbetween 2 Dates ");
+               return Vnfreportsservice.getVnfConfigDetailsBetweenDates(startDate, endDate);
+       }
+
+       @RequestMapping(value = "/getVnfDetByVnfidBetDates/{vnfid}/{startDate}/{endDate}", method = RequestMethod.GET, produces = "application/json")
+
+       public List<VnfConfigDetailsDB> getVnfConfigDetailsByVnfIdBetweenDates(@PathVariable("vnfid") String vnfId,
+                       @PathVariable("startDate") @DateTimeFormat(pattern = "dd-MM-yyyy") Date startDate,
+                       @PathVariable("endDate") @DateTimeFormat(pattern = "dd-MM-yyyy") Date endDate) {
+               logger.info("Get VNF Configuration Details Of a VnfID Inbetween 2 Dates ");
+               return Vnfreportsservice.getVnfIdDetailsBetweenDates(vnfId, startDate, endDate);
+       }
+
+}
diff --git a/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/dao/VnfReportsServiceRepo.java b/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/dao/VnfReportsServiceRepo.java
new file mode 100644 (file)
index 0000000..1834ebe
--- /dev/null
@@ -0,0 +1,20 @@
+package com.onap.sdnc.vnfreportsservice.dao;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.onap.sdnc.vnfreportsservice.controller.VnfReportsServiceController;
+import com.onap.sdnc.vnfreportsservice.model.VnfConfigDetailsDB;
+
+
+public interface VnfReportsServiceRepo extends JpaRepository<VnfConfigDetailsDB, Long>  {
+       
+       List<VnfConfigDetailsDB> findByLastupdatedBetween(Date startDate, Date endDate);
+       List<VnfConfigDetailsDB> findByVnfidAndLastupdatedBetween(String vnfid,Date startDate,Date endDate);
+       
+}
+
+
diff --git a/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/model/VnfConfigDetailsDB.java b/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/model/VnfConfigDetailsDB.java
new file mode 100644 (file)
index 0000000..a2c08ef
--- /dev/null
@@ -0,0 +1,110 @@
+package com.onap.sdnc.vnfreportsservice.model;
+
+import java.sql.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "vnfconfigdetails", schema = "testreports")
+public class VnfConfigDetailsDB {
+
+       private static final long serialVersionUID = 1L;
+
+       @Id
+       @GeneratedValue
+       private int id;
+       
+       @Column(name = "vnfid")
+       private String vnfid;
+
+       @Column(name = "vnfversion")
+       private String vnfversion;
+
+       @Column(name = "vnfname")
+       private String vnfname;
+
+       @Column(name = "configinfo")
+       @Lob
+       private String configinfo;
+
+       @Column(name = "creationdate")
+       private Date creationdate;
+
+       @Column(name = "lastupdated")
+       private Date lastupdated;
+       
+       @Column(name = "status")
+       private String status;
+       
+
+       public int getId() {
+               return id;
+       }
+
+       public void setId(int id) {
+               this.id = id;
+       }
+
+       public String getVnfid() {
+               return vnfid;
+       }
+
+       public void setVnfid(String vnfid) {
+               this.vnfid = vnfid;
+       }
+
+       public String getVnfversion() {
+               return vnfversion;
+       }
+
+       public void setVnfversion(String vnfversion) {
+               this.vnfversion = vnfversion;
+       }
+
+       public String getVnfname() {
+               return vnfname;
+       }
+
+       public void setVnfname(String vnfname) {
+               this.vnfname = vnfname;
+       }
+
+       public String getConfiginfo() {
+               return configinfo;
+       }
+
+       public void setConfiginfo(String configinfo) {
+               this.configinfo = configinfo;
+       }
+
+       public Date getCreationdate() {
+               return creationdate;
+       }
+
+       public void setCreationdate(Date creationdate) {
+               this.creationdate = creationdate;
+       }
+
+       
+       public String getStatus() {
+               return status;
+       }
+
+       public void setStatus(String status) {
+               this.status = status;
+       }
+
+       public Date getLastupdated() {
+               return lastupdated;
+       }
+
+       public void setLastupdated(Date lastupdated) {
+               this.lastupdated = lastupdated;
+       }
+
+}
+
diff --git a/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/service/VnfReportsServiceImpl.java b/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/service/VnfReportsServiceImpl.java
new file mode 100644 (file)
index 0000000..3b4a7f8
--- /dev/null
@@ -0,0 +1,48 @@
+package com.onap.sdnc.vnfreportsservice.service;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.onap.sdnc.vnfreportsservice.dao.VnfReportsServiceRepo;
+import com.onap.sdnc.vnfreportsservice.model.VnfConfigDetailsDB;
+@Service
+public class VnfReportsServiceImpl implements Vnfreportsservice {
+       
+       private static final Logger logger = LogManager.getLogger(VnfReportsServiceImpl.class);
+
+       @Autowired
+       VnfReportsServiceRepo vnfRepo;
+
+       List<VnfConfigDetailsDB> config = null;
+
+       @Override
+       public List<VnfConfigDetailsDB> getVnfConfigDetailsBetweenDates(Date startDate, Date endDate) {
+
+               logger.info("Start Date" + startDate + "End Date" + endDate);
+               try {
+                       config = vnfRepo.findByLastupdatedBetween(startDate, endDate);
+               } catch (Exception e) {
+                       logger.error("Exception Occered Not able to get details from DB : " + e);
+               }
+
+               return config;
+       }
+
+       @Override
+       public List<VnfConfigDetailsDB> getVnfIdDetailsBetweenDates(String vnfid, Date startDate, Date endDate) {
+
+               logger.info("Vnf ID: " + vnfid + "Start Date: " + startDate + "End Date: " + endDate);
+               try {
+                       config = vnfRepo.findByVnfidAndLastupdatedBetween(vnfid, startDate, endDate);
+               } catch (Exception e) {
+                       logger.error("Exception Occered Not able to get details from DB : " + e);
+               }
+               return config;
+       }
+
+}
diff --git a/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/service/Vnfreportsservice.java b/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/service/Vnfreportsservice.java
new file mode 100644 (file)
index 0000000..3cbd205
--- /dev/null
@@ -0,0 +1,11 @@
+package com.onap.sdnc.vnfreportsservice.service;
+
+import java.util.Date;
+import java.util.List;
+import com.onap.sdnc.vnfreportsservice.model.VnfConfigDetailsDB;
+
+public interface Vnfreportsservice {
+       public List<VnfConfigDetailsDB> getVnfConfigDetailsBetweenDates(Date startDate, Date endDate);
+       public List<VnfConfigDetailsDB> getVnfIdDetailsBetweenDates(String vnfId, Date startDate, Date endDate);
+
+}
diff --git a/configbackuprestore/vnfconfigreportsservice/src/test/java/com/onap/sdnc/vnfreportsservice/service/VnfReportsServiceImplTest.java b/configbackuprestore/vnfconfigreportsservice/src/test/java/com/onap/sdnc/vnfreportsservice/service/VnfReportsServiceImplTest.java
new file mode 100644 (file)
index 0000000..e40fb05
--- /dev/null
@@ -0,0 +1,87 @@
+package com.onap.sdnc.vnfreportsservice.service;
+
+import static org.junit.Assert.*;
+
+import java.sql.Date;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.onap.sdnc.vnfreportsservice.dao.VnfReportsServiceRepo;
+import com.onap.sdnc.vnfreportsservice.model.VnfConfigDetailsDB;
+
+@RunWith(MockitoJUnitRunner.class)
+public class VnfReportsServiceImplTest {
+       
+       private static final Logger LOGGER = LoggerFactory.getLogger(VnfReportsServiceImplTest.class);
+
+       @Mock
+       VnfReportsServiceRepo vnfRepo;
+
+       @InjectMocks
+       VnfReportsServiceImpl Vnfreportsservice;
+
+               @Test
+               public void getVnfConfigDetailsBetweenDatesTest() throws Exception{
+                       VnfConfigDetailsDB db = new VnfConfigDetailsDB();
+                       db.setId(123);
+                       db.setVnfid("Vnfid");
+                       db.setVnfname("vnfname");
+                       db.setVnfversion("vnfversion");
+                       
+                       Date sDate = new Date(2018, 5, 7);
+                       Date eDate = new Date(2018, 7, 7);
+                       db.setCreationdate(sDate);
+                       db.setLastupdated(eDate);
+                       db.setStatus("status");
+                       db.setConfiginfo("configinfo");
+
+                       List<VnfConfigDetailsDB> list = new ArrayList<VnfConfigDetailsDB>();
+                       list.add(db);
+                       LOGGER.info("List of vnf config details::" + list);
+                       
+               
+                       Mockito.when(vnfRepo.findByLastupdatedBetween(sDate, eDate)).thenReturn(list);
+                       
+                       Vnfreportsservice.getVnfConfigDetailsBetweenDates(sDate, eDate);
+                       assertEquals(list, Vnfreportsservice.getVnfConfigDetailsBetweenDates(sDate, eDate));
+
+               }
+       
+               @Test
+               public void getVnfIdDetailsBetweenDatesTest() throws Exception{
+                       VnfConfigDetailsDB db = new VnfConfigDetailsDB();
+                       db.setId(123);
+                       db.setVnfid("Vnfid");
+                       db.setVnfname("vnfname");
+                       db.setVnfversion("vnfversion");
+                       
+                       Date sDate = new Date(2018, 5, 7);
+                       Date eDate = new Date(2018, 7, 7);
+                       db.setCreationdate(sDate);
+                       db.setLastupdated(eDate);
+                       db.setStatus("status");
+                       db.setConfiginfo("configinfo");
+
+                       List<VnfConfigDetailsDB> list = new ArrayList<VnfConfigDetailsDB>();
+                       list.add(db);
+                       LOGGER.info("List of vnf config details::" + list);
+                       
+               
+                       Mockito.when(vnfRepo.findByVnfidAndLastupdatedBetween("vnfid",sDate, eDate)).thenReturn(list);
+                       
+                       Vnfreportsservice.getVnfIdDetailsBetweenDates("vnfid" ,sDate, eDate);
+                       assertEquals(list, Vnfreportsservice.getVnfIdDetailsBetweenDates("vnfid",sDate, eDate));
+
+               }
+}
+
+
index 11a165f..3b3afef 100644 (file)
@@ -1,4 +1,4 @@
-GENERIC-RESOURCE-API(2016-11-11)
+GENERIC-RESOURCE-API(2017-08-24)
 ================================
 
-.. swaggerv2doc:: https://gerrit.onap.org/r/gitweb?p=sdnc/northbound.git;a=blob_plain;f=generic-resource-api/model/src/main/resources/generic-resource-api.20161111.json
+.. swaggerv2doc:: https://gerrit.onap.org/r/gitweb?p=sdnc/northbound.git;a=blob_plain;f=generic-resource-api/model/src/main/resources/generic-resource-api.20170824.json
index d1730ac..ae613f4 100755 (executable)
@@ -18,7 +18,7 @@ org.onap.ccsdk.sli.northbound.uebclient.spool.archive=/opt/onap/sdnc/ueb-listene
 org.onap.ccsdk.sli.northbound.uebclient.polling-interval=30
 org.onap.ccsdk.sli.northbound.uebclient.polling-timeout=15
 org.onap.ccsdk.sli.northbound.uebclient.client-startup-timeout=900
-org.onap.ccsdk.sli.northbound.uebclient.relevant-artifact-types=YANG_XML,VF_LICENSE,TOSCA_CSAR,UCPE_LAYER_2_CONFIGURATION
+org.onap.ccsdk.sli.northbound.uebclient.relevant-artifact-types=TOSCA_CSAR
 org.onap.ccsdk.sli.northbound.uebclient.activate-server-tls-auth=false
 org.onap.ccsdk.sli.northbound.uebclient.keystore-path=
 org.onap.ccsdk.sli.northbound.uebclient.keystore-password=
index 58b8c3e..684b6b0 100644 (file)
@@ -1,20 +1,20 @@
 [
   {
-    "id": "80dd667e.b96f28",
+    "id": "8656b138.5dcef",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 113,
-    "y": 41,
-    "z": "dffc6494.bbb2d8",
+    "x": 87.00390625,
+    "y": 63.999998569488525,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "7472205c.aef1a"
+        "434423eb.200dcc"
       ]
     ]
   },
   {
-    "id": "7472205c.aef1a",
+    "id": "434423eb.200dcc",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 304.0000057220459,
-    "y": 111.00001811981201,
-    "z": "dffc6494.bbb2d8",
+    "x": 278.0039119720459,
+    "y": 134.00001668930054,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "37ba3eae.275d42"
+        "e6e0d8a8.8bfcf8"
       ]
     ]
   },
   {
-    "id": "37ba3eae.275d42",
+    "id": "e6e0d8a8.8bfcf8",
     "type": "method",
     "name": "sdwan-attachment-topology-operation-activate",
     "xml": "<method rpc='sdwan-attachment-topology-operation-activate' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 292.00012397766113,
-    "y": 199.00000095367432,
-    "z": "dffc6494.bbb2d8",
+    "x": 266.00403022766113,
+    "y": 221.99999952316284,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "ee5288e.f42de78"
+        "5cdb946c.3b710c"
       ]
     ]
   },
   {
-    "id": "ee5288e.f42de78",
+    "id": "5cdb946c.3b710c",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 194.00013732910156,
-    "y": 885.0002890825272,
-    "z": "dffc6494.bbb2d8",
+    "x": 168.00404357910156,
+    "y": 908.0002876520157,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "b85a45bf.0bc7a8",
-        "1151bd20.7a3e23",
-        "9037088f.df5478",
-        "dae5e077.3dcd8",
-        "5bfd91ae.4a06",
-        "4bcdea66.6625d4",
-        "3d8eaf9a.38bd9",
-        "1c9f2051.6c4ec",
-        "5bbd58f7.5f7198",
-        "40c05ce.b6f2ba4",
-        "c934c812.741518",
-        "cfd66b10.01cc08",
-        "5daf20a3.56c58",
-        "235295.bc1afd6c",
-        "9bb2f2c0.a869e",
-        "78a5dd87.45acf4",
-        "12273108.2aad0f",
-        "989cf904.9df618",
-        "38de1063.b6c52",
-        "1b86e032.9e8d5",
-        "27476583.31719a",
-        "6f11d9b9.d9b5a8",
-        "d462299e.954ef8"
+        "4b9de3d9.03091c",
+        "4127df46.08ca1",
+        "aae6c90e.119798",
+        "72064d52.212b94",
+        "21e8ba33.483c86",
+        "7d9870f2.8c169",
+        "f1c987fe.e262e8",
+        "4c06f720.016118",
+        "1379096d.d52197",
+        "4fc8c244.1177ac",
+        "d4d40535.00b288",
+        "daadac76.292c6",
+        "c4a41078.ea3c4",
+        "43fe29d3.28d4b8",
+        "38c9c0d2.63a2d",
+        "9192f41d.1c9e78",
+        "19eae0e7.50657f",
+        "585348e6.e28c68",
+        "4041fa5f.8f6984",
+        "db5d0d5.71c66f",
+        "537ad820.346958",
+        "5723dd.5302dc24",
+        "390c3a59.81dbe6"
       ]
     ]
   },
   {
-    "id": "b85a45bf.0bc7a8",
+    "id": "4b9de3d9.03091c",
     "type": "set",
     "name": "set tmp.ar.allotted-resource-id,etc",
     "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n",
     "comments": "",
-    "x": 704.9935626983643,
-    "y": 152.99348783493042,
-    "z": "dffc6494.bbb2d8",
+    "x": 678.9974689483643,
+    "y": 175.99348640441895,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "7b859e23.ef0a6",
+    "id": "246c798e.5e7076",
     "type": "comment",
     "name": "set tmp ar-id to fetch resource from MDSAL",
     "info": "",
     "comments": "",
-    "x": 733.9538745880127,
-    "y": 117.02528381347656,
-    "z": "dffc6494.bbb2d8",
+    "x": 707.9577808380127,
+    "y": 140.0252823829651,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "1151bd20.7a3e23",
+    "id": "4127df46.08ca1",
     "type": "set",
     "name": "set tmp.ar.self-link",
     "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/connection-attachment-topology/'` \" />\n\n",
     "comments": "",
-    "x": 658.993501663208,
-    "y": 245.99349308013916,
-    "z": "dffc6494.bbb2d8",
+    "x": 632.997407913208,
+    "y": 268.9934916496277,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "dae5e077.3dcd8",
+    "id": "72064d52.212b94",
     "type": "execute",
     "name": "execute Properties",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n    <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",
     "comments": "",
     "outputs": 1,
-    "x": 665.255392074585,
-    "y": 333.66022205352783,
-    "z": "dffc6494.bbb2d8",
+    "x": 639.259298324585,
+    "y": 356.66022062301636,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "9037088f.df5478",
+    "id": "aae6c90e.119798",
     "type": "execute",
     "name": "generate allotted-resource tmp.ar-url",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 712.255449295044,
-    "y": 421.6602258682251,
-    "z": "dffc6494.bbb2d8",
+    "x": 686.259355545044,
+    "y": 444.6602244377136,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "8334555.85225a8",
+    "id": "ca8f4f1a.61b38",
     "type": "comment",
     "name": "GET connection-attachment-allotted-resource from mdsal",
     "info": "",
     "comments": "",
-    "x": 766.8084106445312,
-    "y": 490.53865146636963,
-    "z": "dffc6494.bbb2d8",
+    "x": 740.8123168945312,
+    "y": 513.5386500358582,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "3f9851c.f3967ae",
+    "id": "9f182507.e3c608",
     "type": "comment",
     "name": "Used for setting output to API Handler",
     "info": "",
     "comments": "",
-    "x": 712.9935321807861,
-    "y": 212.99350261688232,
-    "z": "dffc6494.bbb2d8",
+    "x": 686.9974384307861,
+    "y": 235.99350118637085,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "1e81abbc.616b14",
+    "id": "2aa7816a.d5fa1e",
     "type": "comment",
     "name": "Obtain different URL, template location etc",
     "info": "For saving resource information to MDSAL & for AAI",
     "comments": "",
-    "x": 730.9934978485107,
-    "y": 298.8823833465576,
-    "z": "dffc6494.bbb2d8",
+    "x": 704.9974040985107,
+    "y": 321.88238191604614,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "72dc7ecf.95a62",
+    "id": "7187d295.0c7a1c",
     "type": "comment",
     "name": "Used to Get AR by id to MDSAL, same as self-link",
     "info": "",
     "comments": "",
-    "x": 756.9935169219971,
-    "y": 385.882342338562,
-    "z": "dffc6494.bbb2d8",
+    "x": 730.9974231719971,
+    "y": 408.88234090805054,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "e6ee5327.c0d68",
+    "id": "b2104ab0.d42038",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1220.6668224334717,
-    "y": 503.99997901916504,
-    "z": "dffc6494.bbb2d8",
+    "x": 1194.6707286834717,
+    "y": 526.9999775886536,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "8c680853.310ea8"
+        "736e1064.726c"
       ]
     ]
   },
   {
-    "id": "8c680853.310ea8",
+    "id": "736e1064.726c",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1364.6669006347656,
-    "y": 461.4998970031738,
-    "z": "dffc6494.bbb2d8",
+    "x": 1338.6708068847656,
+    "y": 484.49989557266235,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "925fb80e.34f158"
+        "a5f06ff2.e93e4"
       ]
     ]
   },
   {
-    "id": "925fb80e.34f158",
+    "id": "a5f06ff2.e93e4",
     "type": "switchNode",
     "name": "switch cr length",
     "xml": "<switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1533.5243244171143,
-    "y": 459.11906814575195,
-    "z": "dffc6494.bbb2d8",
+    "x": 1507.5282306671143,
+    "y": 482.1190667152405,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "26b8d340.46df1c",
-        "7a829be2.af0124"
+        "69d17a58.9c2324",
+        "1cf05230.c0296e"
       ]
     ]
   },
   {
-    "id": "26b8d340.46df1c",
+    "id": "69d17a58.9c2324",
     "type": "other",
     "name": "outcome 1",
     "xml": "<outcome value='1'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1688.8574600219727,
-    "y": 431.1189832687378,
-    "z": "dffc6494.bbb2d8",
+    "x": 1662.8613662719727,
+    "y": 454.1189818382263,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "1395b904.dff867"
+        "a2e5f5bf.161fe8"
       ]
     ]
   },
   {
-    "id": "1395b904.dff867",
+    "id": "a2e5f5bf.161fe8",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic='true'>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1847.3812637329102,
-    "y": 429.02383041381836,
-    "z": "dffc6494.bbb2d8",
+    "x": 1821.3851699829102,
+    "y": 452.0238289833069,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "bca835dc.03acf8",
-        "60209a3f.8f2c74",
-        "20e59893.8ce128"
+        "2e9b819d.3363ee",
+        "edfeb643.5889d8",
+        "76036750.d4da68"
       ]
     ]
   },
   {
-    "id": "a8ed7d7b.3441",
+    "id": "8107bf70.6729c",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"Error: Connection attachment resource not exist\" />\n    \n",
     "comments": "",
-    "x": 1787.5191955566406,
-    "y": 536.0660648345947,
-    "z": "dffc6494.bbb2d8",
+    "x": 1761.5231018066406,
+    "y": 559.0660634040833,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "2e147334.04188c",
+    "id": "a6741673.5edd48",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1212.5186252593994,
-    "y": 539.0660638809204,
-    "z": "dffc6494.bbb2d8",
+    "x": 1186.5225315093994,
+    "y": 562.0660624504089,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "b263ea5d.751198"
+        "9ba85af5.f74448"
       ]
     ]
   },
   {
-    "id": "b263ea5d.751198",
+    "id": "9ba85af5.f74448",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1392.518575668335,
-    "y": 539.7326145172119,
-    "z": "dffc6494.bbb2d8",
+    "x": 1366.522481918335,
+    "y": 562.7326130867004,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "a8ed7d7b.3441"
+        "8107bf70.6729c"
       ]
     ]
   },
   {
-    "id": "7a829be2.af0124",
+    "id": "1cf05230.c0296e",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1680.1854629516602,
-    "y": 490.39935779571533,
-    "z": "dffc6494.bbb2d8",
+    "x": 1654.1893692016602,
+    "y": 513.3993563652039,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "a8ed7d7b.3441"
+        "8107bf70.6729c"
       ]
     ]
   },
   {
-    "id": "bca835dc.03acf8",
+    "id": "2e9b819d.3363ee",
     "type": "set",
     "name": "set connection-attachment-ar from get",
     "xml": "<set>\n<parameter name='connection-attachment-ar.' value='$mdsal-ar.connection-attachment-allotted-resource[0].' />\n",
     "comments": "",
-    "x": 2094.4447174072266,
-    "y": 402.00008249282837,
-    "z": "dffc6494.bbb2d8",
+    "x": 2068.4486236572266,
+    "y": 425.0000810623169,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "60209a3f.8f2c74",
+    "id": "edfeb643.5889d8",
     "type": "set",
     "name": "set oper-status",
     "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-ar.allotted-resource-status.rpc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
     "comments": "",
-    "x": 2043.4449863433838,
-    "y": 504.4286185503006,
-    "z": "dffc6494.bbb2d8",
+    "x": 2017.4488925933838,
+    "y": 527.4286171197891,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "20e59893.8ce128",
+    "id": "76036750.d4da68",
     "type": "switchNode",
     "name": "switch order-status",
     "xml": "<switch test='`$connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2045.444803237915,
-    "y": 444.0000435113907,
-    "z": "dffc6494.bbb2d8",
+    "x": 2019.448709487915,
+    "y": 467.0000420808792,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "c22325f7.252dc8",
-        "892b7c23.01481"
+        "e87ff105.14d1b",
+        "d97dfa9c.e30428"
       ]
     ]
   },
   {
-    "id": "c22325f7.252dc8",
+    "id": "d97dfa9c.e30428",
     "type": "outcome",
     "name": "outcome Created",
     "xml": "<outcome value='Created'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2273.0451526641846,
-    "y": 435.00010073184967,
-    "z": "dffc6494.bbb2d8",
+    "x": 2247.0490589141846,
+    "y": 458.0000993013382,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "8f64788b.479f58"
+        "987bc713.b486f8"
       ]
     ]
   },
   {
-    "id": "892b7c23.01481",
+    "id": "e87ff105.14d1b",
     "type": "outcome",
     "name": "outcome Other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2267.759048461914,
-    "y": 474.42865800857544,
-    "z": "dffc6494.bbb2d8",
+    "x": 2241.762954711914,
+    "y": 497.42865657806396,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "7e065517.d9cffc"
+        "b58f7e1e.c3478"
       ]
     ]
   },
   {
-    "id": "8f64788b.479f58",
+    "id": "987bc713.b486f8",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2432.515281677246,
-    "y": 435.37570571899414,
-    "z": "dffc6494.bbb2d8",
+    "x": 2406.519187927246,
+    "y": 458.37570428848267,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "7e065517.d9cffc",
+    "id": "b58f7e1e.c3478",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" \n    value=\"`'Existing connection-attachment-allotted-resource with order status of ' + $connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`\" />\n",
     "comments": "",
-    "x": 2443.666862487793,
-    "y": 473.000057220459,
-    "z": "dffc6494.bbb2d8",
+    "x": 2417.670768737793,
+    "y": 496.0000557899475,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "6f92ad01.bceb24",
+    "id": "e130ad96.c9e09",
     "type": "call",
     "name": "call GENERIC-RESOURCE-API:sdwan-get-saved-ar-param",
     "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-saved-ar-param' mode='sync' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 937.3030433654785,
-    "y": 610.4936294555664,
-    "z": "dffc6494.bbb2d8",
+    "x": 911.3069496154785,
+    "y": 633.4936280250549,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "5bfd91ae.4a06",
+    "id": "21e8ba33.483c86",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 631.3091430664062,
-    "y": 611.5,
-    "z": "dffc6494.bbb2d8",
+    "x": 605.3130493164062,
+    "y": 634.4999985694885,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "6f92ad01.bceb24"
+        "e130ad96.c9e09"
       ]
     ]
   },
   {
-    "id": "ab12c387.518e3",
+    "id": "336e8236.5ec30e",
     "type": "comment",
     "name": "GET parent-service-data from mdsal to check existence of other End point",
     "info": "",
     "comments": "",
-    "x": 809.00048828125,
-    "y": 682.53173828125,
-    "z": "dffc6494.bbb2d8",
+    "x": 783.00439453125,
+    "y": 705.5317368507385,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "20314e6c.dff2b2",
+    "id": "2b31d5c5.87577a",
     "type": "comment",
     "name": "GET connection-attachment-ar to store AR data from mdsal",
     "info": "",
     "comments": "",
-    "x": 2156.4727783203125,
-    "y": 362.5039367675781,
-    "z": "dffc6494.bbb2d8",
+    "x": 2130.4766845703125,
+    "y": 385.50393533706665,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "4bcdea66.6625d4",
+    "id": "7d9870f2.8c169",
     "type": "set",
     "name": "set tmp.ar.parent-service-instance-id",
     "xml": "<set>\n<parameter name='tmp.ar.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n\n",
     "comments": "",
-    "x": 694.9688110351562,
-    "y": 712.0001220703125,
-    "z": "dffc6494.bbb2d8",
+    "x": 668.9727172851562,
+    "y": 735.000120639801,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "15984952.556e87",
+    "id": "b757ef37.0ce2d",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1054.968978881836,
-    "y": 769.0000915527344,
-    "z": "dffc6494.bbb2d8",
+    "x": 1028.972885131836,
+    "y": 792.0000901222229,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "de6674d7.fb4908"
+        "8876c1bb.25741"
       ]
     ]
   },
   {
-    "id": "6badb4c9.fd121c",
+    "id": "f706c388.1aebc",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1046.8207817077637,
-    "y": 804.0661764144897,
-    "z": "dffc6494.bbb2d8",
+    "x": 1020.8246879577637,
+    "y": 827.0661749839783,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "d2de38fb.c9bd98"
+        "cb9cbf16.bef44"
       ]
     ]
   },
   {
-    "id": "d2de38fb.c9bd98",
+    "id": "cb9cbf16.bef44",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"Error: Parent service data not available\" />\n    \n",
     "comments": "",
-    "x": 1192.9695625305176,
-    "y": 803.3335876464844,
-    "z": "dffc6494.bbb2d8",
+    "x": 1166.9734687805176,
+    "y": 826.3335862159729,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "de6674d7.fb4908",
+    "id": "8876c1bb.25741",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1185.9690742492676,
-    "y": 769.0001525878906,
-    "z": "dffc6494.bbb2d8",
+    "x": 1159.9729804992676,
+    "y": 792.0001511573792,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "3fee618.47cf19e",
+    "id": "2c9b5f28.48e9e",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 868.7312831878662,
-    "y": 1801.953821182251,
-    "z": "dffc6494.bbb2d8",
+    "x": 842.7351894378662,
+    "y": 1824.9538197517395,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "ce560694.4e0568"
+        "6b8dfb7d.64cd94"
       ]
     ]
   },
   {
-    "id": "ce560694.4e0568",
+    "id": "6b8dfb7d.64cd94",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"AAI failed\" />\n",
     "comments": "",
-    "x": 1035.2551040649414,
-    "y": 1828.5728282928467,
-    "z": "dffc6494.bbb2d8",
+    "x": 1009.2590103149414,
+    "y": 1851.5728268623352,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "c68d8601.616f38",
+    "id": "ed67a862.2bd1f8",
     "type": "failure",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 870.8265113830566,
-    "y": 1849.715663909912,
-    "z": "dffc6494.bbb2d8",
+    "x": 844.8304176330566,
+    "y": 1872.7156624794006,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "ce560694.4e0568"
+        "6b8dfb7d.64cd94"
       ]
     ]
   },
   {
-    "id": "4f78f27.2aadb0c",
+    "id": "97cf9734.788978",
     "type": "comment",
     "name": "Save Resource to AAI",
     "info": "",
     "comments": "",
-    "x": 642.7789268493652,
-    "y": 1790.302984237671,
-    "z": "dffc6494.bbb2d8",
+    "x": 616.7828330993652,
+    "y": 1813.3029828071594,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "9bb2f2c0.a869e",
+    "id": "38c9c0d2.63a2d",
     "type": "set",
     "name": "set output to api handler",
     "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='connection-attachment-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $connection-attachment-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
     "comments": "",
-    "x": 657.5466232299805,
-    "y": 1711.828465461731,
-    "z": "dffc6494.bbb2d8",
+    "x": 631.5505294799805,
+    "y": 1734.8284640312195,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "12273108.2aad0f",
+    "id": "9192f41d.1c9e78",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 617.959794998169,
-    "y": 1897.4442539215088,
-    "z": "dffc6494.bbb2d8",
+    "x": 591.963701248169,
+    "y": 1920.4442524909973,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "235295.bc1afd6c",
+    "id": "43fe29d3.28d4b8",
     "type": "execute",
     "name": "execute RestApiCallNode - PUT AR by id",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.sdwan-attachment.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 710.2787055969238,
-    "y": 1636.4693183898926,
-    "z": "dffc6494.bbb2d8",
+    "x": 684.2826118469238,
+    "y": 1659.469316959381,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "fbd9f3da.ac92e",
-        "d531264d.6e9598",
-        "ceab622e.44add"
+        "d5f8f1b8.84781",
+        "d21a6279.bc9d6",
+        "9617473f.000048"
       ]
     ]
   },
   {
-    "id": "fbd9f3da.ac92e",
+    "id": "d5f8f1b8.84781",
     "type": "not-found",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 964.9201278686523,
-    "y": 1680.8007125854492,
-    "z": "dffc6494.bbb2d8",
+    "x": 938.9240341186523,
+    "y": 1703.8007111549377,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "6996a4e1.52814c"
+        "ce2b1814.f0bc28"
       ]
     ]
   },
   {
-    "id": "d531264d.6e9598",
+    "id": "d21a6279.bc9d6",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 966.9201507568359,
-    "y": 1639.3006767258048,
-    "z": "dffc6494.bbb2d8",
+    "x": 940.9240570068359,
+    "y": 1662.3006752952933,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "6996a4e1.52814c"
+        "ce2b1814.f0bc28"
       ]
     ]
   },
   {
-    "id": "ceab622e.44add",
+    "id": "9617473f.000048",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 970.6702346801758,
-    "y": 1590.657829284668,
-    "z": "dffc6494.bbb2d8",
+    "x": 944.6741409301758,
+    "y": 1613.6578278541565,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "a90a3596.a63828"
+        "c002bab4.10b818"
       ]
     ]
   },
   {
-    "id": "6996a4e1.52814c",
+    "id": "ce2b1814.f0bc28",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error updating md-sal for connection-attachment-allotted-resource\" />\n",
     "comments": "",
-    "x": 1125.670253753662,
-    "y": 1659.0507431030273,
-    "z": "dffc6494.bbb2d8",
+    "x": 1099.674160003662,
+    "y": 1682.0507416725159,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "a90a3596.a63828",
+    "id": "c002bab4.10b818",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1098.3261795043945,
-    "y": 1592.8499975204468,
-    "z": "dffc6494.bbb2d8",
+    "x": 1072.3300857543945,
+    "y": 1615.8499960899353,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "40c05ce.b6f2ba4",
+    "id": "4fc8c244.1177ac",
     "type": "set",
     "name": "set ar-data",
     "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-status.action' value=\"`$connection-attachment-topology-operation-input.request-information.request-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value=\"connection-attachment-topology-operation\" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$connection-attachment-topology-operation-input.request-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$connection-attachment-topology-operation-input.service-information.` \" />\n",
     "comments": "",
-    "x": 612.4923210144043,
-    "y": 1470.850219488144,
-    "z": "dffc6494.bbb2d8",
+    "x": 586.4962272644043,
+    "y": 1493.8502180576324,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "cfd66b10.01cc08",
+    "id": "daadac76.292c6",
     "type": "execute",
     "name": "execute getTime",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 629.7781639099121,
-    "y": 1543.46981716156,
-    "z": "dffc6494.bbb2d8",
+    "x": 603.7820701599121,
+    "y": 1566.4698157310486,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "5daf20a3.56c58",
+    "id": "c4a41078.ea3c4",
     "type": "set",
     "name": "set allotted-resource-oper-status",
     "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
     "comments": "",
-    "x": 679.7652435302734,
-    "y": 1580.4208974838257,
-    "z": "dffc6494.bbb2d8",
+    "x": 653.7691497802734,
+    "y": 1603.4208960533142,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "c934c812.741518",
+    "id": "d4d40535.00b288",
     "type": "set",
     "name": "set model-data",
     "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` \" />",
     "comments": "",
-    "x": 626.3338623046875,
-    "y": 1510.0248699188232,
-    "z": "dffc6494.bbb2d8",
+    "x": 600.3377685546875,
+    "y": 1533.0248684883118,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "39e69165.d7e96e",
+    "id": "45fc3466.cbd9ac",
     "type": "comment",
     "name": "Prepare data for allotted-resource addition to MDSAL",
     "info": "This will add to allotted-resource which is present inside service.",
     "comments": "",
-    "x": 739.6673240661621,
-    "y": 1431.0248219966888,
-    "z": "dffc6494.bbb2d8",
+    "x": 711.6712646484375,
+    "y": 1455.0248260498047,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "76218215.a6538c",
+    "id": "4c6b5051.361fc",
     "type": "comment",
     "name": "Add to allotted-resources in mdsal",
     "info": "",
     "comments": "",
-    "x": 681.2471504211426,
-    "y": 1398.438123703003,
-    "z": "dffc6494.bbb2d8",
+    "x": 655.2510566711426,
+    "y": 1421.4381222724915,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "78a5dd87.45acf4",
+    "id": "390c3a59.81dbe6",
     "type": "update",
     "name": "update AAI allotted-resource",
     "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"description\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`\" />\n\t<parameter name=\"selflink\" value=\"`$tmp.ar.self-link`\" />\n\t<parameter name=\"model-invariant-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`\" />\n\t<parameter name=\"model-version-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`\" />\n\t<parameter name=\"operational-status\" value=\"Active\" />\n",
     "comments": "",
     "outputs": 1,
-    "x": 669.2232055664062,
-    "y": 1827.755126953125,
-    "z": "dffc6494.bbb2d8",
+    "x": 643.2271118164062,
+    "y": 1850.7551255226135,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "3fee618.47cf19e",
-        "c68d8601.616f38"
+        "2c9b5f28.48e9e",
+        "ed67a862.2bd1f8"
       ]
     ]
   },
   {
-    "id": "3d8eaf9a.38bd9",
+    "id": "f1c987fe.e262e8",
     "type": "execute",
     "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 841.0039672851562,
-    "y": 522.00390625,
-    "z": "dffc6494.bbb2d8",
+    "x": 815.0078735351562,
+    "y": 545.0039048194885,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "e6ee5327.c0d68",
-        "2e147334.04188c"
+        "b2104ab0.d42038",
+        "a6741673.5edd48"
       ]
     ]
   },
   {
-    "id": "1c9f2051.6c4ec",
+    "id": "4c06f720.016118",
     "type": "execute",
     "name": "execute RestApiCallNode - get-resource parent service data",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-psd\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 764.0040893554688,
-    "y": 785.0040893554688,
-    "z": "dffc6494.bbb2d8",
+    "x": 738.0079956054688,
+    "y": 808.0040879249573,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "15984952.556e87",
-        "6badb4c9.fd121c"
+        "b757ef37.0ce2d",
+        "f706c388.1aebc"
       ]
     ]
   },
   {
-    "id": "5bbd58f7.5f7198",
+    "id": "1379096d.d52197",
     "type": "execute",
     "name": "get parent-service-data url",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-psd\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 664.0039978027344,
-    "y": 748.0039224624634,
-    "z": "dffc6494.bbb2d8",
+    "x": 638.0079040527344,
+    "y": 771.0039210319519,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "f4b4f93.ed2c608",
+    "id": "5177b2ec.7304dc",
     "type": "set",
     "name": "set prop.ar.provided-allotted-resource-id",
     "xml": "<set>\n<parameter name='prop.ar.provided-allotted-resource-id' value='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id`' />\n\n",
     "comments": "",
-    "x": 1521.9964752197266,
-    "y": 837.1218557357788,
-    "z": "dffc6494.bbb2d8",
+    "x": 1496.0003814697266,
+    "y": 860.1218543052673,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "a15a79a.36a3388",
+    "id": "a4de5ab0.2e8518",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2027.9970703125,
-    "y": 931.4551391601562,
-    "z": "dffc6494.bbb2d8",
+    "x": 2002.0009765625,
+    "y": 954.4551377296448,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "a3fba491.823078"
+        "b07d3158.ec06e"
       ]
     ]
   },
   {
-    "id": "9877a25.829156",
+    "id": "e77eab64.b80238",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2031.848445892334,
-    "y": 893.52121925354,
-    "z": "dffc6494.bbb2d8",
+    "x": 2005.852352142334,
+    "y": 916.5212178230286,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "7dae3a54.790c34"
+        "67d985d1.99c82c"
       ]
     ]
   },
   {
-    "id": "70d2ed6a.c33784",
+    "id": "a9f31ecc.485fc",
     "type": "for",
     "name": "for arvidx.. mdsal-sd.service-data.vnfs.vnf_length[]",
     "xml": "<for index='arvidx' start='0' end='`$mdsal-sd.service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1923.9976425170898,
-    "y": 1659.1222692728043,
-    "z": "dffc6494.bbb2d8",
+    "x": 1898.0015487670898,
+    "y": 1682.1222678422928,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "3299d5bb.c8fffa"
+        "3f28b2ff.c5261e"
       ]
     ]
   },
   {
-    "id": "3299d5bb.c8fffa",
+    "id": "3f28b2ff.c5261e",
     "type": "block",
     "name": "block atmoic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1683.6641387939453,
-    "y": 1731.1224619150162,
-    "z": "dffc6494.bbb2d8",
+    "x": 1657.6680450439453,
+    "y": 1754.1224604845047,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "9c72dcbf.2f4d8"
+        "7390d84f.4b2318"
       ]
     ]
   },
   {
-    "id": "9c72dcbf.2f4d8",
+    "id": "7390d84f.4b2318",
     "type": "switchNode",
     "name": "switch ActivateSiteInstance",
-    "xml": "<switch test=\"`$mdsal-parentsd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`\">\n    \n    \n\n",
+    "xml": "<switch test=\"`$mdsal-sd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`\">\n\n    \n    \n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1896.5293731689453,
-    "y": 1732.3203302621841,
-    "z": "dffc6494.bbb2d8",
+    "x": 1870.5332794189453,
+    "y": 1755.3203288316727,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "d6c2e1ad.856bf"
+        "f67dfe78.781af"
       ]
     ]
   },
   {
-    "id": "d6c2e1ad.856bf",
+    "id": "f67dfe78.781af",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2101.52872467041,
-    "y": 1735.3203264474869,
-    "z": "dffc6494.bbb2d8",
+    "x": 2075.53263092041,
+    "y": 1758.3203250169754,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "1deec432.31ab3c"
+        "24aa0f5e.31356"
       ]
     ]
   },
   {
-    "id": "6d2e1c61.8e7884",
+    "id": "e2678b6.a3e2078",
     "type": "set",
     "name": "set tmp.sitevidx ",
     "xml": "<set>\n<parameter name='tmp.sitevidx' value='`$arvidx`' />\n\n",
     "comments": "",
-    "x": 2445.528896331787,
-    "y": 1715.3206740617752,
-    "z": "dffc6494.bbb2d8",
+    "x": 2419.532802581787,
+    "y": 1738.3206726312637,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "eb1ab4ec.5e2dc8",
+    "id": "9f2a331c.6de8",
     "type": "set",
     "name": "set prop.ar-parent-service-instance-id",
-    "xml": "<set>\n<parameter name='prop.ar-parent-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id`' />\n",
+    "xml": "<set>\n<parameter name='prop.ar-parent-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id`' />                                                                                                                                                                                        \n",
     "comments": "",
-    "x": 1672.9970703125,
-    "y": 1078.1221185922623,
-    "z": "dffc6494.bbb2d8",
+    "x": 1647.0009765625,
+    "y": 1101.1221171617508,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "57da3fea.264e9",
+    "id": "d2ac9580.cea3a8",
     "type": "for",
     "name": "for loop aridx - Get role from allotted resource",
     "xml": "<for index=\"aridx\" start=\"0\" end=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 1699.9965839385986,
-    "y": 1035.6217069625854,
-    "z": "dffc6494.bbb2d8",
+    "x": 1674.0004901885986,
+    "y": 1058.621705532074,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "cee99943.fb3588"
+        "ab4a3566.1d4448"
       ]
     ]
   },
   {
-    "id": "509849b3.d30508",
+    "id": "9e31b20.ec7145",
     "type": "switchNode",
     "name": "switch Role",
     "xml": "<switch test=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'role'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2130.9968280792236,
-    "y": 1001.621829032898,
-    "z": "dffc6494.bbb2d8",
+    "x": 2105.0007343292236,
+    "y": 1024.6218276023865,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "934da16.2ecff6"
+        "8e1f2970.68a218"
       ]
     ]
   },
   {
-    "id": "934da16.2ecff6",
+    "id": "8e1f2970.68a218",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2270.9970722198486,
-    "y": 999.6219511032104,
-    "z": "dffc6494.bbb2d8",
+    "x": 2245.0009784698486,
+    "y": 1022.621949672699,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "e881355e.f5e048"
+        "ef163b1b.5ea0c8"
       ]
     ]
   },
   {
-    "id": "e881355e.f5e048",
+    "id": "ef163b1b.5ea0c8",
     "type": "set",
     "name": "set prop.role",
     "xml": "<set>\n<parameter name='prop.role' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />\n",
     "comments": "",
-    "x": 2414.9978046417236,
-    "y": 999.2218046188354,
-    "z": "dffc6494.bbb2d8",
+    "x": 2389.0017108917236,
+    "y": 1022.221803188324,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "c3c5524a.3faea",
+    "id": "8f7eca2d.7a5ac8",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1978.9968872070312,
-    "y": 1178.1219259500504,
-    "z": "dffc6494.bbb2d8",
+    "x": 1953.0007934570312,
+    "y": 1201.1219245195389,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "694081b0.40c87"
+        "2acc8e1c.c1a132"
       ]
     ]
   },
   {
-    "id": "a5b86b7b.af84c8",
+    "id": "224b80f9.f7e8e",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1976.8492164611816,
-    "y": 1139.18805372715,
-    "z": "dffc6494.bbb2d8",
+    "x": 1950.8531227111816,
+    "y": 1162.1880522966385,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "2179a00d.ce49"
+        "d6b1d2aa.02b42"
       ]
     ]
   },
   {
-    "id": "7dae3a54.790c34",
+    "id": "67d985d1.99c82c",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2157.996570587158,
-    "y": 890.6216526031494,
-    "z": "dffc6494.bbb2d8",
+    "x": 2132.000476837158,
+    "y": 913.6216511726379,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "a3fba491.823078",
+    "id": "b07d3158.ec06e",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1323.496524810791,
-    "y": 1070.6217823028564,
-    "z": "dffc6494.bbb2d8",
+    "x": 1297.500431060791,
+    "y": 1093.621780872345,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "57da3fea.264e9",
-        "eb1ab4ec.5e2dc8",
-        "e782e2ca.8bf82",
-        "1cdc5d42.9a95b3"
+        "d2ac9580.cea3a8",
+        "9f2a331c.6de8",
+        "13a1cc8b.f27593",
+        "8c1064b8.0837a8"
       ]
     ]
   },
   {
-    "id": "2179a00d.ce49",
+    "id": "d6b1d2aa.02b42",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2106.4974098205566,
-    "y": 1132.6220136880875,
-    "z": "dffc6494.bbb2d8",
+    "x": 2080.5013160705566,
+    "y": 1155.622012257576,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "694081b0.40c87",
+    "id": "2acc8e1c.c1a132",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1705.4971466064453,
-    "y": 1257.6221548318863,
-    "z": "dffc6494.bbb2d8",
+    "x": 1679.5010528564453,
+    "y": 1280.6221534013748,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "96cc2adb.55b7e8"
+        "2eef69ed.8c4646"
       ]
     ]
   },
   {
-    "id": "ac9bfac3.fa8558",
+    "id": "322f0f47.8e765",
     "type": "for",
     "name": "for loop siteidx - Get site ID from servicedata",
-    "xml": "<for index=\"siteidx\" start=\"0\" end=\"`$mdsal-parentsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "xml": "<for index=\"siteidx\" start=\"0\" end=\"`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 2524.4985961914062,
-    "y": 1765.6224666833878,
-    "z": "dffc6494.bbb2d8",
+    "x": 2498.5025024414062,
+    "y": 1788.6224652528763,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "a2ba66c.8ff5498"
+        "f041a5c4.8e5ff8"
       ]
     ]
   },
   {
-    "id": "8bbd7692.ac8cd8",
+    "id": "3ce210b6.91582",
     "type": "switchNode",
     "name": "switch siteId",
-    "xml": "<switch test=\"`$mdsal-parentsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`\">\n\n",
+    "xml": "<switch test=\"`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1995.501958847046,
-    "y": 1879.6239286661148,
-    "z": "dffc6494.bbb2d8",
+    "x": 1969.505865097046,
+    "y": 1902.6239272356033,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "4610475a.073248"
+        "57ac6f64.1286d"
       ]
     ]
   },
   {
-    "id": "4610475a.073248",
+    "id": "57ac6f64.1286d",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2150.5023288726807,
-    "y": 1881.6242953538895,
-    "z": "dffc6494.bbb2d8",
+    "x": 2124.5062351226807,
+    "y": 1904.624293923378,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "feeed51.dea6e28"
+        "b1ee9c99.2aacf"
       ]
     ]
   },
   {
-    "id": "4e949727.dc9598",
+    "id": "cbb60b59.d98d48",
     "type": "set",
     "name": "Add sites to list and update length",
-    "xml": "<set>\n<parameter name='prop.siteIds[$prop.siteIds_length]' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteIds_length' value='`$prop.siteIds_length + 1`' />\n\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].siteId' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles[0]' value='`$prop.role`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles_length' value='1' />\n<parameter name='prop.siteAttachements_length' value='`$prop.siteAttachements_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n",
+    "xml": "<set>\n<parameter name='prop.siteIds[$prop.siteIds_length]' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteIds_length' value='`$prop.siteIds_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
     "comments": "",
-    "x": 2128.0009231567383,
-    "y": 2014.1228910684586,
-    "z": "dffc6494.bbb2d8",
+    "x": 2102.0048294067383,
+    "y": 2037.122889637947,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "d462299e.954ef8",
+    "id": "5723dd.5302dc24",
     "type": "execute",
     "name": "execute RestApiCallNode create vpn topology",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn-topology.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn1Id + '/topology'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 720.9996967315674,
-    "y": 1219.623323082924,
-    "z": "dffc6494.bbb2d8",
+    "x": 695.0036029815674,
+    "y": 1242.6233216524124,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "eedd5dfa.0c3ec",
-        "8a2fbc0b.ebcbf"
+        "dbb9cf9c.1b8a",
+        "fefb45a2.751f18"
       ]
     ]
   },
   {
-    "id": "8a2fbc0b.ebcbf",
+    "id": "fefb45a2.751f18",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 964.9996509552002,
-    "y": 1240.6231399774551,
-    "z": "dffc6494.bbb2d8",
+    "x": 939.0035572052002,
+    "y": 1263.6231385469437,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "d213fa13.f05e78"
+        "96dbc97.ce15e38"
       ]
     ]
   },
   {
-    "id": "d213fa13.f05e78",
+    "id": "96dbc97.ce15e38",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "comments": "",
     "outputs": 1,
-    "x": 1134.999589920044,
-    "y": 1243.6231399774551,
-    "z": "dffc6494.bbb2d8",
+    "x": 1109.003496170044,
+    "y": 1266.6231385469437,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "c3f37303.c62e9",
+    "id": "95ee12f3.671c4",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn topology failed\" />\n",
     "comments": "",
-    "x": 1134.9997119903564,
-    "y": 1199.6231399774551,
-    "z": "dffc6494.bbb2d8",
+    "x": 1109.0036182403564,
+    "y": 1222.6231385469437,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "eedd5dfa.0c3ec",
+    "id": "dbb9cf9c.1b8a",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 967.999589920044,
-    "y": 1199.6231399774551,
-    "z": "dffc6494.bbb2d8",
+    "x": 942.003496170044,
+    "y": 1222.6231385469437,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "c3f37303.c62e9"
+        "95ee12f3.671c4"
       ]
     ]
   },
   {
-    "id": "d4efb2ad.bacb3",
+    "id": "722c21e0.94316",
     "type": "set",
     "name": "set controller data",
     "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
     "comments": "",
-    "x": 1139.565273284912,
-    "y": 932.2990169525146,
-    "z": "dffc6494.bbb2d8",
+    "x": 1113.569179534912,
+    "y": 955.2990155220032,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "27476583.31719a",
+    "id": "db5d0d5.71c66f",
     "type": "get-resource",
     "name": "get-resource esr-thirdparty-sdnc",
-    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 676.0650634765625,
-    "y": 981.29931640625,
-    "z": "dffc6494.bbb2d8",
+    "x": 650.0689697265625,
+    "y": 1004.2993149757385,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "62080e5d.ec8ce",
-        "dfaa962c.3e1378",
-        "bbba9586.9afb98"
+        "9f61640b.56f5e8",
+        "fcbf7eb7.5e0e6",
+        "b9617b3d.71b3f8"
       ]
     ]
   },
   {
-    "id": "62080e5d.ec8ce",
+    "id": "9f61640b.56f5e8",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 942.0652122497559,
-    "y": 944.2990169525146,
-    "z": "dffc6494.bbb2d8",
+    "x": 916.0691184997559,
+    "y": 967.2990155220032,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "d4efb2ad.bacb3"
+        "722c21e0.94316"
       ]
     ]
   },
   {
-    "id": "dfaa962c.3e1378",
+    "id": "fcbf7eb7.5e0e6",
     "type": "not-found",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 938.55592918396,
-    "y": 982.8731136322021,
-    "z": "dffc6494.bbb2d8",
+    "x": 912.55983543396,
+    "y": 1005.8731122016907,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "663ca3f0.5f815c"
+        "ae421a1b.b35b38"
       ]
     ]
   },
   {
-    "id": "bbba9586.9afb98",
+    "id": "b9617b3d.71b3f8",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 933.88893699646,
-    "y": 1024.2064266204834,
-    "z": "dffc6494.bbb2d8",
+    "x": 907.89284324646,
+    "y": 1047.206425189972,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "936e384d.44b2d8"
+        "e4bd895d.631da8"
       ]
     ]
   },
   {
-    "id": "663ca3f0.5f815c",
+    "id": "ae421a1b.b35b38",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
     "comments": "",
-    "x": 1115.1273403167725,
-    "y": 971.1588497161865,
-    "z": "dffc6494.bbb2d8",
+    "x": 1089.1312465667725,
+    "y": 994.158848285675,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "936e384d.44b2d8",
+    "id": "e4bd895d.631da8",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
     "comments": "",
-    "x": 1121.6614933013916,
-    "y": 1019.645619392395,
-    "z": "dffc6494.bbb2d8",
+    "x": 1095.6653995513916,
+    "y": 1042.6456179618835,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "96cc2adb.55b7e8",
+    "id": "2eef69ed.8c4646",
     "type": "for",
     "name": "for pnidx.. mdsal-psd.service-data.networks.network_length[]",
     "xml": "<for index='pnidx' start='0' end='`$mdsal-parentsd.service-data.networks.network_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 2013.4972763061523,
-    "y": 1257.122277855873,
-    "z": "dffc6494.bbb2d8",
+    "x": 1987.5011825561523,
+    "y": 1280.1222764253616,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "b7189ec7.b6673"
+        "19a68b02.3eedc5"
       ]
     ]
   },
   {
-    "id": "86cf34ff.454008",
+    "id": "532b87f6.cba248",
     "type": "switchNode",
     "name": "switch ActivateSDWANConnectivityInstance",
     "xml": "<switch test=\"`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.request-information.request-action == ActivateSDWANConnectivityInstance`\">\n    \n    \n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1860.165672302246,
-    "y": 1346.1222940683365,
-    "z": "dffc6494.bbb2d8",
+    "x": 1834.169578552246,
+    "y": 1369.122292637825,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "9f2ef89f.648238"
+        "f7df899d.2cdaa8"
       ]
     ]
   },
   {
-    "id": "9f2ef89f.648238",
+    "id": "f7df899d.2cdaa8",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2116.1651248931885,
-    "y": 1344.1222330331802,
-    "z": "dffc6494.bbb2d8",
+    "x": 2090.1690311431885,
+    "y": 1367.1222316026688,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "e8091f90.d8758"
+        "4ad4efb2.b5354"
       ]
     ]
   },
   {
-    "id": "ea7febcc.253688",
+    "id": "f89715ac.25dc68",
     "type": "for",
     "name": "for loop paramidx - Get topology from servicedata",
     "xml": "<for index=\"paramidx\" start=\"0\" end=\"`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 1903.1637878417969,
-    "y": 1437.1214720010757,
-    "z": "dffc6494.bbb2d8",
+    "x": 1877.1676940917969,
+    "y": 1460.1214705705643,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "a261c913.e49f08"
+        "c531c63.7b95a38"
       ]
     ]
   },
   {
-    "id": "c9c5e103.2dba",
+    "id": "bd704489.7274d8",
     "type": "switchNode",
     "name": "switch topology",
     "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'topology'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2357.1641483306885,
-    "y": 1424.121761918068,
-    "z": "dffc6494.bbb2d8",
+    "x": 2331.1680545806885,
+    "y": 1447.1217604875565,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "d03c47e7.2291b8"
+        "76f653aa.77e0bc"
       ]
     ]
   },
   {
-    "id": "d03c47e7.2291b8",
+    "id": "76f653aa.77e0bc",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2506.1639041900635,
-    "y": 1419.1218839883804,
-    "z": "dffc6494.bbb2d8",
+    "x": 2480.1678104400635,
+    "y": 1442.121882557869,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "6f44a2b9.64d87c"
+        "e332cfdd.3a325"
       ]
     ]
   },
   {
-    "id": "6f44a2b9.64d87c",
+    "id": "e332cfdd.3a325",
     "type": "set",
     "name": "set topology",
     "xml": "<set>\n<parameter name='prop.topology' value='`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
     "comments": "",
-    "x": 2646.1640911102295,
-    "y": 1416.721799492836,
-    "z": "dffc6494.bbb2d8",
+    "x": 2620.1679973602295,
+    "y": 1439.7217980623245,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "2f06a667.74729a",
+    "id": "95926f9f.7a56d",
     "type": "switchNode",
     "name": "switch vpnId",
     "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'vpn-id'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2344.8300952911377,
-    "y": 1462.454986691475,
-    "z": "dffc6494.bbb2d8",
+    "x": 2318.8340015411377,
+    "y": 1485.4549852609634,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "26cdcacc.68bc96"
+        "915a39b2.608e28"
       ]
     ]
   },
   {
-    "id": "26cdcacc.68bc96",
+    "id": "915a39b2.608e28",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2484.8300380706787,
-    "y": 1462.454803109169,
-    "z": "dffc6494.bbb2d8",
+    "x": 2458.8339443206787,
+    "y": 1485.4548016786575,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "b29eb112.7e5e6"
+        "56e124a4.ba815c"
       ]
     ]
   },
   {
-    "id": "b29eb112.7e5e6",
+    "id": "56e124a4.ba815c",
     "type": "set",
     "name": "set prop.vpn1Id",
     "xml": "<set>\n<parameter name='prop.vpn1Id' value='`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
     "comments": "",
-    "x": 2632.830041885376,
-    "y": 1462.054870724678,
-    "z": "dffc6494.bbb2d8",
+    "x": 2606.833948135376,
+    "y": 1485.0548692941666,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "6f11d9b9.d9b5a8",
+    "id": "537ad820.346958",
     "type": "execute",
     "name": "execute RestApiCallNode create vpn ",
-    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/vpn-services'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 689.9980926513672,
-    "y": 1128.1227440834045,
-    "z": "dffc6494.bbb2d8",
+    "x": 664.0019989013672,
+    "y": 1151.122742652893,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "65b6f0f3.2d5de",
-        "76008493.6f9b6c"
+        "3ba3cba0.b1b5b4",
+        "14233b12.99c415"
       ]
     ]
   },
   {
-    "id": "76008493.6f9b6c",
+    "id": "14233b12.99c415",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 909.9979953765869,
-    "y": 1124.1227089166641,
-    "z": "dffc6494.bbb2d8",
+    "x": 884.0019016265869,
+    "y": 1147.1227074861526,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "3a95c7bc.96e9b8"
+        "e9e1022d.54d97"
       ]
     ]
   },
   {
-    "id": "3a95c7bc.96e9b8",
+    "id": "e9e1022d.54d97",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "comments": "",
     "outputs": 1,
-    "x": 1079.9979343414307,
-    "y": 1127.1227089166641,
-    "z": "dffc6494.bbb2d8",
+    "x": 1054.0018405914307,
+    "y": 1150.1227074861526,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "daf3ded5.68f9c",
+    "id": "12277977.d003a7",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn failed\" />\n",
     "comments": "",
-    "x": 1079.9980564117432,
-    "y": 1083.1227089166641,
-    "z": "dffc6494.bbb2d8",
+    "x": 1054.0019626617432,
+    "y": 1106.1227074861526,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "65b6f0f3.2d5de",
+    "id": "3ba3cba0.b1b5b4",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 912.9979343414307,
-    "y": 1083.1227089166641,
-    "z": "dffc6494.bbb2d8",
+    "x": 887.0018405914307,
+    "y": 1106.1227074861526,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "daf3ded5.68f9c"
+        "12277977.d003a7"
       ]
     ]
   },
   {
-    "id": "643b6a4a.e81654",
+    "id": "4ac994c1.39bcbc",
     "type": "set",
     "name": "set prop.name",
     "xml": "<set>\n<parameter name='prop.name' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />\n",
     "comments": "",
-    "x": 2489.9968280792236,
-    "y": 1051.1214628219604,
-    "z": "dffc6494.bbb2d8",
+    "x": 2464.0007343292236,
+    "y": 1074.121461391449,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "607a7459.cb7aac",
+    "id": "24b71c25.bdf914",
     "type": "switchNode",
     "name": "switch sdwanVpnName",
     "xml": "<switch test=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'sdwanVpnName'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2169.4965839385986,
-    "y": 1056.1214628219604,
-    "z": "dffc6494.bbb2d8",
+    "x": 2143.5004901885986,
+    "y": 1079.121461391449,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "5340c76b.84ae08"
+        "4b8a8916.d5df08"
       ]
     ]
   },
   {
-    "id": "5340c76b.84ae08",
+    "id": "4b8a8916.d5df08",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2346.4968280792236,
-    "y": 1053.1214628219604,
-    "z": "dffc6494.bbb2d8",
+    "x": 2320.5007343292236,
+    "y": 1076.121461391449,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "643b6a4a.e81654"
+        "4ac994c1.39bcbc"
       ]
     ]
   },
   {
-    "id": "6b6508e8.a91ff8",
+    "id": "35fb02d9.bc983e",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1259.0269775390625,
-    "y": 874.3190307617188,
-    "z": "dffc6494.bbb2d8",
+    "x": 1233.0308837890625,
+    "y": 897.3190293312073,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "f4b4f93.ed2c608",
-        "62278433.5ef6cc",
-        "f022812b.da229"
+        "5177b2ec.7304dc",
+        "72795760.cf2f58",
+        "48fba41e.5e07cc"
       ]
     ]
   },
   {
-    "id": "989cf904.9df618",
+    "id": "19eae0e7.50657f",
     "type": "for",
     "name": "for pidx..mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[]",
     "xml": "<for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 852.18115234375,
-    "y": 883.0944213867188,
-    "z": "dffc6494.bbb2d8",
+    "x": 826.18505859375,
+    "y": 906.0944199562073,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "6b6508e8.a91ff8"
+        "35fb02d9.bc983e"
       ]
     ]
   },
   {
-    "id": "62278433.5ef6cc",
+    "id": "72795760.cf2f58",
     "type": "execute",
     "name": "generate tmp.ar-url-connection url",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar.provided-allotted-resource-id`\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1507.9962997436523,
-    "y": 872.6668090820312,
-    "z": "dffc6494.bbb2d8",
+    "x": 1482.0002059936523,
+    "y": 895.6668076515198,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "f022812b.da229",
+    "id": "48fba41e.5e07cc",
     "type": "execute",
     "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-providedAr\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1656.99609375,
-    "y": 911.3333740234375,
-    "z": "dffc6494.bbb2d8",
+    "x": 1631,
+    "y": 934.333372592926,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "9877a25.829156",
-        "a15a79a.36a3388"
+        "e77eab64.b80238",
+        "a4de5ab0.2e8518"
       ]
     ]
   },
   {
-    "id": "e782e2ca.8bf82",
+    "id": "13a1cc8b.f27593",
     "type": "execute",
     "name": "generate prop.ar-parent-service-instance-id",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>      \n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar-parent-service-instance-id`\"/>\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1687.3295593261719,
-    "y": 1120.0003362894058,
-    "z": "dffc6494.bbb2d8",
+    "x": 1661.3334655761719,
+    "y": 1143.0003348588943,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "1cdc5d42.9a95b3",
+    "id": "8c1064b8.0837a8",
     "type": "execute",
     "name": "execute RestApiCallNode - get parent service data",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-parentsd\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1706.3295288085938,
-    "y": 1154.0004221200943,
-    "z": "dffc6494.bbb2d8",
+    "x": 1680.3334350585938,
+    "y": 1177.0004206895828,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "a5b86b7b.af84c8",
-        "c3c5524a.3faea"
+        "224b80f9.f7e8e",
+        "8f7eca2d.7a5ac8"
       ]
     ]
   },
   {
-    "id": "cee99943.fb3588",
+    "id": "ab4a3566.1d4448",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1966.0272235870361,
-    "y": 1030.5311307907104,
-    "z": "dffc6494.bbb2d8",
+    "x": 1940.0311298370361,
+    "y": 1053.531129360199,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "509849b3.d30508",
-        "607a7459.cb7aac"
+        "9e31b20.ec7145",
+        "24b71c25.bdf914"
       ]
     ]
   },
   {
-    "id": "e8091f90.d8758",
+    "id": "4ad4efb2.b5354",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1492.0277786254883,
-    "y": 1477.5313215255737,
-    "z": "dffc6494.bbb2d8",
+    "x": 1466.0316848754883,
+    "y": 1500.5313200950623,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "ea7febcc.253688",
-        "2c101b23.e11c54",
-        "390e0e98.c0e052",
-        "64a3b63d.2b1de8"
+        "f89715ac.25dc68",
+        "6e129b4e.95cc44",
+        "5de3f774.9f5298",
+        "153d05d.db3defa"
       ]
     ]
   },
   {
-    "id": "b7189ec7.b6673",
+    "id": "19a68b02.3eedc5",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1602.6634063720703,
-    "y": 1344.667093873024,
-    "z": "dffc6494.bbb2d8",
+    "x": 1576.6673126220703,
+    "y": 1367.6670924425125,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "86cf34ff.454008"
+        "532b87f6.cba248"
       ]
     ]
   },
   {
-    "id": "a2ba66c.8ff5498",
+    "id": "f041a5c4.8e5ff8",
     "type": "block",
     "name": "block atmoic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1827.9984703063965,
-    "y": 1881.667660355568,
-    "z": "dffc6494.bbb2d8",
+    "x": 1802.0023765563965,
+    "y": 1904.6676589250565,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "8bbd7692.ac8cd8"
+        "3ce210b6.91582"
       ]
     ]
   },
   {
-    "id": "a261c913.e49f08",
+    "id": "c531c63.7b95a38",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2189.027723312378,
-    "y": 1437.5314317941666,
-    "z": "dffc6494.bbb2d8",
+    "x": 2163.031629562378,
+    "y": 1460.531430363655,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "c9c5e103.2dba",
-        "2f06a667.74729a"
+        "bd704489.7274d8",
+        "95926f9f.7a56d"
       ]
     ]
   },
   {
-    "id": "aa76b9db.55ac58",
+    "id": "61033198.2b1b8",
     "type": "set",
     "name": "set prop.attach.siteId",
-    "xml": "<set>\n<parameter name='prop.attach.siteId' value='`$mdsal-parentsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\n\n",
+    "xml": "<set>\n<parameter name='prop.attach.siteId' value='`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\n\n",
     "comments": "",
-    "x": 2080.665012359619,
-    "y": 1955.3338705301285,
-    "z": "dffc6494.bbb2d8",
+    "x": 2054.668918609619,
+    "y": 1978.333869099617,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "1deec432.31ab3c",
+    "id": "24aa0f5e.31356",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2260.255527496338,
-    "y": 1736.00441801548,
-    "z": "dffc6494.bbb2d8",
+    "x": 2234.259433746338,
+    "y": 1759.0044165849686,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "6d2e1c61.8e7884",
-        "ac9bfac3.fa8558"
+        "e2678b6.a3e2078",
+        "322f0f47.8e765"
       ]
     ]
   },
   {
-    "id": "feeed51.dea6e28",
+    "id": "b1ee9c99.2aacf",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1883.755947113037,
-    "y": 1981.754342675209,
-    "z": "dffc6494.bbb2d8",
+    "x": 1857.759853363037,
+    "y": 2004.7543412446976,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "aa76b9db.55ac58",
-        "4e949727.dc9598"
+        "61033198.2b1b8",
+        "cbb60b59.d98d48",
+        "96db890b.9cff38"
       ]
     ]
   },
   {
-    "id": "1b86e032.9e8d5",
+    "id": "4041fa5f.8f6984",
     "type": "call",
     "name": "call sdwan-wanport-vnf-topology-operation-underlay",
     "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-wanport-vnf-topology-operation-underlay' mode='sync' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 739.753984451294,
-    "y": 1336.2539825439453,
-    "z": "dffc6494.bbb2d8",
+    "x": 713.757890701294,
+    "y": 1359.2539811134338,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "7f6d52f3.6e394c",
+    "id": "1587faed.a593f5",
     "type": "comment",
     "name": "underlay",
     "info": "1. Get consumed AR from service data\n2. for all the AR id's get the respective AR from MDSAL\n3. From MDSAL AR get parent service instance ID\n4. Get service data based in parent service instance ID to get parent service. i.e, SDWAN Infra service\n5. Get SDWAN connectivity from looping network and check for topology\n6. from parent service data get siteAttachInstance vnf and check the role\n7. from parent service data get wanportINstance vnf and check the transportNetworkName\n8. Get provided AR from the parent service data\n9. for each of the provided ARid get the AR from MDSAL\n10.in the AR check for hub\n\n",
     "comments": "",
-    "x": 647.7229633331299,
-    "y": 1301.22292137146,
-    "z": "dffc6494.bbb2d8",
+    "x": 621.7268695831299,
+    "y": 1324.2229199409485,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "38de1063.b6c52",
+    "id": "585348e6.e28c68",
     "type": "set",
     "name": "set prop.siteAttachement_length=0",
     "xml": "<set>\n<parameter name='prop.siteAttachements_length' value='0' />\n<parameter name='prop.siteIds_length' value='0' />\n\n\n\n",
     "comments": "",
-    "x": 688.9999694824219,
-    "y": 848.5311733484268,
-    "z": "dffc6494.bbb2d8",
+    "x": 663.0038757324219,
+    "y": 871.5311719179153,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "2c101b23.e11c54",
+    "id": "6e129b4e.95cc44",
     "type": "set",
     "name": "set prop.ar-service-instance-id",
-    "xml": "<set>\n<parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.service-information.service-instance-id`' />\n",
+    "xml": "<set>\n<parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id`' />\n",
     "comments": "",
-    "x": 1852.0003967285156,
-    "y": 1475.531231880188,
-    "z": "dffc6494.bbb2d8",
+    "x": 1826.0043029785156,
+    "y": 1498.5312304496765,
+    "z": "4842829a.c92f5c",
     "wires": []
   },
   {
-    "id": "390e0e98.c0e052",
+    "id": "5de3f774.9f5298",
     "type": "execute",
     "name": "generate prop.ar-service-instance-id",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>      \n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar-service-instance-id`\"/>\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1862.3326683044434,
-    "y": 1516.4093770980835,
-    "z": "dffc6494.bbb2d8",
+    "x": 1836.3365745544434,
+    "y": 1539.409375667572,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "64a3b63d.2b1de8",
+    "id": "153d05d.db3defa",
     "type": "execute",
     "name": "execute RestApiCallNode - get service data",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-sd\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1891.3327331542969,
-    "y": 1557.4093770980835,
-    "z": "dffc6494.bbb2d8",
+    "x": 1865.3366394042969,
+    "y": 1580.409375667572,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "989a92da.0b198",
-        "30bf8c06.3702c4"
+        "9f007bfc.0c1338",
+        "c288c029.05ff1"
       ]
     ]
   },
   {
-    "id": "989a92da.0b198",
+    "id": "9f007bfc.0c1338",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2147.8524169921875,
-    "y": 1566.5972105264664,
-    "z": "dffc6494.bbb2d8",
+    "x": 2121.8563232421875,
+    "y": 1589.597209095955,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "337ed6c3.e36fba"
+        "690363c.d28ea9c"
       ]
     ]
   },
   {
-    "id": "30bf8c06.3702c4",
+    "id": "c288c029.05ff1",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2150.000087738037,
-    "y": 1605.5310827493668,
-    "z": "dffc6494.bbb2d8",
+    "x": 2124.003993988037,
+    "y": 1628.5310813188553,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "8b4ff7.5f205008"
+        "d23e72e1.4c912"
       ]
     ]
   },
   {
-    "id": "337ed6c3.e36fba",
+    "id": "690363c.d28ea9c",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2277.5006103515625,
-    "y": 1560.0311704874039,
-    "z": "dffc6494.bbb2d8",
+    "x": 2251.5045166015625,
+    "y": 1583.0311690568924,
+    "z": "4842829a.c92f5c",
     "wires": [
       []
     ]
   },
   {
-    "id": "8b4ff7.5f205008",
+    "id": "d23e72e1.4c912",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1625.9998779296875,
-    "y": 1656.5311304330826,
-    "z": "dffc6494.bbb2d8",
+    "x": 1600.0037841796875,
+    "y": 1679.531129002571,
+    "z": "4842829a.c92f5c",
     "wires": [
       [
-        "70d2ed6a.c33784"
+        "a9f31ecc.485fc"
       ]
     ]
   },
   {
-    "id": "94e25478.dfdfd8",
+    "id": "54f08af3.c933d4",
     "type": "comment",
     "name": "TODO send Email",
     "info": "",
     "comments": "",
-    "x": 988.9999866485596,
-    "y": 1381.0313110351562,
-    "z": "dffc6494.bbb2d8",
+    "x": 963.0038928985596,
+    "y": 1404.0313096046448,
+    "z": "4842829a.c92f5c",
+    "wires": []
+  },
+  {
+    "id": "96db890b.9cff38",
+    "type": "set",
+    "name": "Add site attachement to list and update length",
+    "xml": "<set>\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].siteId' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles[0]' value='`$prop.role`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles_length' value='1' />\n<parameter name='prop.siteAttachements_length' value='`$prop.siteAttachements_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n",
+    "comments": "",
+    "x": 2137.253952026367,
+    "y": 2091.7539863586426,
+    "z": "4842829a.c92f5c",
     "wires": []
   }
 ]
index 1e6cf41..8dbd089 100644 (file)
@@ -1,20 +1,20 @@
 [
   {
-    "id": "61863820.711ea8",
+    "id": "d0edaee0.371d2",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 88,
-    "y": 36,
-    "z": "8a925a2b.b01bd8",
+    "x": 130.00390625,
+    "y": 68.99999856948853,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "14f9537d.79772d"
+        "ccac73a.016209"
       ]
     ]
   },
   {
-    "id": "14f9537d.79772d",
+    "id": "ccac73a.016209",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 271.00000381469727,
-    "y": 110.00001811981201,
-    "z": "8a925a2b.b01bd8",
+    "x": 313.00391006469727,
+    "y": 143.00001668930054,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "d19b9445.194798"
+        "20c8ba03.7fc266"
       ]
     ]
   },
   {
-    "id": "d19b9445.194798",
+    "id": "20c8ba03.7fc266",
     "type": "method",
     "name": "sdwan-attachment-topology-operation-create",
     "xml": "<method rpc='sdwan-attachment-topology-operation-create' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 259.0001220703125,
-    "y": 198.00000095367432,
-    "z": "8a925a2b.b01bd8",
+    "x": 301.0040283203125,
+    "y": 230.99999952316284,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "3526110c.60448e"
+        "7fb8a0a8.cc16e"
       ]
     ]
   },
   {
-    "id": "3526110c.60448e",
+    "id": "7fb8a0a8.cc16e",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 179.00005340576172,
-    "y": 947.0002489089966,
-    "z": "8a925a2b.b01bd8",
+    "x": 221.00395965576172,
+    "y": 980.0002474784851,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "99952776.e81ae8",
-        "9b94537c.a4dfa",
-        "9596dbd6.648298",
-        "636ccd57.e35144",
-        "43bd9b90.f9bb04",
-        "4e3d9f6f.e48ca",
-        "a91b49df.3ab368",
-        "af03f775.1849d8",
-        "a399f576.497928",
-        "86a651b6.fa2c1",
-        "27a69ba7.020164",
-        "e417171b.b17d78",
-        "a85450f9.54be5",
-        "8337596d.6afa48",
-        "5db0bc82.831f24",
-        "757f6754.1033f8",
-        "e6e8c666.3550b8",
-        "7955fe12.58b57",
-        "9077e61b.e6a3a8",
-        "8e980e4e.121e8",
-        "8bf022a6.d0cbb",
-        "3aa5d5fd.f4649a"
+        "2437dbcf.331264",
+        "730eea74.2853a4",
+        "3eb4cc5.e84ab34",
+        "98a0f1ed.ad821",
+        "48d3a6f4.7a9f68",
+        "5e870da5.d4b9c4",
+        "f395bfa7.29021",
+        "a35c1852.b6d228",
+        "128728fe.ad5877",
+        "7f796e7c.de4f4",
+        "52f115fe.31e7bc",
+        "6a649bce.b1cf84",
+        "549597d0.2434c8",
+        "b67f723e.a2fdd",
+        "e622a70a.fb3f98",
+        "3c5561ef.3b198e",
+        "34b5882f.c7cb48",
+        "273cbd63.ba5da2",
+        "7cadc884.11c378",
+        "f028e514.462408",
+        "2fe2b50e.b3feea",
+        "b0371fd5.a7b76",
+        "fdbceac6.217498"
       ]
     ]
   },
   {
-    "id": "aa8c6e8b.e30e",
+    "id": "ce81891c.9bbbd8",
     "type": "comment",
     "name": "Set allotted resource id if not sent by SO",
     "info": "",
     "comments": "",
-    "x": 663.0767517089844,
-    "y": 107.43391990661621,
-    "z": "8a925a2b.b01bd8",
+    "x": 705.0806579589844,
+    "y": 140.43391847610474,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "99952776.e81ae8",
+    "id": "2437dbcf.331264",
     "type": "switchNode",
     "name": "switch allotted-resource-id",
     "xml": "<switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 609.0000305175781,
-    "y": 162.99999332427979,
-    "z": "8a925a2b.b01bd8",
+    "x": 651.0039367675781,
+    "y": 195.9999918937683,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "6811d51c.3757dc",
-        "513b9b13.594134"
+        "ae4415d.9e44fe8",
+        "c8d7b3ce.5e5a2"
       ]
     ]
   },
   {
-    "id": "6811d51c.3757dc",
+    "id": "ae4415d.9e44fe8",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>",
     "comments": "",
     "outputs": 1,
-    "x": 807.0001182556152,
-    "y": 132.999981880188,
-    "z": "8a925a2b.b01bd8",
+    "x": 849.0040245056152,
+    "y": 165.9999804496765,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "7f9fc121.cd5a5"
+        "349de4b3.2e578c"
       ]
     ]
   },
   {
-    "id": "513b9b13.594134",
+    "id": "c8d7b3ce.5e5a2",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 806.0000267028809,
-    "y": 169.99999237060547,
-    "z": "8a925a2b.b01bd8",
+    "x": 848.0039329528809,
+    "y": 202.999990940094,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "28a76577.73245a"
+        "106c46a5.0a2af9"
       ]
     ]
   },
   {
-    "id": "28a76577.73245a",
+    "id": "106c46a5.0a2af9",
     "type": "set",
     "name": "set tmp.ar.allotted-resource-id",
     "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n",
     "comments": "",
-    "x": 1004.0000152587891,
-    "y": 167.0000114440918,
-    "z": "8a925a2b.b01bd8",
+    "x": 1046.003921508789,
+    "y": 200.00001001358032,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "9b94537c.a4dfa",
+    "id": "730eea74.2853a4",
     "type": "set",
     "name": "set tmp.ar.self-link",
     "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/connection-attachment-topology/'` \" />\n\n",
     "comments": "",
-    "x": 576.9999542236328,
-    "y": 384.0001001358032,
-    "z": "8a925a2b.b01bd8",
+    "x": 619.0038604736328,
+    "y": 417.00009870529175,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "9596dbd6.648298",
+    "id": "3eb4cc5.e84ab34",
     "type": "execute",
     "name": "execute Properties",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n    <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",
     "comments": "",
     "outputs": 1,
-    "x": 577.2618713378906,
-    "y": 465.6667814254761,
-    "z": "8a925a2b.b01bd8",
+    "x": 619.2657775878906,
+    "y": 498.6667799949646,
+    "z": "28b033ee.a901cc",
     "wires": [
       []
     ]
   },
   {
-    "id": "636ccd57.e35144",
+    "id": "98a0f1ed.ad821",
     "type": "execute",
     "name": "generate allotted-resource tmp.ar-url",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 630.2619323730469,
-    "y": 552.6666994094849,
-    "z": "8a925a2b.b01bd8",
+    "x": 672.2658386230469,
+    "y": 585.6666979789734,
+    "z": "28b033ee.a901cc",
     "wires": [
       []
     ]
   },
   {
-    "id": "7f9fc121.cd5a5",
+    "id": "349de4b3.2e578c",
     "type": "execute",
     "name": "execute tmp.ar.allotted-resource-id",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"tmp.ar.allotted-resource-id\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1022.0000953674316,
-    "y": 133.9999876022339,
-    "z": "8a925a2b.b01bd8",
+    "x": 1064.0040016174316,
+    "y": 166.9999861717224,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "88221720.7c95b8"
+        "5d37f876.0cc698"
       ]
     ]
   },
   {
-    "id": "88221720.7c95b8",
+    "id": "5d37f876.0cc698",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1240.0001373291016,
-    "y": 133.99995136260986,
-    "z": "8a925a2b.b01bd8",
+    "x": 1282.0040435791016,
+    "y": 166.9999499320984,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "aa4b0ebd.72265"
+        "b5e2a2dc.0d71c"
       ]
     ]
   },
   {
-    "id": "aa4b0ebd.72265",
+    "id": "b5e2a2dc.0d71c",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value=\"An error occured while generation allotted resource ID\" />\n",
     "comments": "",
-    "x": 1406.0000915527344,
-    "y": 133.9999656677246,
-    "z": "8a925a2b.b01bd8",
+    "x": 1448.0039978027344,
+    "y": 166.99996423721313,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "1ec18fe8.aa439",
+    "id": "8f7a89d.e442878",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1136.0002307891846,
-    "y": 624.7778720855713,
-    "z": "8a925a2b.b01bd8",
+    "x": 1178.0041370391846,
+    "y": 657.7778706550598,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "14fc1138.5da1ef"
+        "b23dd04a.37b72"
       ]
     ]
   },
   {
-    "id": "9378fa3a.19c018",
+    "id": "7072a3ba.59cbcc",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error: Existing connection attachment allotted resource\" />\n    \n",
     "comments": "",
-    "x": 1869.5186100006104,
-    "y": 625.8439435958862,
-    "z": "8a925a2b.b01bd8",
+    "x": 1911.5225162506104,
+    "y": 658.8439421653748,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "b12c1e8e.81e23",
+    "id": "3b5bc99a.d557b6",
     "type": "comment",
     "name": "Check for non existence of allotted resource",
     "info": "",
     "comments": "",
-    "x": 992.0001525878906,
-    "y": 558.7779388427734,
-    "z": "8a925a2b.b01bd8",
+    "x": 1034.0040588378906,
+    "y": 591.777937412262,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "da203e6.ea028c",
+    "id": "340e57cb.5c86a8",
     "type": "for",
     "name": "for cidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]",
     "xml": "<for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1512.6666984558105,
-    "y": 769.0000512599945,
-    "z": "8a925a2b.b01bd8",
+    "x": 1554.6706047058105,
+    "y": 802.000049829483,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "98ae415a.0e4e6"
+        "3cebd63.269772a"
       ]
     ]
   },
   {
-    "id": "4e3d9f6f.e48ca",
+    "id": "5e870da5.d4b9c4",
     "type": "switchNode",
     "name": "switch service-data.consumed-allotted-resources_length",
     "xml": "<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 694.6660232543945,
-    "y": 745.7140836715698,
-    "z": "8a925a2b.b01bd8",
+    "x": 736.6699295043945,
+    "y": 778.7140822410583,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "210abe50.d12562",
-        "fd87de34.5f561"
+        "9df6142.79785e8",
+        "58099c96.2c7e34"
       ]
     ]
   },
   {
-    "id": "210abe50.d12562",
+    "id": "9df6142.79785e8",
     "type": "other",
     "name": "outcome Null",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 998.8089218139648,
-    "y": 714.5715208053589,
-    "z": "8a925a2b.b01bd8",
+    "x": 1040.8128280639648,
+    "y": 747.5715193748474,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "230c326a.73559e"
+        "be192375.06e28"
       ]
     ]
   },
   {
-    "id": "fd87de34.5f561",
+    "id": "58099c96.2c7e34",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 975.8089714050293,
-    "y": 775.571475982666,
-    "z": "8a925a2b.b01bd8",
+    "x": 1017.8128776550293,
+    "y": 808.5714745521545,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "6fcbf8ba.f19558"
+        "96b3b48a.902058"
       ]
     ]
   },
   {
-    "id": "6fcbf8ba.f19558",
+    "id": "96b3b48a.902058",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1135.9360618591309,
-    "y": 773.697452545166,
-    "z": "8a925a2b.b01bd8",
+    "x": 1177.9399681091309,
+    "y": 806.6974511146545,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "da203e6.ea028c",
-        "aac67e51.e0669",
-        "1472489a.f6dd67"
+        "340e57cb.5c86a8",
+        "718d194e.2e6788",
+        "a28f94f9.cae788"
       ]
     ]
   },
   {
-    "id": "230c326a.73559e",
+    "id": "be192375.06e28",
     "type": "set",
     "name": "set cidx",
     "xml": "<set>\n<parameter name='tmp.cidx' value=\"`0`\" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value=\"1\" />\n\n\n",
     "comments": "",
-    "x": 1148.6659049987793,
-    "y": 712.2855710983276,
-    "z": "8a925a2b.b01bd8",
+    "x": 1190.6698112487793,
+    "y": 745.2855696678162,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "a91b49df.3ab368",
+    "id": "f395bfa7.29021",
     "type": "set",
     "name": "set consumed allotted resources",
     "xml": "<set>\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value=\"`$tmp.ar.self-link` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />\n\n",
     "comments": "",
-    "x": 623.5233154296875,
-    "y": 849.2856483459473,
-    "z": "8a925a2b.b01bd8",
+    "x": 665.5272216796875,
+    "y": 882.2856469154358,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "aac67e51.e0669",
+    "id": "718d194e.2e6788",
     "type": "switchNode",
     "name": "switch tmp.found-cidx",
     "xml": "<switch test='`$tmp.found-cidx`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1325.0511093139648,
-    "y": 805.708975315094,
-    "z": "8a925a2b.b01bd8",
+    "x": 1367.0550155639648,
+    "y": 838.7089738845825,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "83192091.f2dbe"
+        "144fdd18.b7f4c3"
       ]
     ]
   },
   {
-    "id": "83192091.f2dbe",
+    "id": "144fdd18.b7f4c3",
     "type": "outcomeTrue",
     "name": "false",
     "xml": "<outcome value='false'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1515.0510635375977,
-    "y": 805.7089123725891,
-    "z": "8a925a2b.b01bd8",
+    "x": 1557.0549697875977,
+    "y": 838.7089109420776,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "edcd9f1b.5f174"
+        "67e912a8.6bc78c"
       ]
     ]
   },
   {
-    "id": "edcd9f1b.5f174",
+    "id": "67e912a8.6bc78c",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1681.0510635375977,
-    "y": 805.7089123725891,
-    "z": "8a925a2b.b01bd8",
+    "x": 1723.0549697875977,
+    "y": 838.7089109420776,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "41ea1034.cd583"
+        "95e82f8c.b9b06"
       ]
     ]
   },
   {
-    "id": "98ae415a.0e4e6",
+    "id": "3cebd63.269772a",
     "type": "switchNode",
     "name": "switch allotted-resource-id",
     "xml": "<switch test=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1929.7783279418945,
-    "y": 766.000078201294,
-    "z": "8a925a2b.b01bd8",
+    "x": 1971.7822341918945,
+    "y": 799.0000767707825,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "f6ba2e93.3a869"
+        "77a3d234.ab1d9c"
       ]
     ]
   },
   {
-    "id": "f6ba2e93.3a869",
+    "id": "77a3d234.ab1d9c",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2111.587902069092,
-    "y": 766.4645252227783,
-    "z": "8a925a2b.b01bd8",
+    "x": 2153.591808319092,
+    "y": 799.4645237922668,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "135a37d3.398c28"
+        "c2bb18ee.6afb98"
       ]
     ]
   },
   {
-    "id": "41ea1034.cd583",
+    "id": "95e82f8c.b9b06",
     "type": "set",
     "name": "set tmp.cidx",
     "xml": "<set>\n<parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />\n",
     "comments": "",
-    "x": 1842.924446105957,
-    "y": 805.2206134796143,
-    "z": "8a925a2b.b01bd8",
+    "x": 1884.928352355957,
+    "y": 838.2206120491028,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "3a0c681c.87b8c8",
+    "id": "f6050ba6.e3a988",
     "type": "comment",
     "name": "Add to consumed service consumed-allotted-resources in mdsal",
     "info": "Prepare data and add to service-data",
     "comments": "",
-    "x": 715.667236328125,
-    "y": 676.0000476837158,
-    "z": "8a925a2b.b01bd8",
+    "x": 757.671142578125,
+    "y": 709.0000462532043,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "4601b662.be85f8",
+    "id": "950d939a.d6aa9",
     "type": "comment",
     "name": "This set resource will be added to MDSAL by provider code",
     "info": "Below we add to service-data.consumed-allotted-resource at last index",
     "comments": "",
-    "x": 703.0001525878906,
-    "y": 814.7781400680542,
-    "z": "8a925a2b.b01bd8",
+    "x": 745.0040588378906,
+    "y": 847.7781386375427,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "6c13b6ba.f1d808",
+    "id": "fdbceac6.217498",
     "type": "update",
     "name": "update AAI allotted-resource",
     "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n    <parameter name=\"id\" value=\"`$tmp.ar.allotted-resource-id`\" />\n\t<parameter name=\"name\" value=\"`$prop.connection-attachment.sotnVpnName`\" />\n\t<parameter name=\"access-provider-id\" value=\"`$prop.connection-attachment.access-provider-id`\" />\n\t<parameter name=\"access-client-id\" value=\"`$prop.connection-attachment.access-client-id`\" />\n\t<parameter name=\"access-topology-id\" value=\"`$prop.connection-attachment.access-topology-id`\" />\n\t<parameter name=\"access-node-id\" value=\"`$prop.connection-attachment.access-node-id`\" />\n\t<parameter name=\"access-ltp-id\" value=\"`$prop.connection-attachment.access-ltp-id`\" />\t\n\t<parameter name=\"cvlan\" value=\"`$prop.connection-attachment.cVLAN`\" />\n    <parameter name=\"vpn-name\" value=\"`$prop.connection-attachment.sotnVpnName`\" />\n\t<parameter name=\"selflink\" value=\"`$tmp.ar.self-link`\" />\n\t<parameter name=\"model-invariant-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`\" />\n\t<parameter name=\"model-version-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`\" />\n\t<parameter name=\"operational-status\" value=\"Created\" />\n",
     "comments": "",
     "outputs": 1,
-    "x": 613.6908569335938,
-    "y": 1774.531904220581,
-    "z": "8a925a2b.b01bd8",
+    "x": 655.6947631835938,
+    "y": 1807.5319027900696,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "cc11f86f.a05c98",
-        "2748d678.9b155a"
+        "49ae8647.6b2328",
+        "62f42f4e.42781"
       ]
     ]
   },
   {
-    "id": "cc11f86f.a05c98",
+    "id": "49ae8647.6b2328",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 808.4527931213379,
-    "y": 1765.4845056533813,
-    "z": "8a925a2b.b01bd8",
+    "x": 850.4566993713379,
+    "y": 1798.4845042228699,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "ad7d0ba7.e370e8"
+        "c8a49936.3deaf8"
       ]
     ]
   },
   {
-    "id": "ad7d0ba7.e370e8",
+    "id": "c8a49936.3deaf8",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"AAI failed\" />\n",
     "comments": "",
-    "x": 974.9766731262207,
-    "y": 1777.1035766601562,
-    "z": "8a925a2b.b01bd8",
+    "x": 1016.9805793762207,
+    "y": 1810.1035752296448,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "2748d678.9b155a",
+    "id": "62f42f4e.42781",
     "type": "failure",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 815.5480804443359,
-    "y": 1798.246473312378,
-    "z": "8a925a2b.b01bd8",
+    "x": 857.5519866943359,
+    "y": 1831.2464718818665,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "ad7d0ba7.e370e8"
+        "c8a49936.3deaf8"
       ]
     ]
   },
   {
-    "id": "65ec4e22.c3de6",
+    "id": "f380425c.83892",
     "type": "comment",
     "name": "Save Resource to AAI",
     "info": "",
     "comments": "",
-    "x": 647.5005340576172,
-    "y": 1742.833875656128,
-    "z": "8a925a2b.b01bd8",
+    "x": 689.5044403076172,
+    "y": 1775.8338742256165,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "cf325757.026c08",
+    "id": "c58c2e54.58ab4",
     "type": "comment",
     "name": "Set allotted resource type if not sent by SO",
     "info": "",
     "comments": "",
-    "x": 649,
-    "y": 216.00000095367432,
-    "z": "8a925a2b.b01bd8",
+    "x": 691.00390625,
+    "y": 248.99999952316284,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "43bd9b90.f9bb04",
+    "id": "48d3a6f4.7a9f68",
     "type": "switchNode",
     "name": "switch allotted-resource-type",
     "xml": "<switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 610.9233093261719,
-    "y": 256.5660572052002,
-    "z": "8a925a2b.b01bd8",
+    "x": 652.9272155761719,
+    "y": 289.5660557746887,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "b8faf677.a88b58",
-        "cb37a8ac.844d88"
+        "a5628a44.6843d8",
+        "9e87888a.c266e8"
       ]
     ]
   },
   {
-    "id": "b8faf677.a88b58",
+    "id": "a5628a44.6843d8",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>",
     "comments": "",
     "outputs": 1,
-    "x": 813.9234619140625,
-    "y": 241.56606006622314,
-    "z": "8a925a2b.b01bd8",
+    "x": 855.9273681640625,
+    "y": 274.56605863571167,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "fb16264e.206978"
+        "eafc3b17.674668"
       ]
     ]
   },
   {
-    "id": "cb37a8ac.844d88",
+    "id": "9e87888a.c266e8",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 806.9232902526855,
-    "y": 281.5660800933838,
-    "z": "8a925a2b.b01bd8",
+    "x": 848.9271965026855,
+    "y": 314.5660786628723,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "46a12ee1.3eb2e"
+        "1455473e.f663e9"
       ]
     ]
   },
   {
-    "id": "46a12ee1.3eb2e",
+    "id": "1455473e.f663e9",
     "type": "set",
     "name": "set tmp.ar.allotted-resource-type",
     "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-type' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`' />\n",
     "comments": "",
-    "x": 1038.9232749938965,
-    "y": 281.56608486175537,
-    "z": "8a925a2b.b01bd8",
+    "x": 1080.9271812438965,
+    "y": 314.5660834312439,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "e0d4b358.f0111",
+    "id": "f29b8b09.a0de68",
     "type": "comment",
     "name": "For storage in AAI connection-attachment-topology",
     "info": "",
     "comments": "",
-    "x": 673.9999618530273,
-    "y": 351.0000009536743,
-    "z": "8a925a2b.b01bd8",
+    "x": 716.0038681030273,
+    "y": 383.99999952316284,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "2c1dc14e.d8696e",
+    "id": "c8d768ea.3ebd78",
     "type": "comment",
     "name": "Obtain different URL, template location etc",
     "info": "For saving resource information to MDSAL & for AAI",
     "comments": "",
-    "x": 648.9999465942383,
-    "y": 432.8889102935791,
-    "z": "8a925a2b.b01bd8",
+    "x": 691.0038528442383,
+    "y": 465.8889088630676,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "41be4404.2062fc",
+    "id": "40de4362.ae07ec",
     "type": "comment",
     "name": "Used for Put AR by id to MDSAL",
     "info": "",
     "comments": "",
-    "x": 615.0000305175781,
-    "y": 521.8889274597168,
-    "z": "8a925a2b.b01bd8",
+    "x": 657.0039367675781,
+    "y": 554.8889260292053,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "e088f78d.0cd8b8",
+    "id": "1f6351e.76805ae",
     "type": "comment",
     "name": "Obtain the last index in services",
     "info": "ServiceData is added by Provider code",
     "comments": "",
-    "x": 616.4444732666016,
-    "y": 707.8888721466064,
-    "z": "8a925a2b.b01bd8",
+    "x": 658.4483795166016,
+    "y": 740.888870716095,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "9077e61b.e6a3a8",
+    "id": "7cadc884.11c378",
     "type": "set",
     "name": "set output to api handler",
     "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='connection-attachment-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $connection-attachment-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
     "comments": "",
-    "x": 599.2681427001953,
-    "y": 1681.359203338623,
-    "z": "8a925a2b.b01bd8",
+    "x": 641.2720489501953,
+    "y": 1714.3592019081116,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "8e980e4e.121e8",
+    "id": "f028e514.462408",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 567.6812286376953,
-    "y": 1843.9749298095703,
-    "z": "8a925a2b.b01bd8",
+    "x": 609.6851348876953,
+    "y": 1876.9749283790588,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "fb16264e.206978",
+    "id": "eafc3b17.674668",
     "type": "set",
     "name": "set tmp.ar.allotted-resource-type",
     "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-type' value=\"SDWANAttachmentInstance\" />\n",
     "comments": "",
-    "x": 1053.0001487731934,
-    "y": 241.99998664855957,
-    "z": "8a925a2b.b01bd8",
+    "x": 1095.0040550231934,
+    "y": 274.9999852180481,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "7955fe12.58b57",
+    "id": "273cbd63.ba5da2",
     "type": "execute",
     "name": "execute RestApiCallNode - PUT AR by id",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.sdwan-attachment.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 650.0002746582031,
-    "y": 1615.00013256073,
-    "z": "8a925a2b.b01bd8",
+    "x": 692.0041809082031,
+    "y": 1648.0001311302185,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "7e102bff.eb07f4",
-        "11a3c1ef.0f585e",
-        "cbe02c45.fd392"
+        "98032a32.e6e0f8",
+        "aa969973.4cd018",
+        "1764b80a.4c5668"
       ]
     ]
   },
   {
-    "id": "7e102bff.eb07f4",
+    "id": "98032a32.e6e0f8",
     "type": "not-found",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 899.6416282653809,
-    "y": 1653.3314628601074,
-    "z": "8a925a2b.b01bd8",
+    "x": 941.6455345153809,
+    "y": 1686.331461429596,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "d199a2ac.4c653"
+        "2942de2a.1ad962"
       ]
     ]
   },
   {
-    "id": "11a3c1ef.0f585e",
+    "id": "aa969973.4cd018",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 890.6416778564453,
-    "y": 1621.831488609314,
-    "z": "8a925a2b.b01bd8",
+    "x": 932.6455841064453,
+    "y": 1654.8314871788025,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "d199a2ac.4c653"
+        "2942de2a.1ad962"
       ]
     ]
   },
   {
-    "id": "cbe02c45.fd392",
+    "id": "1764b80a.4c5668",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 894.391716003418,
-    "y": 1592.1885934844613,
-    "z": "8a925a2b.b01bd8",
+    "x": 936.395622253418,
+    "y": 1625.1885920539498,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "d05ce36c.67312"
+        "801134b3.e6dc28"
       ]
     ]
   },
   {
-    "id": "d199a2ac.4c653",
+    "id": "2942de2a.1ad962",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error updating md-sal for connection-attachment-allotted-resource\" />\n",
     "comments": "",
-    "x": 1060.391716003418,
-    "y": 1622.5815124511719,
-    "z": "8a925a2b.b01bd8",
+    "x": 1102.395622253418,
+    "y": 1655.5815110206604,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "d05ce36c.67312",
+    "id": "801134b3.e6dc28",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1036.0476837158203,
-    "y": 1588.3807626739144,
-    "z": "8a925a2b.b01bd8",
+    "x": 1078.0515899658203,
+    "y": 1621.380761243403,
+    "z": "28b033ee.a901cc",
     "wires": [
       []
     ]
   },
   {
-    "id": "27a69ba7.020164",
+    "id": "52f115fe.31e7bc",
     "type": "execute",
     "name": "execute RestApiCallNode - Update parent provided service AR",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"parent\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 714.9999542236328,
-    "y": 1131.000165939331,
-    "z": "8a925a2b.b01bd8",
+    "x": 757.0038604736328,
+    "y": 1164.0001645088196,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "2ac08c5a.9ea264",
-        "9091e2db.32589",
-        "bcd16107.cb13d"
+        "d67d9a08.605298",
+        "22fe8dcf.9c57d2",
+        "85578012.048c2"
       ]
     ]
   },
   {
-    "id": "2ac08c5a.9ea264",
+    "id": "d67d9a08.605298",
     "type": "not-found",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1023.3080139160156,
-    "y": 1162.998441696167,
-    "z": "8a925a2b.b01bd8",
+    "x": 1065.3119201660156,
+    "y": 1195.9984402656555,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "900f543a.444328"
+        "5c849a0e.1b8584"
       ]
     ]
   },
   {
-    "id": "9091e2db.32589",
+    "id": "22fe8dcf.9c57d2",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1014.3080635070801,
-    "y": 1131.4984674453735,
-    "z": "8a925a2b.b01bd8",
+    "x": 1056.31196975708,
+    "y": 1164.498466014862,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "900f543a.444328"
+        "5c849a0e.1b8584"
       ]
     ]
   },
   {
-    "id": "bcd16107.cb13d",
+    "id": "85578012.048c2",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1018.0581016540527,
-    "y": 1101.8555723205209,
-    "z": "8a925a2b.b01bd8",
+    "x": 1060.0620079040527,
+    "y": 1134.8555708900094,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "1404ab79.5b1245"
+        "6e0abfa0.4ac64"
       ]
     ]
   },
   {
-    "id": "900f543a.444328",
+    "id": "5c849a0e.1b8584",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error updating md-sal for connection-attachment-allotted-resource\" />\n",
     "comments": "",
-    "x": 1184.0581016540527,
-    "y": 1132.2484912872314,
-    "z": "8a925a2b.b01bd8",
+    "x": 1226.0620079040527,
+    "y": 1165.24848985672,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "1404ab79.5b1245",
+    "id": "6e0abfa0.4ac64",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1159.714069366455,
-    "y": 1098.047741509974,
-    "z": "8a925a2b.b01bd8",
+    "x": 1201.717975616455,
+    "y": 1131.0477400794625,
+    "z": "28b033ee.a901cc",
     "wires": [
       []
     ]
   },
   {
-    "id": "39d4184a.092378",
+    "id": "d900fe90.080fa",
     "type": "comment",
     "name": "Put the parent allotted resource in mdsal",
     "info": "",
     "comments": "",
-    "x": 643.9999008178711,
-    "y": 1093.000072479248,
-    "z": "8a925a2b.b01bd8",
+    "x": 686.0038070678711,
+    "y": 1126.0000710487366,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "a85450f9.54be5",
+    "id": "549597d0.2434c8",
     "type": "set",
     "name": "set connection-attachment-ar-identifiers",
     "xml": "<set>\n<parameter name='connection-attachment-ar-identifiers.consuming-service-instance-id' value=\"`$connection-attachment-topology-operation-input.service-information.service-instance-id` \" />\n<parameter name='connection-attachment-ar-identifiers.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n<parameter name='connection-attachment-ar-identifiers.allotted-resource-type' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type` \" />\n<parameter name='connection-attachment-ar-identifiers.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n\n",
     "comments": "",
-    "x": 640.3570861816406,
-    "y": 1295.5716915130615,
-    "z": "8a925a2b.b01bd8",
+    "x": 682.3609924316406,
+    "y": 1328.57169008255,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "e417171b.b17d78",
+    "id": "6a649bce.b1cf84",
     "type": "set",
     "name": "set ar-data",
     "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='connection-attachment-ar.allotted-resource-status.action' value=\"`$connection-attachment-topology-operation-input.request-information.request-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value=\"connection-attachment-topology-operation\" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$connection-attachment-topology-operation-input.request-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$connection-attachment-topology-operation-input.service-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.' value=\"`$connection-attachment-topology-operation-input.connection-attachment-request-input.` \" />",
     "comments": "",
-    "x": 560.2139129638672,
-    "y": 1263.381194114685,
-    "z": "8a925a2b.b01bd8",
+    "x": 602.2178192138672,
+    "y": 1296.3811926841736,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "8337596d.6afa48",
+    "id": "b67f723e.a2fdd",
     "type": "set",
     "name": "set identifiers in overall structure",
     "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.' \nvalue=\"`$connection-attachment-ar-identifiers.`\" />\n\n\n",
     "comments": "",
-    "x": 619.1668853759766,
-    "y": 1329.6668767929077,
-    "z": "8a925a2b.b01bd8",
+    "x": 661.1707916259766,
+    "y": 1362.6668753623962,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "5db0bc82.831f24",
+    "id": "e622a70a.fb3f98",
     "type": "execute",
     "name": "execute getTime",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 571.4997253417969,
-    "y": 1403.0004043579102,
-    "z": "8a925a2b.b01bd8",
+    "x": 613.5036315917969,
+    "y": 1436.0004029273987,
+    "z": "28b033ee.a901cc",
     "wires": [
       []
     ]
   },
   {
-    "id": "757f6754.1033f8",
+    "id": "3c5561ef.3b198e",
     "type": "set",
     "name": "set allotted-resource-oper-status",
     "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
     "comments": "",
-    "x": 622.4867630004883,
-    "y": 1458.9516372680664,
-    "z": "8a925a2b.b01bd8",
+    "x": 664.4906692504883,
+    "y": 1491.951635837555,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "e6e8c666.3550b8",
+    "id": "34b5882f.c7cb48",
     "type": "set",
     "name": "set model-data",
     "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` \" />",
     "comments": "",
-    "x": 567.0553817749023,
-    "y": 1364.5557622909546,
-    "z": "8a925a2b.b01bd8",
+    "x": 609.0592880249023,
+    "y": 1397.5557608604431,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "99a7dd56.4fb72",
+    "id": "f1efc3d3.15b9f",
     "type": "comment",
     "name": "Prepare data for allotted-resource addition to MDSAL",
     "info": "This will add to allotted-resource which is present inside service.",
     "comments": "",
-    "x": 684.3888702392578,
-    "y": 1229.5556087493896,
-    "z": "8a925a2b.b01bd8",
+    "x": 726.3927764892578,
+    "y": 1262.5556073188782,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "86a651b6.fa2c1",
+    "id": "7f796e7c.de4f4",
     "type": "execute",
     "name": "generate parent-ar url - replace allotted-resource-id",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.parent-ar-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.parent-ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 679.5000152587891,
-    "y": 1057.0000114440918,
-    "z": "8a925a2b.b01bd8",
+    "x": 721.5039215087891,
+    "y": 1090.0000100135803,
+    "z": "28b033ee.a901cc",
     "wires": [
       []
     ]
   },
   {
-    "id": "a399f576.497928",
+    "id": "128728fe.ad5877",
     "type": "execute",
     "name": "generate parent-ar url - replace service-instance-id",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.parent-provided-resource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.parent-ar-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 675.4999389648438,
-    "y": 1014.000147819519,
-    "z": "8a925a2b.b01bd8",
+    "x": 717.5038452148438,
+    "y": 1047.0001463890076,
+    "z": "28b033ee.a901cc",
     "wires": [
       []
     ]
   },
   {
-    "id": "b106df9f.5ad7c",
+    "id": "6a7cea15.b62614",
     "type": "comment",
     "name": "Prepare Parent AR URL",
     "info": "Preparation to set provided-allotted-resource in parent service instance",
     "comments": "",
-    "x": 593.5003967285156,
-    "y": 943.0001010894775,
-    "z": "8a925a2b.b01bd8",
+    "x": 635.5043029785156,
+    "y": 976.0000996589661,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "af03f775.1849d8",
+    "id": "a35c1852.b6d228",
     "type": "set",
     "name": "set tmp.ar.parent-service-instance-id",
     "xml": "<set>\n<parameter name='tmp.ar.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n\n",
     "comments": "",
-    "x": 632.5001907348633,
-    "y": 976.5000405311584,
-    "z": "8a925a2b.b01bd8",
+    "x": 674.5040969848633,
+    "y": 1009.500039100647,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "135a37d3.398c28",
+    "id": "c2bb18ee.6afb98",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error updating md-sal for connection-attachment-allotted-resource as cosumed allotted resource already exists.\" />\n",
     "comments": "",
-    "x": 2189.7569732666016,
-    "y": 814.645830154419,
-    "z": "8a925a2b.b01bd8",
+    "x": 2231.7608795166016,
+    "y": 847.6458287239075,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "1472489a.f6dd67",
+    "id": "a28f94f9.cae788",
     "type": "set",
     "name": "set tmp.found-cidx",
     "xml": "<set>\n<parameter name='tmp.found-cidx' value=\"`false`\" />\n\n\n",
     "comments": "",
-    "x": 1315.6461448669434,
-    "y": 726.3125731945038,
-    "z": "8a925a2b.b01bd8",
+    "x": 1357.6500511169434,
+    "y": 759.3125717639923,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "a78b3889.5b8998",
+    "id": "c891031.324ba",
     "type": "comment",
     "name": "Add to parent services provided-allotted-resources in mdsal",
     "info": "",
     "comments": "",
-    "x": 704.2015075683594,
-    "y": 910.9792575836182,
-    "z": "8a925a2b.b01bd8",
+    "x": 746.2054138183594,
+    "y": 943.9792561531067,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "67269130.185f5",
+    "id": "2273a66f.0415ca",
     "type": "comment",
     "name": "Add to allotted-resources in mdsal",
     "info": "",
     "comments": "",
-    "x": 624.9686965942383,
-    "y": 1196.9689378738403,
-    "z": "8a925a2b.b01bd8",
+    "x": 666.9726028442383,
+    "y": 1229.9689364433289,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "14fc1138.5da1ef",
+    "id": "b23dd04a.37b72",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1298.000051498413,
-    "y": 624.2777614593506,
-    "z": "8a925a2b.b01bd8",
+    "x": 1340.003957748413,
+    "y": 657.2777600288391,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "4695b038.898f5"
+        "a6dda7d3.822f38"
       ]
     ]
   },
   {
-    "id": "4695b038.898f5",
+    "id": "a6dda7d3.822f38",
     "type": "switchNode",
     "name": "switch cr length",
     "xml": "<switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1485.8574314117432,
-    "y": 624.8968968391418,
-    "z": "8a925a2b.b01bd8",
+    "x": 1527.8613376617432,
+    "y": 657.8968954086304,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "207b23e6.6bd71c"
+        "5bd5d251.e9afcc"
       ]
     ]
   },
   {
-    "id": "207b23e6.6bd71c",
+    "id": "5bd5d251.e9afcc",
     "type": "other",
     "name": "outcome 1",
     "xml": "<outcome value='1'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1685.1905536651611,
-    "y": 624.896975517273,
-    "z": "8a925a2b.b01bd8",
+    "x": 1727.1944599151611,
+    "y": 657.8969740867615,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "9378fa3a.19c018"
+        "7072a3ba.59cbcc"
       ]
     ]
   },
   {
-    "id": "8bf022a6.d0cbb",
+    "id": "2fe2b50e.b3feea",
     "type": "execute",
     "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 770.0000534057617,
-    "y": 619.0000371932983,
-    "z": "8a925a2b.b01bd8",
+    "x": 812.0039596557617,
+    "y": 652.0000357627869,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "1ec18fe8.aa439",
-        "a8c0bcfd.baccb"
+        "8f7a89d.e442878",
+        "3a286aef.d7f3b6"
       ]
     ]
   },
   {
-    "id": "a8c0bcfd.baccb",
+    "id": "3a286aef.d7f3b6",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1138.0000839233398,
-    "y": 589.0000352859497,
-    "z": "8a925a2b.b01bd8",
+    "x": 1180.0039901733398,
+    "y": 622.0000338554382,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "e7c1d5d7.6402e8"
+        "13ffa20f.c9e16e"
       ]
     ]
   },
   {
-    "id": "e7c1d5d7.6402e8",
+    "id": "13ffa20f.c9e16e",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1290.0000839233398,
-    "y": 588.0000352859497,
-    "z": "8a925a2b.b01bd8",
+    "x": 1332.0039901733398,
+    "y": 621.0000338554382,
+    "z": "28b033ee.a901cc",
     "wires": [
       []
     ]
   },
   {
-    "id": "3aa5d5fd.f4649a",
+    "id": "b0371fd5.a7b76",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 576.0039215087891,
-    "y": 1534.2500038146973,
-    "z": "8a925a2b.b01bd8",
+    "x": 618.0078277587891,
+    "y": 1567.2500023841858,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "eae96cd9.5875e",
-        "23f6c134.a5bc8e"
+        "54125d93.5f9234",
+        "a3376785.58e1f8"
       ]
     ]
   },
   {
-    "id": "eae96cd9.5875e",
+    "id": "54125d93.5f9234",
     "type": "for",
     "name": "for each sdwan-get-request-input-param",
     "xml": "<for index='i' start='0' end='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 911.0041198730469,
-    "y": 1480.2501260638237,
-    "z": "8a925a2b.b01bd8",
+    "x": 953.0080261230469,
+    "y": 1513.2501246333122,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "34a921aa.b7fb2e"
+        "e2f37c7a.7e92e"
       ]
     ]
   },
   {
-    "id": "b45075fd.7aae48",
+    "id": "36f9a762.8e3a68",
     "type": "comment",
     "name": "Required for filling template values",
     "info": "This is done because connection-attachment is generic resource and doesn't have specific parameters",
     "comments": "",
-    "x": 933.4486236572266,
-    "y": 1514.0832867622375,
-    "z": "8a925a2b.b01bd8",
+    "x": 975.4525299072266,
+    "y": 1547.083285331726,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "933f50a4.98d0e",
+    "id": "5c5d6d04.0459d4",
     "type": "comment",
     "name": "Remove VNFC prefix",
     "info": "",
     "comments": "",
-    "x": 994.003963470459,
-    "y": 1436.6944618225098,
-    "z": "8a925a2b.b01bd8",
+    "x": 1036.007869720459,
+    "y": 1469.6944603919983,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "34a921aa.b7fb2e",
+    "id": "e2f37c7a.7e92e",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1158.0039672851562,
-    "y": 1481.6943712234497,
-    "z": "8a925a2b.b01bd8",
+    "x": 1200.0078735351562,
+    "y": 1514.6943697929382,
+    "z": "28b033ee.a901cc",
     "wires": [
       [
-        "d1aee21e.a2d11",
-        "7c70d1bd.e91da"
+        "c041009d.8b993",
+        "2dcd0480.dbffec"
       ]
     ]
   },
   {
-    "id": "f68facaa.6f9bc",
+    "id": "cfd8cad0.68f218",
     "type": "comment",
     "name": "Take the parameter names by removing prefix",
     "info": "",
     "comments": "",
-    "x": 1426.0038146972656,
-    "y": 1397.250369310379,
-    "z": "8a925a2b.b01bd8",
+    "x": 1468.0077209472656,
+    "y": 1430.2503678798676,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "d1aee21e.a2d11",
+    "id": "c041009d.8b993",
     "type": "execute",
     "name": "execute split parameterName",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$i].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1377.0384826660156,
-    "y": 1432.2294654846191,
-    "z": "8a925a2b.b01bd8",
+    "x": 1419.0423889160156,
+    "y": 1465.2294640541077,
+    "z": "28b033ee.a901cc",
     "wires": [
       []
     ]
   },
   {
-    "id": "7c70d1bd.e91da",
+    "id": "2dcd0480.dbffec",
     "type": "set",
     "name": "set parameterName",
     "xml": "<set>\n<parameter name=\"`connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$i].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",
     "comments": "",
-    "x": 1365.4829559326172,
-    "y": 1536.2294359207153,
-    "z": "8a925a2b.b01bd8",
+    "x": 1407.4868621826172,
+    "y": 1569.2294344902039,
+    "z": "28b033ee.a901cc",
     "wires": []
   },
   {
-    "id": "23f6c134.a5bc8e",
+    "id": "a3376785.58e1f8",
     "type": "call",
     "name": "call GENERIC-RESOURCE-API:sdwan-get-saved-ar-param",
     "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-saved-ar-param' mode='sync' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 952.0039672851562,
-    "y": 1554.2500658035278,
-    "z": "8a925a2b.b01bd8",
+    "x": 994.0078735351562,
+    "y": 1587.2500643730164,
+    "z": "28b033ee.a901cc",
     "wires": [
       []
     ]
index eb1c854..448098c 100644 (file)
@@ -1,20 +1,20 @@
 [
   {
-    "id": "2bdb51b9.ffb50e",
+    "id": "7430f04a.1774",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 113,
-    "y": 44,
-    "z": "e055a121.e69f6",
+    "x": 85.00390625,
+    "y": 36.999999046325684,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "d26984ef.8ad798"
+        "7176568b.6d7dc8"
       ]
     ]
   },
   {
-    "id": "d26984ef.8ad798",
+    "id": "7176568b.6d7dc8",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 325.00000381469727,
-    "y": 116.0000171661377,
-    "z": "e055a121.e69f6",
+    "x": 297.00391006469727,
+    "y": 109.00001621246338,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "a82211ff.bcbea"
+        "1281a61c.40d4ba"
       ]
     ]
   },
   {
-    "id": "a82211ff.bcbea",
+    "id": "1281a61c.40d4ba",
     "type": "method",
     "name": "sdwan-attachment-topology-operation-deactivate",
     "xml": "<method rpc='sdwan-attachment-topology-operation-deactivate' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 313.0001220703125,
-    "y": 204,
-    "z": "e055a121.e69f6",
+    "x": 285.0040283203125,
+    "y": 196.99999904632568,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "17e8ca87.b6b645"
+        "cb789dee.7e0ea"
       ]
     ]
   },
   {
-    "id": "17e8ca87.b6b645",
+    "id": "cb789dee.7e0ea",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 329.0001220703125,
-    "y": 759.0002446174622,
-    "z": "e055a121.e69f6",
+    "x": 301.0040283203125,
+    "y": 752.0002436637878,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "7ace4d9e.58fcf4",
-        "bea2d27c.d685a",
-        "be682c34.83d48",
-        "693dc7ad.b4be18",
-        "eca332.2df45cd",
-        "e0348bfe.6da088",
-        "fa3b1cd4.6bac8",
-        "666c2133.53672",
-        "41482a99.a59c34",
-        "15783ea7.8d4171",
-        "bde1b214.c3f7b",
-        "96128287.8c319",
-        "6a5b6014.c0c27",
-        "e1363ac.79d3bc8",
-        "47bcadbc.4f3554",
-        "5c4aaa91.ee5904",
-        "adeb4876.0f5318",
-        "2ec20a50.f21ce6",
-        "5ceee25e.e4656c",
-        "e3162e1d.557c8",
-        "10dfad38.ba80e3",
-        "8825a27f.2ee76"
+        "b3e4fdfd.73c98",
+        "6160e5eb.eabd7c",
+        "36f03095.f7624",
+        "8b80d6.bfb8df28",
+        "c3c64d17.8399b",
+        "79aaa9c4.4c7368",
+        "f2ac7b6a.645e98",
+        "17808c6d.fbcb64",
+        "d8dcd45a.fcb0f8",
+        "bbb611b3.fa639",
+        "3e42552f.cc2b3a",
+        "dcc926d7.4a3488",
+        "4623075d.b08748",
+        "c6cd0b89.3b6988",
+        "d4cf70d6.63ae5",
+        "96741252.7528f",
+        "b30219b.8f8bde8",
+        "7dea7f5b.a3b81",
+        "5b38ce7d.8512a",
+        "4ed101e7.e4ff7",
+        "2a2d01cd.5646fe",
+        "4b5b6f95.ae82b",
+        "63f14ad3.bfd8e4"
       ]
     ]
   },
   {
-    "id": "7ace4d9e.58fcf4",
+    "id": "b3e4fdfd.73c98",
     "type": "set",
     "name": "set tmp.ar.allotted-resource-id,etc",
     "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n",
     "comments": "",
-    "x": 725.9935607910156,
-    "y": 157.9934868812561,
-    "z": "e055a121.e69f6",
+    "x": 697.9974670410156,
+    "y": 150.9934859275818,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "3dae2c9.5fd3cd4",
+    "id": "e79f6bf1.e760c8",
     "type": "comment",
     "name": "set tmp ar-id to fetch resource from MDSAL",
     "info": "",
     "comments": "",
-    "x": 754.9538726806641,
-    "y": 122.02528285980225,
-    "z": "e055a121.e69f6",
+    "x": 726.9577789306641,
+    "y": 115.02528190612793,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "bea2d27c.d685a",
+    "id": "6160e5eb.eabd7c",
     "type": "set",
     "name": "set tmp.ar.self-link",
     "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/connection-attachment-topology/'` \" />\n\n",
     "comments": "",
-    "x": 679.9934997558594,
-    "y": 250.99349212646484,
-    "z": "e055a121.e69f6",
+    "x": 651.9974060058594,
+    "y": 243.99349117279053,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "693dc7ad.b4be18",
+    "id": "8b80d6.bfb8df28",
     "type": "execute",
     "name": "execute Properties",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n    <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",
     "comments": "",
     "outputs": 1,
-    "x": 686.2553901672363,
-    "y": 338.6602210998535,
-    "z": "e055a121.e69f6",
+    "x": 658.2592964172363,
+    "y": 331.6602201461792,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "be682c34.83d48",
+    "id": "36f03095.f7624",
     "type": "execute",
     "name": "generate allotted-resource tmp.ar-url",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 736.2554931640625,
-    "y": 425.66022205352783,
-    "z": "e055a121.e69f6",
+    "x": 708.2593994140625,
+    "y": 418.6602210998535,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "e6fef6dc.2d5ab8",
+    "id": "a79814d4.cdbed8",
     "type": "comment",
     "name": "GET connection-attachment-allotted-resource from mdsal",
     "info": "",
     "comments": "",
-    "x": 779.8085174560547,
-    "y": 517.5387678146362,
-    "z": "e055a121.e69f6",
+    "x": 751.8124237060547,
+    "y": 510.5387668609619,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "43378634.47ada8",
+    "id": "ad19a624.c947b8",
     "type": "comment",
     "name": "Used for setting output to API Handler",
     "info": "",
     "comments": "",
-    "x": 733.9935302734375,
-    "y": 217.993501663208,
-    "z": "e055a121.e69f6",
+    "x": 705.9974365234375,
+    "y": 210.9935007095337,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "2638e15d.85e40e",
+    "id": "543e0d5a.474aa4",
     "type": "comment",
     "name": "Obtain different URL, template location etc",
     "info": "For saving resource information to MDSAL & for AAI",
     "comments": "",
-    "x": 751.9934959411621,
-    "y": 303.8823823928833,
-    "z": "e055a121.e69f6",
+    "x": 723.9974021911621,
+    "y": 296.882381439209,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "9a84fa70.2209a8",
+    "id": "512154aa.b3fb3c",
     "type": "comment",
     "name": "Used to Get AR by id to MDSAL, same as self-link",
     "info": "",
     "comments": "",
-    "x": 777.9935150146484,
-    "y": 390.8823413848877,
-    "z": "e055a121.e69f6",
+    "x": 749.9974212646484,
+    "y": 383.8823404312134,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "d74c07cb.d7c4f8",
+    "id": "515ee298.e46b6c",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1220.6668281555176,
-    "y": 544.0000286102295,
-    "z": "e055a121.e69f6",
+    "x": 1192.6707344055176,
+    "y": 537.0000276565552,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "34940fae.b43b1"
+        "abb973f1.c78ab"
       ]
     ]
   },
   {
-    "id": "34940fae.b43b1",
+    "id": "abb973f1.c78ab",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1389.6668319702148,
-    "y": 542.4999294281006,
-    "z": "e055a121.e69f6",
+    "x": 1361.6707382202148,
+    "y": 535.4999284744263,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "d6a9a70b.860c78"
+        "e8fcf921.210ef8"
       ]
     ]
   },
   {
-    "id": "d6a9a70b.860c78",
+    "id": "e8fcf921.210ef8",
     "type": "switchNode",
     "name": "switch cr length",
     "xml": "<switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1562.5241012573242,
-    "y": 480.11909198760986,
-    "z": "e055a121.e69f6",
+    "x": 1534.5280075073242,
+    "y": 473.11909103393555,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "99f7b40f.a33748",
-        "e196788b.7f6f48"
+        "386d63ec.fd330c",
+        "7e042bd8.776d24"
       ]
     ]
   },
   {
-    "id": "99f7b40f.a33748",
+    "id": "386d63ec.fd330c",
     "type": "other",
     "name": "outcome 1",
     "xml": "<outcome value='1'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1799.8573455810547,
-    "y": 458.1190423965454,
-    "z": "e055a121.e69f6",
+    "x": 1771.8612518310547,
+    "y": 451.1190414428711,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "4d65a30c.1bb46c"
+        "d200a0fb.28d9a"
       ]
     ]
   },
   {
-    "id": "4d65a30c.1bb46c",
+    "id": "d200a0fb.28d9a",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic='true'>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1984.3812351226807,
-    "y": 455.02387619018555,
-    "z": "e055a121.e69f6",
+    "x": 1956.3851413726807,
+    "y": 448.02387523651123,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "c007de9b.1a8ea",
-        "5a0d997d.5410d8",
-        "58ae2d07.a93234"
+        "e41bac9c.61118",
+        "88329a50.a105f8",
+        "89950442.815df8"
       ]
     ]
   },
   {
-    "id": "89d000a2.16646",
+    "id": "d190b08a.d3505",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"Error: SOTN resource not found\" />\n    \n",
     "comments": "",
-    "x": 1908.5190773010254,
-    "y": 580.0661172866821,
-    "z": "e055a121.e69f6",
+    "x": 1880.5229835510254,
+    "y": 573.0661163330078,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "c9d998e2.a81b38",
+    "id": "24c1e070.0695f",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1212.5186309814453,
-    "y": 579.0661134719849,
-    "z": "e055a121.e69f6",
+    "x": 1184.5225372314453,
+    "y": 572.0661125183105,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "d2ec7fde.451d7"
+        "4c6403f2.3fe66c"
       ]
     ]
   },
   {
-    "id": "d2ec7fde.451d7",
+    "id": "4c6403f2.3fe66c",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1392.5185813903809,
-    "y": 579.7326641082764,
-    "z": "e055a121.e69f6",
+    "x": 1364.5224876403809,
+    "y": 572.732663154602,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "89d000a2.16646"
+        "d190b08a.d3505"
       ]
     ]
   },
   {
-    "id": "e196788b.7f6f48",
+    "id": "7e042bd8.776d24",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1788.1852989196777,
-    "y": 495.3994026184082,
-    "z": "e055a121.e69f6",
+    "x": 1760.1892051696777,
+    "y": 488.3994016647339,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "89d000a2.16646"
+        "d190b08a.d3505"
       ]
     ]
   },
   {
-    "id": "c007de9b.1a8ea",
+    "id": "e41bac9c.61118",
     "type": "set",
     "name": "set connection-attachment-ar from get",
     "xml": "<set>\n<parameter name='connection-attachment-ar.' value='$mdsal-ar.connection-attachment-allotted-resource[0].' />\n",
     "comments": "",
-    "x": 2230.444793701172,
-    "y": 415.0001058578491,
-    "z": "e055a121.e69f6",
+    "x": 2202.448699951172,
+    "y": 408.0001049041748,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "58ae2d07.a93234",
+    "id": "89950442.815df8",
     "type": "set",
     "name": "set oper-status",
     "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-ar.allotted-resource-status.rpc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
     "comments": "",
-    "x": 2163.4447898864746,
-    "y": 505.42866039276123,
-    "z": "e055a121.e69f6",
+    "x": 2135.4486961364746,
+    "y": 498.4286594390869,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "5a0d997d.5410d8",
+    "id": "88329a50.a105f8",
     "type": "switchNode",
     "name": "switch order-status",
     "xml": "<switch test='`$connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2174.444625854492,
-    "y": 459.0001096725464,
-    "z": "e055a121.e69f6",
+    "x": 2146.448532104492,
+    "y": 452.00010871887207,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "d61247de.876858",
-        "8beb5612.c27698"
+        "ca3f78a2.5bc238",
+        "968020a5.6806a"
       ]
     ]
   },
   {
-    "id": "d61247de.876858",
+    "id": "ca3f78a2.5bc238",
     "type": "outcome",
     "name": "outcome Active",
     "xml": "<outcome value='Active'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2381.044574737549,
-    "y": 449.0001096725464,
-    "z": "e055a121.e69f6",
+    "x": 2353.048480987549,
+    "y": 442.00010871887207,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "17b6e937.06f8f7"
+        "58491b2c.42f3c4"
       ]
     ]
   },
   {
-    "id": "8beb5612.c27698",
+    "id": "968020a5.6806a",
     "type": "outcome",
     "name": "outcome Other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2380.7590942382812,
-    "y": 491.4287004470825,
-    "z": "e055a121.e69f6",
+    "x": 2352.7630004882812,
+    "y": 484.4286994934082,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "d4116f87.4108f"
+        "4c9f7920.4c2598"
       ]
     ]
   },
   {
-    "id": "17b6e937.06f8f7",
+    "id": "58491b2c.42f3c4",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2533.5151290893555,
-    "y": 447.3757600784302,
-    "z": "e055a121.e69f6",
+    "x": 2505.5190353393555,
+    "y": 440.37575912475586,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "d4116f87.4108f",
+    "id": "4c9f7920.4c2598",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" \n    value=\"`'Existing connection-attachment-allotted-resource with order status of ' + $connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`\" />\n",
     "comments": "",
-    "x": 2553.6669845581055,
-    "y": 488.000111579895,
-    "z": "e055a121.e69f6",
+    "x": 2525.6708908081055,
+    "y": 481.0001106262207,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "30756753.5fa938",
+    "id": "60f55e27.f2b8e",
     "type": "call",
     "name": "call GENERIC-RESOURCE-API:sdwan-get-saved-ar-param",
     "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-saved-ar-param' mode='sync' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 941.3031158447266,
-    "y": 640.4935908317566,
-    "z": "e055a121.e69f6",
+    "x": 913.3070220947266,
+    "y": 633.4935898780823,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "eca332.2df45cd",
+    "id": "c3c64d17.8399b",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 638.3092803955078,
-    "y": 641.4999389648438,
-    "z": "e055a121.e69f6",
+    "x": 610.3131866455078,
+    "y": 634.4999380111694,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "30756753.5fa938"
+        "60f55e27.f2b8e"
       ]
     ]
   },
   {
-    "id": "804022a6.3de27",
+    "id": "4352df33.d9426",
     "type": "comment",
     "name": "GET parent-service-data from mdsal to check existence of other End point",
     "info": "",
     "comments": "",
-    "x": 820.0004425048828,
-    "y": 702.5316982269287,
-    "z": "e055a121.e69f6",
+    "x": 792.0043487548828,
+    "y": 695.5316972732544,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "de0fff38.b1af5",
+    "id": "536fbd5d.ad4c74",
     "type": "comment",
     "name": "GET connection-attachment-ar to store AR data from mdsal",
     "info": "",
     "comments": "",
-    "x": 2213.472946166992,
-    "y": 379.5039691925049,
-    "z": "e055a121.e69f6",
+    "x": 2185.476852416992,
+    "y": 372.50396823883057,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "4c932022.44bb4",
+    "id": "d407857f.3d4ed8",
     "type": "comment",
     "name": "Set source end point",
     "info": "",
     "comments": "",
-    "x": 651.9728393554688,
-    "y": 609.2540645599365,
-    "z": "e055a121.e69f6",
+    "x": 623.9767456054688,
+    "y": 602.2540636062622,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "e0348bfe.6da088",
+    "id": "79aaa9c4.4c7368",
     "type": "set",
     "name": "set tmp.ar.parent-service-instance-id",
     "xml": "<set>\n<parameter name='tmp.ar.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n\n",
     "comments": "",
-    "x": 704.9689178466797,
-    "y": 734.0002088546753,
-    "z": "e055a121.e69f6",
+    "x": 676.9728240966797,
+    "y": 727.000207901001,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "9796ef03.4b4b1",
+    "id": "a093fbeb.16ad58",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1082.9689140319824,
-    "y": 783.000207901001,
-    "z": "e055a121.e69f6",
+    "x": 1054.9728202819824,
+    "y": 776.0002069473267,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "b45d9050.17bcb"
+        "c54cab5a.e88d98"
       ]
     ]
   },
   {
-    "id": "bd6c8a09.7c4c38",
+    "id": "46b4b052.24e9d",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1074.8207168579102,
-    "y": 818.0662927627563,
-    "z": "e055a121.e69f6",
+    "x": 1046.8246231079102,
+    "y": 811.066291809082,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "69c73a80.242c64"
+        "b51504e3.dadba8"
       ]
     ]
   },
   {
-    "id": "69c73a80.242c64",
+    "id": "b51504e3.dadba8",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"Error: SOTN resource not found\" />\n    \n",
     "comments": "",
-    "x": 1249.9694023132324,
-    "y": 814.3336429595947,
-    "z": "e055a121.e69f6",
+    "x": 1221.9733085632324,
+    "y": 807.3336420059204,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "b45d9050.17bcb",
+    "id": "c54cab5a.e88d98",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1233.9689140319824,
-    "y": 781.000207901001,
-    "z": "e055a121.e69f6",
+    "x": 1205.9728202819824,
+    "y": 774.0002069473267,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "a4e20887.0b85d8",
+    "id": "bdec135a.84aa6",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 948.7308311462402,
-    "y": 1757.9527840614319,
-    "z": "e055a121.e69f6",
+    "x": 920.7347373962402,
+    "y": 1750.9527831077576,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "8d059d44.8e7a7"
+        "323e9893.b0b728"
       ]
     ]
   },
   {
-    "id": "8d059d44.8e7a7",
+    "id": "323e9893.b0b728",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"AAI failed\" />\n",
     "comments": "",
-    "x": 1110.2546653747559,
-    "y": 1802.5718301534653,
-    "z": "e055a121.e69f6",
+    "x": 1082.2585716247559,
+    "y": 1795.571829199791,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "e2a5ade9.56c27",
+    "id": "f668942a.019a38",
     "type": "failure",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 950.8260726928711,
-    "y": 1823.714726805687,
-    "z": "e055a121.e69f6",
+    "x": 922.8299789428711,
+    "y": 1816.7147258520126,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "8d059d44.8e7a7"
+        "323e9893.b0b728"
       ]
     ]
   },
   {
-    "id": "3cae81ad.c7916e",
+    "id": "24abbd36.f847b2",
     "type": "comment",
     "name": "Save Resource to AAI",
     "info": "",
     "comments": "",
-    "x": 662.7784996032715,
-    "y": 1773.3021473884583,
-    "z": "e055a121.e69f6",
+    "x": 634.7824058532715,
+    "y": 1766.302146434784,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "96128287.8c319",
+    "id": "dcc926d7.4a3488",
     "type": "set",
     "name": "set output to api handler",
     "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='connection-attachment-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $connection-attachment-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
     "comments": "",
-    "x": 677.5461959838867,
-    "y": 1694.8276286125183,
-    "z": "e055a121.e69f6",
+    "x": 649.5501022338867,
+    "y": 1687.827627658844,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "6a5b6014.c0c27",
+    "id": "4623075d.b08748",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 624.9593353271484,
-    "y": 1889.4434475898743,
-    "z": "e055a121.e69f6",
+    "x": 596.9632415771484,
+    "y": 1882.4434466362,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "bde1b214.c3f7b",
+    "id": "3e42552f.cc2b3a",
     "type": "execute",
     "name": "execute RestApiCallNode - PUT AR by id",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.sdwan-attachment.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 727.2782974243164,
-    "y": 1602.4684023857117,
-    "z": "e055a121.e69f6",
+    "x": 699.2822036743164,
+    "y": 1595.4684014320374,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "7e9cd2ab.0312bc",
-        "85c2a287.db093",
-        "b89f709c.ac27e"
+        "5966123b.c0928c",
+        "28e0d860.c64a68",
+        "4d9dd2fd.a02e7c"
       ]
     ]
   },
   {
-    "id": "7e9cd2ab.0312bc",
+    "id": "5966123b.c0928c",
     "type": "not-found",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 995.9196739196777,
-    "y": 1653.7998141273856,
-    "z": "e055a121.e69f6",
+    "x": 967.9235801696777,
+    "y": 1646.7998131737113,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "c16778e0.4835a8"
+        "1d15a206.04371e"
       ]
     ]
   },
   {
-    "id": "85c2a287.db093",
+    "id": "28e0d860.c64a68",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 986.9197235107422,
-    "y": 1622.2998398765922,
-    "z": "e055a121.e69f6",
+    "x": 958.9236297607422,
+    "y": 1615.2998389229178,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "c16778e0.4835a8"
+        "1d15a206.04371e"
       ]
     ]
   },
   {
-    "id": "b89f709c.ac27e",
+    "id": "4d9dd2fd.a02e7c",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 990.6697616577148,
-    "y": 1592.6569447517395,
-    "z": "e055a121.e69f6",
+    "x": 962.6736679077148,
+    "y": 1585.6569437980652,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "69a0963d.493b78"
+        "e1b7a04e.aa4f3"
       ]
     ]
   },
   {
-    "id": "c16778e0.4835a8",
+    "id": "1d15a206.04371e",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error updating md-sal for connection-attachment-allotted-resource\" />\n",
     "comments": "",
-    "x": 1156.6697616577148,
-    "y": 1623.04986371845,
-    "z": "e055a121.e69f6",
+    "x": 1128.6736679077148,
+    "y": 1616.0498627647758,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "69a0963d.493b78",
+    "id": "e1b7a04e.aa4f3",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1132.3257293701172,
-    "y": 1588.8491139411926,
-    "z": "e055a121.e69f6",
+    "x": 1104.3296356201172,
+    "y": 1581.8491129875183,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "fa3b1cd4.6bac8",
+    "id": "f2ac7b6a.645e98",
     "type": "set",
     "name": "set ar-data",
     "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-status.action' value=\"`$connection-attachment-topology-operation-input.request-information.request-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value=\"connection-attachment-topology-operation\" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$connection-attachment-topology-operation-input.request-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$connection-attachment-topology-operation-input.service-information.` \" />\n",
     "comments": "",
-    "x": 627.4919166564941,
-    "y": 1452.8493254184723,
-    "z": "e055a121.e69f6",
+    "x": 599.4958229064941,
+    "y": 1445.849324464798,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "41482a99.a59c34",
+    "id": "d8dcd45a.fcb0f8",
     "type": "execute",
     "name": "execute getTime",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 644.777759552002,
-    "y": 1525.4689230918884,
-    "z": "e055a121.e69f6",
+    "x": 616.781665802002,
+    "y": 1518.468922138214,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "15783ea7.8d4171",
+    "id": "bbb611b3.fa639",
     "type": "set",
     "name": "set allotted-resource-oper-status",
     "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
     "comments": "",
-    "x": 699.7648162841797,
-    "y": 1563.420060634613,
-    "z": "e055a121.e69f6",
+    "x": 671.7687225341797,
+    "y": 1556.4200596809387,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "666c2133.53672",
+    "id": "17808c6d.fbcb64",
     "type": "set",
     "name": "set model-data",
     "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` \" />",
     "comments": "",
-    "x": 641.3334579467773,
-    "y": 1492.0239758491516,
-    "z": "e055a121.e69f6",
+    "x": 613.3373641967773,
+    "y": 1485.0239748954773,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "6edf8947.4ad548",
+    "id": "83fab007.e00bd",
     "type": "comment",
     "name": "Prepare data for allotted-resource addition to MDSAL",
     "info": "This will add to allotted-resource which is present inside service.",
     "comments": "",
-    "x": 750.6668891906738,
-    "y": 1408.0238506793976,
-    "z": "e055a121.e69f6",
+    "x": 722.6707954406738,
+    "y": 1401.0238497257233,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "2f4fb378.be435c",
+    "id": "ce9eef3f.571d2",
     "type": "comment",
     "name": "Add to allotted-resources in mdsal",
     "info": "",
     "comments": "",
-    "x": 692.2467155456543,
-    "y": 1375.4371523857117,
-    "z": "e055a121.e69f6",
+    "x": 664.2506217956543,
+    "y": 1368.4371514320374,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "e440d873.f4a568",
+    "id": "63f14ad3.bfd8e4",
     "type": "update",
     "name": "update AAI allotted-resource",
     "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"selflink\" value=\"`$tmp.ar.self-link`\" />\n\t<parameter name=\"model-invariant-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`\" />\n\t<parameter name=\"model-version-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`\" />\n\t<parameter name=\"operational-status\" value=\"PendingDelete\" />\n",
     "comments": "",
     "outputs": 1,
-    "x": 689.2227783203125,
-    "y": 1810.7542901039124,
-    "z": "e055a121.e69f6",
+    "x": 661.2266845703125,
+    "y": 1803.754289150238,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "a4e20887.0b85d8",
-        "e2a5ade9.56c27"
+        "bdec135a.84aa6",
+        "f668942a.019a38"
       ]
     ]
   },
   {
-    "id": "e1363ac.79d3bc8",
+    "id": "c6cd0b89.3b6988",
     "type": "execute",
     "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 853.3339538574219,
-    "y": 560.4999494552612,
-    "z": "e055a121.e69f6",
+    "x": 825.3378601074219,
+    "y": 553.4999485015869,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "d74c07cb.d7c4f8",
-        "c9d998e2.a81b38"
+        "515ee298.e46b6c",
+        "24c1e070.0695f"
       ]
     ]
   },
   {
-    "id": "47bcadbc.4f3554",
+    "id": "d4cf70d6.63ae5",
     "type": "execute",
     "name": "get parent-service-data tmp.ar-url-psd",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-psd\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 707.0001983642578,
-    "y": 769.0002107620239,
-    "z": "e055a121.e69f6",
+    "x": 679.0041046142578,
+    "y": 762.0002098083496,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "5c4aaa91.ee5904",
+    "id": "96741252.7528f",
     "type": "execute",
     "name": "execute RestApiCallNode - get-resource parent service data",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-psd\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 774.0001602172852,
-    "y": 804.0002946853638,
-    "z": "e055a121.e69f6",
+    "x": 746.0040664672852,
+    "y": 797.0002937316895,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "9796ef03.4b4b1",
-        "bd6c8a09.7c4c38"
+        "a093fbeb.16ad58",
+        "46b4b052.24e9d"
       ]
     ]
   },
   {
-    "id": "adaeb2d3.7f8c4",
+    "id": "490fd156.3cc2e",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2594.812660217285,
-    "y": 821.329451084137,
-    "z": "e055a121.e69f6",
+    "x": 2566.816566467285,
+    "y": 814.3294501304626,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "a3d10a9a.3a1df8"
+        "88745fb7.28e43"
       ]
     ]
   },
   {
-    "id": "cddd16fb.abe6b8",
+    "id": "edb86366.daca5",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2628.66414642334,
-    "y": 767.3954176902771,
-    "z": "e055a121.e69f6",
+    "x": 2600.66805267334,
+    "y": 760.3954167366028,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "af15096f.71acd8"
+        "ae1d17f2.d02858"
       ]
     ]
   },
   {
-    "id": "fee7243c.735b08",
+    "id": "92d891d3.4ab0e",
     "type": "for",
     "name": "for arvidx.. mdsal-sd.service-data.vnfs.vnf_length[]",
     "xml": "<for index='arvidx' start='0' end='`$mdsal-sd.service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 2113.81356048584,
-    "y": 1648.9966716766357,
-    "z": "e055a121.e69f6",
+    "x": 2085.81746673584,
+    "y": 1641.9966707229614,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "6c84c38f.13baec"
+        "71080db2.ebc5d4"
       ]
     ]
   },
   {
-    "id": "6c84c38f.13baec",
+    "id": "71080db2.ebc5d4",
     "type": "block",
     "name": "block atmoic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2389.4801330566406,
-    "y": 1649.9967045783997,
-    "z": "e055a121.e69f6",
+    "x": 2361.4840393066406,
+    "y": 1642.9967036247253,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "fc4d2ad5.d7c638"
+        "a5010038.a8cca"
       ]
     ]
   },
   {
-    "id": "fc4d2ad5.d7c638",
+    "id": "a5010038.a8cca",
     "type": "switchNode",
     "name": "switch ActivateSiteInstance",
-    "xml": "<switch test=\"`$mdsal-parentsd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == ActivateSiteInstance`\">\n    \n    \n\n",
+    "xml": "<switch test=\"`$mdsal-sd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == ActivateSiteInstance`\">\n    \n    \n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2626.34383392334,
-    "y": 1654.1946682929993,
-    "z": "e055a121.e69f6",
+    "x": 2598.34774017334,
+    "y": 1647.194667339325,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "3d2b3845.2b40b8"
+        "78d61896.379bb8"
       ]
     ]
   },
   {
-    "id": "3d2b3845.2b40b8",
+    "id": "78d61896.379bb8",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2835.343349456787,
-    "y": 1654.194821357727,
-    "z": "e055a121.e69f6",
+    "x": 2807.347255706787,
+    "y": 1647.1948204040527,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "1ec9b1bd.90608e"
+        "bfec68b.915a698"
       ]
     ]
   },
   {
-    "id": "c0ef9502.2ffda8",
+    "id": "9280788a.1a5978",
     "type": "set",
     "name": "set tmp.sitevidx ",
     "xml": "<set>\n<parameter name='tmp.sitevidx' value='`$arvidx`' />\n\n",
     "comments": "",
-    "x": 2232.3442993164062,
-    "y": 1758.1952500343323,
-    "z": "e055a121.e69f6",
+    "x": 2204.3482055664062,
+    "y": 1751.195249080658,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "faa3fd1c.58594",
+    "id": "a8aa86a8.764d68",
     "type": "set",
     "name": "set prop.ar-parent-service-instance-id",
     "xml": "<set>\n<parameter name='prop.ar-parent-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id`' />\n",
     "comments": "",
-    "x": 2148.8124618530273,
-    "y": 1071.9961004257202,
-    "z": "e055a121.e69f6",
+    "x": 2120.8163681030273,
+    "y": 1064.996099472046,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "798afd86.2541c4",
+    "id": "9f1816e2.642ea8",
     "type": "for",
     "name": "for loop aridx - Get role from allotted resource",
     "xml": "<for index=\"aridx\" start=\"0\" end=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 2174.812255859375,
-    "y": 1020.4959716796875,
-    "z": "e055a121.e69f6",
+    "x": 2146.816162109375,
+    "y": 1013.4959707260132,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "20bb02be.0259ee"
+        "9c8b4e3c.7c8c5"
       ]
     ]
   },
   {
-    "id": "20bb02be.0259ee",
+    "id": "9c8b4e3c.7c8c5",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2429.81258392334,
-    "y": 1017.496431350708,
-    "z": "e055a121.e69f6",
+    "x": 2401.81649017334,
+    "y": 1010.4964303970337,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "245bf6ff.3e669a",
-        "c47b810c.d3dc3"
+        "30449575.75463a",
+        "92ec0f10.dba05"
       ]
     ]
   },
   {
-    "id": "245bf6ff.3e669a",
+    "id": "30449575.75463a",
     "type": "switchNode",
     "name": "switch Role",
     "xml": "<switch test=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'Role'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2559.8124046325684,
-    "y": 989.4963684082031,
-    "z": "e055a121.e69f6",
+    "x": 2531.8163108825684,
+    "y": 982.4963674545288,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "2a2eadb0.1dbad2"
+        "b4910f3d.0db62"
       ]
     ]
   },
   {
-    "id": "2a2eadb0.1dbad2",
+    "id": "b4910f3d.0db62",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2700.8127365112305,
-    "y": 988.4963674545288,
-    "z": "e055a121.e69f6",
+    "x": 2672.8166427612305,
+    "y": 981.4963665008545,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "991f431c.722fb"
+        "367dfe9f.4b0012"
       ]
     ]
   },
   {
-    "id": "991f431c.722fb",
+    "id": "367dfe9f.4b0012",
     "type": "set",
     "name": "set prop.role",
     "xml": "<set>\n<parameter name='prop.role' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />\n",
     "comments": "",
-    "x": 2866.8134002685547,
-    "y": 983.0962705612183,
-    "z": "e055a121.e69f6",
+    "x": 2838.8173065185547,
+    "y": 976.096269607544,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "f74ee755.f16cf8",
+    "id": "1009f0e9.e8787f",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2446.8130836486816,
-    "y": 1166.9963779449463,
-    "z": "e055a121.e69f6",
+    "x": 2418.8169898986816,
+    "y": 1159.996376991272,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "cbc38822.1755a8"
+        "38660dd.8ae9ef2"
       ]
     ]
   },
   {
-    "id": "32c3c46f.3bc2bc",
+    "id": "c9a9abe5.0b0758",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2440.664825439453,
-    "y": 1123.0624151229858,
-    "z": "e055a121.e69f6",
+    "x": 2412.668731689453,
+    "y": 1116.0624141693115,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "7c65d2f6.31dcec"
+        "faec6a4d.0cfc28"
       ]
     ]
   },
   {
-    "id": "af15096f.71acd8",
+    "id": "ae1d17f2.d02858",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2754.812271118164,
-    "y": 764.4958510398865,
-    "z": "e055a121.e69f6",
+    "x": 2726.816177368164,
+    "y": 757.4958500862122,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "a3d10a9a.3a1df8",
+    "id": "88745fb7.28e43",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1884.3121337890625,
-    "y": 1038.4959716796875,
-    "z": "e055a121.e69f6",
+    "x": 1856.3160400390625,
+    "y": 1031.4959707260132,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "798afd86.2541c4",
-        "faa3fd1c.58594",
-        "e9b06c97.acbe5",
-        "6b58bb8e.b3cd84"
+        "9f1816e2.642ea8",
+        "a8aa86a8.764d68",
+        "56d62d96.7f8ce4",
+        "b96757af.5cca38"
       ]
     ]
   },
   {
-    "id": "7c65d2f6.31dcec",
+    "id": "faec6a4d.0cfc28",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2570.3129444122314,
-    "y": 1116.496335029602,
-    "z": "e055a121.e69f6",
+    "x": 2542.3168506622314,
+    "y": 1109.4963340759277,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "cbc38822.1755a8",
+    "id": "38660dd.8ae9ef2",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1960.3124237060547,
-    "y": 1243.495985031128,
-    "z": "e055a121.e69f6",
+    "x": 1932.3163299560547,
+    "y": 1236.4959840774536,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "d2493073.c1028"
+        "c768cf9a.62862"
       ]
     ]
   },
   {
-    "id": "2180b01e.7e4f6",
+    "id": "4edc1d8f.0a1944",
     "type": "for",
     "name": "for loop siteidx - Get site ID from servicedata",
-    "xml": "<for index=\"siteidx\" start=\"0\" end=\"`$mdsal-parentsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "xml": "<for index=\"siteidx\" start=\"0\" end=\"`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 2324.3151473999023,
-    "y": 1799.4970078468323,
-    "z": "e055a121.e69f6",
+    "x": 2296.3190536499023,
+    "y": 1792.497006893158,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "af63b1cd.e76ae"
+        "3d77f67c.b5ecea"
       ]
     ]
   },
   {
-    "id": "e04f34e4.013728",
+    "id": "ead36ab7.282438",
     "type": "switchNode",
     "name": "switch siteId",
-    "xml": "<switch test=\"`$mdsal-parentsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`\">\n",
+    "xml": "<switch test=\"`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2396.3171310424805,
-    "y": 1867.4979872703552,
-    "z": "e055a121.e69f6",
+    "x": 2368.3210372924805,
+    "y": 1860.497986316681,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "f8f1f3f8.78972"
+        "d924a586.673c18"
       ]
     ]
   },
   {
-    "id": "b95ce81a.c946a8",
+    "id": "321bf129.18913e",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2250.8154067993164,
-    "y": 1940.99702501297,
-    "z": "e055a121.e69f6",
+    "x": 2222.8193130493164,
+    "y": 1933.9970240592957,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "fb38a029.7518f",
-        "4ede6e05.800f6"
+        "875c4bea.660358",
+        "ecb79aa0.650108",
+        "f8b5c142.e5e42"
       ]
     ]
   },
   {
-    "id": "e3162e1d.557c8",
+    "id": "4ed101e7.e4ff7",
     "type": "execute",
     "name": "execute RestApiCallNode delete vpn topology",
-    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn-tolopogy.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn1Id + '/topology'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn-topology.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn1Id + '/topology'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 725.8129196166992,
-    "y": 1200.4966821670532,
-    "z": "e055a121.e69f6",
+    "x": 697.8168258666992,
+    "y": 1193.496681213379,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "512bde3d.9ae1f",
-        "b1a2ea7d.7f7bd8"
+        "79fecdbb.444414",
+        "8f4a1544.240ce8"
       ]
     ]
   },
   {
-    "id": "512bde3d.9ae1f",
+    "id": "79fecdbb.444414",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 980.812686920166,
-    "y": 1216.4966821670532,
-    "z": "e055a121.e69f6",
+    "x": 952.816593170166,
+    "y": 1209.496681213379,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "94f6bfc2.443d3"
+        "1ef5ce22.99b2f2"
       ]
     ]
   },
   {
-    "id": "94f6bfc2.443d3",
+    "id": "1ef5ce22.99b2f2",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "comments": "",
     "outputs": 1,
-    "x": 1150.8126258850098,
-    "y": 1219.4966821670532,
-    "z": "e055a121.e69f6",
+    "x": 1122.8165321350098,
+    "y": 1212.496681213379,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "8511117c.800f2",
+    "id": "13d95323.743e4d",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",
     "comments": "",
-    "x": 1150.8127479553223,
-    "y": 1175.4966821670532,
-    "z": "e055a121.e69f6",
+    "x": 1122.8166542053223,
+    "y": 1168.496681213379,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "b1a2ea7d.7f7bd8",
+    "id": "8f4a1544.240ce8",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 983.8126258850098,
-    "y": 1175.4966821670532,
-    "z": "e055a121.e69f6",
+    "x": 955.8165321350098,
+    "y": 1168.496681213379,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "8511117c.800f2"
+        "13d95323.743e4d"
       ]
     ]
   },
   {
-    "id": "7731dc6f.5a7d24",
+    "id": "9f45ce4d.1731c",
     "type": "set",
     "name": "set controller data",
     "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
     "comments": "",
-    "x": 1131.3796367645264,
-    "y": 972.1728582382202,
-    "z": "e055a121.e69f6",
+    "x": 1103.3835430145264,
+    "y": 965.1728572845459,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "8825a27f.2ee76",
+    "id": "4b5b6f95.ae82b",
     "type": "get-resource",
     "name": "get-resource esr-thirdparty-sdnc",
-    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 700.8793792724609,
-    "y": 1023.1732087135315,
-    "z": "e055a121.e69f6",
+    "x": 672.8832855224609,
+    "y": 1016.1732077598572,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "2e6a47b6.7b6de8",
-        "9dc29fcc.585cf",
-        "49b46c59.711bd4"
+        "9379b94d.ebf738",
+        "85618b89.4df498",
+        "d4faaa3e.0874d8"
       ]
     ]
   },
   {
-    "id": "2e6a47b6.7b6de8",
+    "id": "9379b94d.ebf738",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 959.8796710968018,
-    "y": 978.1728420257568,
-    "z": "e055a121.e69f6",
+    "x": 931.8835773468018,
+    "y": 971.1728410720825,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "7731dc6f.5a7d24"
+        "9f45ce4d.1731c"
       ]
     ]
   },
   {
-    "id": "9dc29fcc.585cf",
+    "id": "85618b89.4df498",
     "type": "not-found",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 956.3703880310059,
-    "y": 1016.7469387054443,
-    "z": "e055a121.e69f6",
+    "x": 928.3742942810059,
+    "y": 1009.74693775177,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "8fde510d.f3ff3"
+        "ef8f714d.57ad1"
       ]
     ]
   },
   {
-    "id": "49b46c59.711bd4",
+    "id": "d4faaa3e.0874d8",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 951.7033958435059,
-    "y": 1058.0802516937256,
-    "z": "e055a121.e69f6",
+    "x": 923.7073020935059,
+    "y": 1051.0802507400513,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "9ea97502.11aad8"
+        "7ed2ad4f.8bf614"
       ]
     ]
   },
   {
-    "id": "8fde510d.f3ff3",
+    "id": "ef8f714d.57ad1",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
     "comments": "",
-    "x": 1106.9417037963867,
-    "y": 1011.0326910018921,
-    "z": "e055a121.e69f6",
+    "x": 1078.9456100463867,
+    "y": 1004.0326900482178,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "9ea97502.11aad8",
+    "id": "7ed2ad4f.8bf614",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
     "comments": "",
-    "x": 1113.4758567810059,
-    "y": 1059.5194606781006,
-    "z": "e055a121.e69f6",
+    "x": 1085.4797630310059,
+    "y": 1052.5194597244263,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "d2493073.c1028",
+    "id": "c768cf9a.62862",
     "type": "for",
     "name": "for pnidx.. mdsal-psd.service-data.networks.network_length[]",
     "xml": "<for index='pnidx' start='0' end='`$mdsal-parentsd.service-data.networks.network_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 2285.311996459961,
-    "y": 1242.9957127571106,
-    "z": "e055a121.e69f6",
+    "x": 2257.315902709961,
+    "y": 1235.9957118034363,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "220869b3.8ab4c6"
+        "e252e8ae.c32088"
       ]
     ]
   },
   {
-    "id": "220869b3.8ab4c6",
+    "id": "e252e8ae.c32088",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1963.9790878295898,
-    "y": 1333.995548248291,
-    "z": "e055a121.e69f6",
+    "x": 1935.9829940795898,
+    "y": 1326.9955472946167,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "542e96e2.bce748"
+        "14486987.b85df6"
       ]
     ]
   },
   {
-    "id": "542e96e2.bce748",
+    "id": "14486987.b85df6",
     "type": "switchNode",
     "name": "switch ActivateSDWANConnectivityInstance",
     "xml": "<switch test=\"`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.request-information.request-action == 'ActivateSDWANConnectivityInstance'`\">\n    \n    \n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2208.979820251465,
-    "y": 1335.9959144592285,
-    "z": "e055a121.e69f6",
+    "x": 2180.983726501465,
+    "y": 1328.9959135055542,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "6a416d6d.a241f4"
+        "1a69042b.c0872c"
       ]
     ]
   },
   {
-    "id": "6a416d6d.a241f4",
+    "id": "1a69042b.c0872c",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2465.9793128967285,
-    "y": 1334.9960446357727,
-    "z": "e055a121.e69f6",
+    "x": 2437.9832191467285,
+    "y": 1327.9960436820984,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "fe572e69.46e77"
+        "ecc75ce5.52a22"
       ]
     ]
   },
   {
-    "id": "fd8cdc4f.58f91",
+    "id": "693abfa.fed9d4",
     "type": "for",
     "name": "for loop paramidx - Get topology from servicedata",
     "xml": "<for index=\"paramidx\" start=\"0\" end=\"`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 2267.9799995422363,
-    "y": 1424.995632648468,
-    "z": "e055a121.e69f6",
+    "x": 2239.9839057922363,
+    "y": 1417.9956316947937,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "21109ad6.0bc416"
+        "3b22a756.98c7f8"
       ]
     ]
   },
   {
-    "id": "21109ad6.0bc416",
+    "id": "3b22a756.98c7f8",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2533.979688644409,
-    "y": 1421.9959559440613,
-    "z": "e055a121.e69f6",
+    "x": 2505.983594894409,
+    "y": 1414.995954990387,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "c6ab4f3c.02f18",
-        "dd125781.58e528"
+        "dccdc0aa.2bb7b",
+        "b18f2a38.d85ae8"
       ]
     ]
   },
   {
-    "id": "c6ab4f3c.02f18",
+    "id": "dccdc0aa.2bb7b",
     "type": "switchNode",
     "name": "switch topology",
     "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'topology'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2704.98002243042,
-    "y": 1390.9954657554626,
-    "z": "e055a121.e69f6",
+    "x": 2676.98392868042,
+    "y": 1383.9954648017883,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "ec8b6683.dafbe8"
+        "e0213c77.0f4ca"
       ]
     ]
   },
   {
-    "id": "ec8b6683.dafbe8",
+    "id": "e0213c77.0f4ca",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2856.9800128936768,
-    "y": 1392.9954962730408,
-    "z": "e055a121.e69f6",
+    "x": 2828.9839191436768,
+    "y": 1385.9954953193665,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "8651aac5.31b1a8"
+        "71cd0898.67eff8"
       ]
     ]
   },
   {
-    "id": "8651aac5.31b1a8",
+    "id": "71cd0898.67eff8",
     "type": "set",
     "name": "set topology",
     "xml": "<set>\n<parameter name='prop.topology' value='`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
     "comments": "",
-    "x": 3000.9800243377686,
-    "y": 1392.5954308509827,
-    "z": "e055a121.e69f6",
+    "x": 2972.9839305877686,
+    "y": 1385.5954298973083,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "dd125781.58e528",
+    "id": "b18f2a38.d85ae8",
     "type": "switchNode",
     "name": "switch vpnId",
-    "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'vpnId'`\">\n",
+    "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'vpn-id'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2696.645746231079,
-    "y": 1433.328447818756,
-    "z": "e055a121.e69f6",
+    "x": 2668.649652481079,
+    "y": 1426.3284468650818,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "d2a6c128.0e306"
+        "5ef41a40.56fe94"
       ]
     ]
   },
   {
-    "id": "d2a6c128.0e306",
+    "id": "5ef41a40.56fe94",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2848.645736694336,
-    "y": 1435.3284783363342,
-    "z": "e055a121.e69f6",
+    "x": 2820.649642944336,
+    "y": 1428.32847738266,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "88095b1a.e451a8"
+        "25d7449c.78b97c"
       ]
     ]
   },
   {
-    "id": "88095b1a.e451a8",
+    "id": "25d7449c.78b97c",
     "type": "set",
     "name": "set prop.vpn1Id",
     "xml": "<set>\n<parameter name='prop.vpn1Id' value='`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
     "comments": "",
-    "x": 2992.6457481384277,
-    "y": 1434.9284129142761,
-    "z": "e055a121.e69f6",
+    "x": 2964.6496543884277,
+    "y": 1427.9284119606018,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "10dfad38.ba80e3",
+    "id": "2a2d01cd.5646fe",
     "type": "execute",
     "name": "execute RestApiCallNode delete vpn ",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 698.8125915527344,
-    "y": 1311.9966473579407,
-    "z": "e055a121.e69f6",
+    "x": 670.8164978027344,
+    "y": 1304.9966464042664,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "dbba5b2e.06b178",
-        "92b8b7a2.551998"
+        "c4c9f687.9e7588",
+        "802fa182.99b1f"
       ]
     ]
   },
   {
-    "id": "dbba5b2e.06b178",
+    "id": "c4c9f687.9e7588",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 931.8126697540283,
-    "y": 1336.9966464042664,
-    "z": "e055a121.e69f6",
+    "x": 903.8165760040283,
+    "y": 1329.996645450592,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "647fdeef.e91dd"
+        "1b0d22fd.e671fd"
       ]
     ]
   },
   {
-    "id": "647fdeef.e91dd",
+    "id": "1b0d22fd.e671fd",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "comments": "",
     "outputs": 1,
-    "x": 1101.812608718872,
-    "y": 1339.9966464042664,
-    "z": "e055a121.e69f6",
+    "x": 1073.816514968872,
+    "y": 1332.996645450592,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "487a6881.62d628",
+    "id": "588dc5fe.3853dc",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",
     "comments": "",
-    "x": 1101.8127307891846,
-    "y": 1295.9966464042664,
-    "z": "e055a121.e69f6",
+    "x": 1073.8166370391846,
+    "y": 1288.996645450592,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "92b8b7a2.551998",
+    "id": "802fa182.99b1f",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 934.8126087188721,
-    "y": 1295.9966464042664,
-    "z": "e055a121.e69f6",
+    "x": 906.8165149688721,
+    "y": 1288.996645450592,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "487a6881.62d628"
+        "588dc5fe.3853dc"
       ]
     ]
   },
   {
-    "id": "d0aa490b.36da18",
+    "id": "67ff2f7e.84dea",
     "type": "set",
     "name": "set prop.name",
     "xml": "<set>\n<parameter name='prop.name' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />\n",
     "comments": "",
-    "x": 2914.8124046325684,
-    "y": 1035.9959411621094,
-    "z": "e055a121.e69f6",
+    "x": 2886.8163108825684,
+    "y": 1028.995940208435,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "c47b810c.d3dc3",
+    "id": "92ec0f10.dba05",
     "type": "switchNode",
     "name": "switch sdwanVpnName",
     "xml": "<switch test=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'sdwanVpnName'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2595.312244415283,
-    "y": 1038.9959335327148,
-    "z": "e055a121.e69f6",
+    "x": 2567.316150665283,
+    "y": 1031.9959325790405,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "947974c8.04d658"
+        "da5b9464.fd80d8"
       ]
     ]
   },
   {
-    "id": "947974c8.04d658",
+    "id": "da5b9464.fd80d8",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2766.3124046325684,
-    "y": 1037.9960021972656,
-    "z": "e055a121.e69f6",
+    "x": 2738.3163108825684,
+    "y": 1030.9960012435913,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "d0aa490b.36da18"
+        "67ff2f7e.84dea"
       ]
     ]
   },
   {
-    "id": "ddcd4395.ffc5",
+    "id": "1f17ba6f.07fd86",
     "type": "set",
     "name": "set prop.ar.provided-allotted-resource-id",
     "xml": "<set>\n<parameter name='prop.ar.provided-allotted-resource-id' value='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id`' />\n\n\n",
     "comments": "",
-    "x": 2080.81201171875,
-    "y": 779.9960656166077,
-    "z": "e055a121.e69f6",
+    "x": 2052.81591796875,
+    "y": 772.9960646629333,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "de8fd68.62a4428",
+    "id": "5609c5e0.866b1c",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1258.8424682617188,
-    "y": 887.1932353973389,
-    "z": "e055a121.e69f6",
+    "x": 1230.8463745117188,
+    "y": 880.1932344436646,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "1e72ef49.46e8b1"
+        "b59d7969.b1f2f8"
       ]
     ]
   },
   {
-    "id": "25ee3acf.45d7b6",
+    "id": "cd36d7b2.2df868",
     "type": "execute",
     "name": "generate tmp.ar-url-connection url",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar.provided-allotted-resource-id`\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2065.32967376709,
-    "y": 813.329541683197,
-    "z": "e055a121.e69f6",
+    "x": 2037.3335800170898,
+    "y": 806.3295407295227,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "e392cace.793438",
+    "id": "f53ba2f7.ad562",
     "type": "execute",
     "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-providedAr\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2205.329303741455,
-    "y": 848.9958329200745,
-    "z": "e055a121.e69f6",
+    "x": 2177.333209991455,
+    "y": 841.9958319664001,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "cddd16fb.abe6b8",
-        "adaeb2d3.7f8c4"
+        "edb86366.daca5",
+        "490fd156.3cc2e"
       ]
     ]
   },
   {
-    "id": "e9b06c97.acbe5",
+    "id": "56d62d96.7f8ce4",
     "type": "execute",
     "name": "execute RestApiCallNode - get parent service data",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-parentsd\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2180.9965438842773,
-    "y": 1141.9958896636963,
-    "z": "e055a121.e69f6",
+    "x": 2153.0004501342773,
+    "y": 1134.995888710022,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "f74ee755.f16cf8",
-        "32c3c46f.3bc2bc"
+        "1009f0e9.e8787f",
+        "c9a9abe5.0b0758"
       ]
     ]
   },
   {
-    "id": "fe572e69.46e77",
+    "id": "ecc75ce5.52a22",
     "type": "block",
     "name": "block atmoic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1925.329963684082,
-    "y": 1431.6630954742432,
-    "z": "e055a121.e69f6",
+    "x": 1897.333869934082,
+    "y": 1424.6630945205688,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "fd8cdc4f.58f91",
-        "1d60ce05.e0ad92",
-        "11102f6.31d23d1",
-        "a4fa1e7f.2461f"
+        "693abfa.fed9d4",
+        "90dd080.179f4f8",
+        "74e88748.645e58",
+        "a1a950eb.a0193"
       ]
     ]
   },
   {
-    "id": "fb38a029.7518f",
+    "id": "875c4bea.660358",
     "type": "set",
     "name": "set prop.attach.siteId",
-    "xml": "<set>\n<parameter name='prop.attach.siteId' value='`$mdsal-parentsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\n\n",
+    "xml": "<set>\n<parameter name='prop.attach.siteId' value='`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\n\n",
     "comments": "",
-    "x": 2516.998279571533,
-    "y": 1922.663851261139,
-    "z": "e055a121.e69f6",
+    "x": 2489.002185821533,
+    "y": 1915.6638503074646,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "f8f1f3f8.78972",
+    "id": "d924a586.673c18",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2536.99853515625,
-    "y": 1867.6636776924133,
-    "z": "e055a121.e69f6",
+    "x": 2509.00244140625,
+    "y": 1860.663676738739,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "b95ce81a.c946a8"
+        "321bf129.18913e"
       ]
     ]
   },
   {
-    "id": "1ec9b1bd.90608e",
+    "id": "bfec68b.915a698",
     "type": "block",
     "name": "block atmoic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2029.664421081543,
-    "y": 1753.3301882743835,
-    "z": "e055a121.e69f6",
+    "x": 2001.668327331543,
+    "y": 1746.3301873207092,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "2180b01e.7e4f6",
-        "c0ef9502.2ffda8"
+        "4edc1d8f.0a1944",
+        "9280788a.1a5978"
       ]
     ]
   },
   {
-    "id": "adeb4876.0f5318",
+    "id": "b30219b.8f8bde8",
     "type": "for",
     "name": "for pidx..mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[]",
     "xml": "<for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 866.181224822998,
-    "y": 922.635835647583,
-    "z": "e055a121.e69f6",
+    "x": 838.185131072998,
+    "y": 915.6358346939087,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "de8fd68.62a4428"
+        "5609c5e0.866b1c"
       ]
     ]
   },
   {
-    "id": "af63b1cd.e76ae",
+    "id": "3d77f67c.b5ecea",
     "type": "block",
     "name": "block atmoic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2241.664779663086,
-    "y": 1864.0008358955383,
-    "z": "e055a121.e69f6",
+    "x": 2213.668685913086,
+    "y": 1857.000834941864,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "e04f34e4.013728"
+        "ead36ab7.282438"
       ]
     ]
   },
   {
-    "id": "2ec20a50.f21ce6",
+    "id": "7dea7f5b.a3b81",
     "type": "set",
     "name": "set prop.siteAttachement_length=0",
     "xml": "<set>\n<parameter name='prop.siteAttachements_length' value='0' />\n<parameter name='prop.siteIds_length' value='0' />\n\n\n\n",
     "comments": "",
-    "x": 712,
-    "y": 865.5311913490295,
-    "z": "e055a121.e69f6",
+    "x": 684.00390625,
+    "y": 858.5311903953552,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "4ede6e05.800f6",
+    "id": "ecb79aa0.650108",
     "type": "set",
     "name": "Add sites to list and update length",
-    "xml": "<set>\n<parameter name='prop.siteIds[$prop.siteIds_length]' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteIds_length' value='`$prop.siteIds_length + 1`' />\n\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].siteId' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles[0]' value='`$prop.role`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles_length' value='1' />\n<parameter name='prop.siteAttachements_length' value='`$prop.siteAttachements_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n",
+    "xml": "<set>\n<parameter name='prop.siteIds[$prop.siteIds_length]' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteIds_length' value='`$prop.siteIds_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n",
     "comments": "",
-    "x": 2544.502113342285,
-    "y": 1967.5316562652588,
-    "z": "e055a121.e69f6",
+    "x": 2516.506019592285,
+    "y": 1960.5316553115845,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "6b58bb8e.b3cd84",
+    "id": "b96757af.5cca38",
     "type": "execute",
     "name": "generate prop.ar-parent-service-instance-id",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>      \n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar-parent-service-instance-id`\"/>\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2165.500144958496,
-    "y": 1104.5314102172852,
-    "z": "e055a121.e69f6",
+    "x": 2137.504051208496,
+    "y": 1097.5314092636108,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "1d60ce05.e0ad92",
+    "id": "90dd080.179f4f8",
     "type": "set",
     "name": "set prop.ar-service-instance-id",
-    "xml": "<set>\n<parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.service-information.service-instance-id`' />\n",
+    "xml": "<set>\n<parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id`' />\n",
     "comments": "",
-    "x": 2198.5005645751953,
-    "y": 1493.531328201294,
-    "z": "e055a121.e69f6",
+    "x": 2170.5044708251953,
+    "y": 1486.5313272476196,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "11102f6.31d23d1",
+    "id": "74e88748.645e58",
     "type": "execute",
     "name": "generate prop.ar-service-instance-id",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>      \n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar-service-instance-id`\"/>\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2223.833023071289,
-    "y": 1526.4096240997314,
-    "z": "e055a121.e69f6",
+    "x": 2195.836929321289,
+    "y": 1519.4096231460571,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "a4fa1e7f.2461f",
+    "id": "a1a950eb.a0193",
     "type": "execute",
     "name": "execute RestApiCallNode - get-resource service data",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-sd\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2274.8331451416016,
-    "y": 1563.4094429016113,
-    "z": "e055a121.e69f6",
+    "x": 2246.8370513916016,
+    "y": 1556.409441947937,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "6e57063a.0010c8",
-        "6eeded55.346254"
+        "d085c605.a64ce8",
+        "872e1cc1.fb142"
       ]
     ]
   },
   {
-    "id": "6eeded55.346254",
+    "id": "872e1cc1.fb142",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2553.5002098083496,
-    "y": 1559.5311546325684,
-    "z": "e055a121.e69f6",
+    "x": 2525.5041160583496,
+    "y": 1552.531153678894,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "4470f1a5.f3f5a"
+        "eb1435b3.407188"
       ]
     ]
   },
   {
-    "id": "6e57063a.0010c8",
+    "id": "d085c605.a64ce8",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2551.3525390625,
-    "y": 1520.597282409668,
-    "z": "e055a121.e69f6",
+    "x": 2523.3564453125,
+    "y": 1513.5972814559937,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "85643aef.3b34a8"
+        "6579eeb9.4ad43"
       ]
     ]
   },
   {
-    "id": "85643aef.3b34a8",
+    "id": "6579eeb9.4ad43",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2681.000732421875,
-    "y": 1514.0312423706055,
-    "z": "e055a121.e69f6",
+    "x": 2653.004638671875,
+    "y": 1507.0312414169312,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
   },
   {
-    "id": "4470f1a5.f3f5a",
+    "id": "eb1435b3.407188",
     "type": "block",
     "name": "block atmoic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2702.501106262207,
-    "y": 1560.5313396453857,
-    "z": "e055a121.e69f6",
+    "x": 2674.505012512207,
+    "y": 1553.5313386917114,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "fee7243c.735b08"
+        "92d891d3.4ab0e"
       ]
     ]
   },
   {
-    "id": "1e72ef49.46e8b1",
+    "id": "b59d7969.b1f2f8",
     "type": "switchNode",
     "name": "switch allotted resource ID match",
     "xml": "<switch test=\"`$prop.ar.provided-allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1482.500114440918,
-    "y": 884.0312638282776,
-    "z": "e055a121.e69f6",
+    "x": 1454.504020690918,
+    "y": 877.0312628746033,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "e324a45a.91d0f8"
+        "d35d9e14.f135e"
       ]
     ]
   },
   {
-    "id": "e324a45a.91d0f8",
+    "id": "d35d9e14.f135e",
     "type": "outcomeFalse",
     "name": "false",
     "xml": "<outcome value='false'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1696.5001792907715,
-    "y": 815.0312943458557,
-    "z": "e055a121.e69f6",
+    "x": 1668.5040855407715,
+    "y": 808.0312933921814,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "80651cf1.36d15"
+        "72234e91.d5575"
       ]
     ]
   },
   {
-    "id": "80651cf1.36d15",
+    "id": "72234e91.d5575",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1838.5004272460938,
-    "y": 814.0312352180481,
-    "z": "e055a121.e69f6",
+    "x": 1810.5043334960938,
+    "y": 807.0312342643738,
+    "z": "5c37638f.99fd6c",
     "wires": [
       [
-        "ddcd4395.ffc5",
-        "25ee3acf.45d7b6",
-        "e392cace.793438"
+        "1f17ba6f.07fd86",
+        "cd36d7b2.2df868",
+        "f53ba2f7.ad562"
       ]
     ]
   },
   {
-    "id": "c2710bbf.7f5e98",
+    "id": "d4480c4c.ab7f1",
     "type": "comment",
     "name": "if allotted resource Id match with the incomming allotted resource ID,  sites in this service vnf should not be included",
     "info": "parent instId 200 |  parent instId 200\nservice instId 100| service InstId 200\n site1            |       site2\n allotted resId 1 | allotted resId 2 \n --------------------------------------\n Deactivate:\n loop for provided allotted res ID\n If allotted resId 1 matches with incomming allotted resource Id then we should delete the sites available in the service data 100\n for this we have to send request for deleting with site IDs site2 without including site1.\n \n \n ",
     "comments": "",
-    "x": 1791.5000305175781,
-    "y": 747.0312962532043,
-    "z": "e055a121.e69f6",
+    "x": 1763.5039367675781,
+    "y": 740.03129529953,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "4c2f69ef.f668e8",
+    "id": "44d17735.c18b38",
     "type": "comment",
     "name": "loop for provided allotted rsource Id",
     "info": "",
     "comments": "",
-    "x": 978.5,
-    "y": 886.5312523841858,
-    "z": "e055a121.e69f6",
+    "x": 950.50390625,
+    "y": 879.5312514305115,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "ce1eca8a.5fa098",
+    "id": "e435a42b.3afe08",
     "type": "comment",
     "name": "get allotted resource for the allotted resource ID",
     "info": "",
     "comments": "",
-    "x": 2352.500328063965,
-    "y": 748.5311741828918,
-    "z": "e055a121.e69f6",
+    "x": 2324.504234313965,
+    "y": 741.5311732292175,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "c6139ab0.680cf8",
+    "id": "1438e6b6.ccead9",
     "type": "comment",
     "name": "get parent service data to get connectivity which has connectivity and vpn ID",
     "info": "",
     "comments": "",
-    "x": 2135.499855041504,
-    "y": 975.5312519073486,
-    "z": "e055a121.e69f6",
+    "x": 2107.503761291504,
+    "y": 968.5312509536743,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "1497e243.92bc1e",
+    "id": "32a9e203.7d629e",
     "type": "comment",
     "name": "get service data from service instance id from allotted reosurce Id to get sites vnf",
     "info": "",
     "comments": "",
-    "x": 2324.499855041504,
-    "y": 1457.5310516357422,
-    "z": "e055a121.e69f6",
+    "x": 2296.503761291504,
+    "y": 1450.5310506820679,
+    "z": "5c37638f.99fd6c",
     "wires": []
   },
   {
-    "id": "5ceee25e.e4656c",
+    "id": "5b38ce7d.8512a",
     "type": "call",
     "name": "call sdwan-vnf-topology-operation-underlay for delete",
     "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-wanport-vnf-topology-operation-underlay' mode='sync' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 759.5001220703125,
-    "y": 1116.5312991142273,
-    "z": "e055a121.e69f6",
+    "x": 731.5040283203125,
+    "y": 1109.531298160553,
+    "z": "5c37638f.99fd6c",
     "wires": [
       []
     ]
+  },
+  {
+    "id": "f8b5c142.e5e42",
+    "type": "set",
+    "name": "Add site attachement to list and update length",
+    "xml": "<set>\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].siteId' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles[0]' value='`$prop.role`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles_length' value='1' />\n<parameter name='prop.siteAttachements_length' value='`$prop.siteAttachements_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n",
+    "comments": "",
+    "x": 2546.2539978027344,
+    "y": 2001.2539825439453,
+    "z": "5c37638f.99fd6c",
+    "wires": []
   }
 ]
index 6668fb4..b8ba3cd 100644 (file)
@@ -1,20 +1,20 @@
 [
   {
-    "id": "df4555dd.a3e848",
+    "id": "9ff5a59d.ba1e08",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 104,
-    "y": 41,
-    "z": "5775f861.275e28",
+    "x": 90.00390625,
+    "y": 49.999999046325684,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "92ceb461.e9ae38"
+        "2a13d7f0.0d4348"
       ]
     ]
   },
   {
-    "id": "92ceb461.e9ae38",
+    "id": "2a13d7f0.0d4348",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 316.00000381469727,
-    "y": 113.0000171661377,
-    "z": "5775f861.275e28",
+    "x": 302.00391006469727,
+    "y": 122.00001621246338,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "d3022041.62ba5"
+        "a747a1bc.5a7f6"
       ]
     ]
   },
   {
-    "id": "d3022041.62ba5",
+    "id": "a747a1bc.5a7f6",
     "type": "method",
     "name": "sdwan-attachment-topology-operation-delete",
     "xml": "<method rpc='sdwan-attachment-topology-operation-delete' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 304.0001220703125,
-    "y": 201,
-    "z": "5775f861.275e28",
+    "x": 290.0040283203125,
+    "y": 209.99999904632568,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "28bf3b94.47a4c4"
+        "c8f19e0f.8c32c"
       ]
     ]
   },
   {
-    "id": "28bf3b94.47a4c4",
+    "id": "c8f19e0f.8c32c",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 320.0001220703125,
-    "y": 756.0002446174622,
-    "z": "5775f861.275e28",
+    "x": 306.0040283203125,
+    "y": 765.0002436637878,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "807be759.b5e538",
-        "3103f64.d6db90a",
-        "6956382b.b9da98",
-        "fe793d2b.5a34a",
-        "967f6552.ee9a38",
-        "a1a9abde.ea9de8",
-        "d08c66c4.7c2608",
-        "661b7087.2c2c2",
-        "9281bde8.0db15",
-        "a05764a0.242458",
-        "51c0b7ea.3f9dc8",
-        "3ad79f2e.53c8c",
-        "82dc876b.abfd98",
-        "55f05cd1.c7cc44",
-        "12de84a1.b1a80b"
+        "ac139f07.afe46",
+        "d564f17f.3cd7c",
+        "b24304d4.852188",
+        "81139b91.d72eb8",
+        "da5a8374.7ecac",
+        "72df0cf3.25ba74",
+        "b5ddcb9b.3d0b08",
+        "7e7d6803.801908",
+        "97410a5a.3537b8",
+        "d656e279.64fe3",
+        "be0fff75.07c73",
+        "38ea07fe.9ae708",
+        "9639b1d0.6aa4d",
+        "5ded2c1d.2cf294"
       ]
     ]
   },
   {
-    "id": "807be759.b5e538",
+    "id": "ac139f07.afe46",
     "type": "set",
     "name": "set tmp.ar.allotted-resource-id,etc",
     "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n",
     "comments": "",
-    "x": 716.9935607910156,
-    "y": 154.9934868812561,
-    "z": "5775f861.275e28",
+    "x": 702.9974670410156,
+    "y": 163.9934859275818,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "d198c8fb.642db8",
+    "id": "c1a22f40.b7f8d",
     "type": "comment",
     "name": "set tmp ar-id to fetch resource from MDSAL",
     "info": "",
     "comments": "",
-    "x": 745.9538726806641,
-    "y": 119.02528285980225,
-    "z": "5775f861.275e28",
+    "x": 731.9577789306641,
+    "y": 128.02528190612793,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "3103f64.d6db90a",
+    "id": "d564f17f.3cd7c",
     "type": "set",
     "name": "set tmp.ar.self-link",
     "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/connection-attachment-topology/'` \" />\n\n",
     "comments": "",
-    "x": 670.9934997558594,
-    "y": 247.99349212646484,
-    "z": "5775f861.275e28",
+    "x": 656.9974060058594,
+    "y": 256.9934911727905,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "967f6552.ee9a38",
+    "id": "da5a8374.7ecac",
     "type": "execute",
     "name": "execute Properties",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n    <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",
     "comments": "",
     "outputs": 1,
-    "x": 677.2553901672363,
-    "y": 335.6602210998535,
-    "z": "5775f861.275e28",
+    "x": 663.2592964172363,
+    "y": 344.6602201461792,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       []
     ]
   },
   {
-    "id": "6956382b.b9da98",
+    "id": "b24304d4.852188",
     "type": "execute",
     "name": "generate allotted-resource url",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 709.2554168701172,
-    "y": 423.66020250320435,
-    "z": "5775f861.275e28",
+    "x": 695.2593231201172,
+    "y": 432.66020154953003,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       []
     ]
   },
   {
-    "id": "3672b3c8.5060cc",
+    "id": "595e5ef1.fa051",
     "type": "comment",
     "name": "Used for setting output to API Handler",
     "info": "",
     "comments": "",
-    "x": 724.9935302734375,
-    "y": 214.993501663208,
-    "z": "5775f861.275e28",
+    "x": 710.9974365234375,
+    "y": 223.9935007095337,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "e2c9f631.cf0b18",
+    "id": "6c854173.f4bc7",
     "type": "comment",
     "name": "Obtain different URL, template location etc",
     "info": "For saving resource information to MDSAL & for AAI",
     "comments": "",
-    "x": 742.9934959411621,
-    "y": 300.8823823928833,
-    "z": "5775f861.275e28",
+    "x": 728.9974021911621,
+    "y": 309.882381439209,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "c3b16670.191818",
+    "id": "e788822e.3722e",
     "type": "comment",
     "name": "Used to Get AR by id to MDSAL, same as self-link",
     "info": "",
     "comments": "",
-    "x": 768.9935150146484,
-    "y": 387.8823413848877,
-    "z": "5775f861.275e28",
+    "x": 754.9974212646484,
+    "y": 396.8823404312134,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "bae16026.94177",
+    "id": "dff7fd40.e0f0c",
     "type": "comment",
     "name": "GET parent-service-data from mdsal to check existence of other End point",
     "info": "",
     "comments": "",
-    "x": 836.0003280639648,
-    "y": 842.5316228866577,
-    "z": "5775f861.275e28",
+    "x": 822.0042343139648,
+    "y": 851.5316219329834,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "d310ec7e.ce8c1",
+    "id": "5cba16bf.c97498",
     "type": "for",
     "name": "for pidx..mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[]",
     "xml": "<for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1664.1849365234375,
-    "y": 1076.00425863266,
-    "z": "5775f861.275e28",
+    "x": 1650.1888427734375,
+    "y": 1085.0042576789856,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "ec3e44a4.ec0718"
+        "72856d05.385d64"
       ]
     ]
   },
   {
-    "id": "fe793d2b.5a34a",
+    "id": "81139b91.d72eb8",
     "type": "switchNode",
     "name": "switch mdsal-psd.service-data.provided-allotted-resources_length",
     "xml": "<switch test='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 815.1842956542969,
-    "y": 1082.718041419983,
-    "z": "5775f861.275e28",
+    "x": 801.1882019042969,
+    "y": 1091.7180404663086,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "7a0bf533.2fea3c",
-        "7505397d.8aabc8"
+        "e3d57198.c43ea",
+        "2011daa6.6398e6"
       ]
     ]
   },
   {
-    "id": "1ad39230.0014ce",
+    "id": "73a8d368.4b79bc",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1265.4544582366943,
-    "y": 1122.7015271186829,
-    "z": "5775f861.275e28",
+    "x": 1251.4583644866943,
+    "y": 1131.7015261650085,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "d310ec7e.ce8c1",
-        "757e6827.467698"
+        "5cba16bf.c97498",
+        "4ca0ceba.893a2"
       ]
     ]
   },
   {
-    "id": "ec3e44a4.ec0718",
+    "id": "72856d05.385d64",
     "type": "switchNode",
     "name": "switch allotted-resource-id",
     "xml": "<switch test=\"`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2114.296142578125,
-    "y": 1074.0041165351868,
-    "z": "5775f861.275e28",
+    "x": 2100.300048828125,
+    "y": 1083.0041155815125,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "f9268a01.5183a8"
+        "f2234386.9854c"
       ]
     ]
   },
   {
-    "id": "a1a9abde.ea9de8",
+    "id": "72df0cf3.25ba74",
     "type": "set",
     "name": "set tmp.ar.parent-service-instance-id",
     "xml": "<set>\n<parameter name='tmp.ar.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n\n",
     "comments": "",
-    "x": 726.9687118530273,
-    "y": 878.0000677108765,
-    "z": "5775f861.275e28",
+    "x": 712.9726181030273,
+    "y": 887.0000667572021,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "23d329ac.3b7e66",
+    "id": "32223174.f7450e",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1106.968994140625,
-    "y": 956.0001826286316,
-    "z": "5775f861.275e28",
+    "x": 1092.972900390625,
+    "y": 965.0001816749573,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "5bb8e723.a51448"
+        "c45c28d6.ff3cc8"
       ]
     ]
   },
   {
-    "id": "e13f07b8.3067a8",
+    "id": "e0a303bb.2dc06",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1098.8207969665527,
-    "y": 991.066267490387,
-    "z": "5775f861.275e28",
+    "x": 1084.8247032165527,
+    "y": 1000.0662665367126,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "ad43541b.ecf6c8"
+        "3e0bcadf.484fe6"
       ]
     ]
   },
   {
-    "id": "ad43541b.ecf6c8",
+    "id": "3e0bcadf.484fe6",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"Error: SOTN resource not found\" />\n    \n",
     "comments": "",
-    "x": 1273.969482421875,
-    "y": 987.3336176872253,
-    "z": "5775f861.275e28",
+    "x": 1259.973388671875,
+    "y": 996.333616733551,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "5bb8e723.a51448",
+    "id": "c45c28d6.ff3cc8",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1257.968994140625,
-    "y": 954.0001826286316,
-    "z": "5775f861.275e28",
+    "x": 1243.972900390625,
+    "y": 963.0001816749573,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       []
     ]
   },
   {
-    "id": "9e10ac1a.8f491",
+    "id": "ebfdd448.549cc8",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 960.7307624816895,
-    "y": 1271.952815413475,
-    "z": "5775f861.275e28",
+    "x": 946.7346687316895,
+    "y": 1280.9528144598007,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "37086a0f.d393c6"
+        "65c46af.7320594"
       ]
     ]
   },
   {
-    "id": "37086a0f.d393c6",
+    "id": "65c46af.7320594",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"AAI failed\" />\n",
     "comments": "",
-    "x": 1127.2546424865723,
-    "y": 1283.57188642025,
-    "z": "5775f861.275e28",
+    "x": 1113.2585487365723,
+    "y": 1292.5718854665756,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "824c305f.f99dc",
+    "id": "4d049da0.ca99b4",
     "type": "failure",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 967.8260498046875,
-    "y": 1304.7147830724716,
-    "z": "5775f861.275e28",
+    "x": 953.8299560546875,
+    "y": 1313.7147821187973,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "37086a0f.d393c6"
+        "65c46af.7320594"
       ]
     ]
   },
   {
-    "id": "bf221914.603808",
+    "id": "36f9e028.ff6b9",
     "type": "comment",
     "name": "TODO: Rework after confirmation from AAI",
     "info": "",
     "comments": "",
-    "x": 1092.1374282836914,
-    "y": 1222.8732151985168,
-    "z": "5775f861.275e28",
+    "x": 1078.1413345336914,
+    "y": 1231.8732142448425,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "d08c66c4.7c2608",
+    "id": "b5ddcb9b.3d0b08",
     "type": "set",
     "name": "set output to api handler",
     "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='connection-attachment-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $connection-attachment-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
     "comments": "",
-    "x": 693.5461502075195,
-    "y": 1235.8276824951172,
-    "z": "5775f861.275e28",
+    "x": 679.5500564575195,
+    "y": 1244.8276815414429,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "661b7087.2c2c2",
+    "id": "7e7d6803.801908",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 662.9592552185059,
-    "y": 1336.4434370994568,
-    "z": "5775f861.275e28",
+    "x": 648.9631729125977,
+    "y": 1351.443561553955,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "9281bde8.0db15",
+    "id": "97410a5a.3537b8",
     "type": "execute",
     "name": "execute RestApiCallNode - PUT AR by id",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='Delete' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 742.6666641235352,
-    "y": 512.3333625793457,
-    "z": "5775f861.275e28",
+    "x": 728.6705703735352,
+    "y": 521.3333616256714,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "3bcdf792.ce5568",
-        "75f51d5f.311a14",
-        "aab69d22.7b384"
+        "1994f5fd.2a6f4a",
+        "da3ffcab.ea62a",
+        "e404bf43.f1066"
       ]
     ]
   },
   {
-    "id": "3bcdf792.ce5568",
+    "id": "1994f5fd.2a6f4a",
     "type": "not-found",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 982.3081665039062,
-    "y": 552.6649107933044,
-    "z": "5775f861.275e28",
+    "x": 968.3120727539062,
+    "y": 561.6649098396301,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "a17e8ce5.2802d"
+        "e45dc5dc.4ac748"
       ]
     ]
   },
   {
-    "id": "75f51d5f.311a14",
+    "id": "da3ffcab.ea62a",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 979.3081665039062,
-    "y": 509.16490840911865,
-    "z": "5775f861.275e28",
+    "x": 965.3120727539062,
+    "y": 518.1649074554443,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "a17e8ce5.2802d"
+        "e45dc5dc.4ac748"
       ]
     ]
   },
   {
-    "id": "aab69d22.7b384",
+    "id": "e404bf43.f1066",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 986.0582466125488,
-    "y": 468.5220036506653,
-    "z": "5775f861.275e28",
+    "x": 972.0621528625488,
+    "y": 477.52200269699097,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "e5460f9f.21ecb"
+        "6706c73a.4ce818"
       ]
     ]
   },
   {
-    "id": "a17e8ce5.2802d",
+    "id": "e45dc5dc.4ac748",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error updating md-sal for connection-attachment-allotted-resource\" />\n",
     "comments": "",
-    "x": 1138.058334350586,
-    "y": 530.9149088859558,
-    "z": "5775f861.275e28",
+    "x": 1124.062240600586,
+    "y": 539.9149079322815,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "e5460f9f.21ecb",
+    "id": "6706c73a.4ce818",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1123.7141780853271,
-    "y": 468.7141833305359,
-    "z": "5775f861.275e28",
+    "x": 1109.7180843353271,
+    "y": 477.7141823768616,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       []
     ]
   },
   {
-    "id": "cb30deee.bf09a",
+    "id": "61ea2842.341858",
     "type": "comment",
     "name": "Delete Allotted Resource",
     "info": "",
     "comments": "",
-    "x": 690.0000457763672,
-    "y": 481.0000286102295,
-    "z": "5775f861.275e28",
+    "x": 676.0039520263672,
+    "y": 490.0000276565552,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "950f3191.ae2ba",
+    "id": "6dbcd93.5772b28",
     "type": "for",
     "name": "for cidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]",
     "xml": "<for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1640.00390625,
-    "y": 718.00390625,
-    "z": "5775f861.275e28",
+    "x": 1626.0078125,
+    "y": 727.0039052963257,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "763d401a.4c2ab"
+        "8604274a.795a98"
       ]
     ]
   },
   {
-    "id": "a05764a0.242458",
+    "id": "d656e279.64fe3",
     "type": "switchNode",
     "name": "switch service-data.consumed-allotted-resources_length",
     "xml": "<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 793.0032920837402,
-    "y": 678.71790766716,
-    "z": "5775f861.275e28",
+    "x": 779.0071983337402,
+    "y": 687.7179067134857,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "70bab1b2.6f71f",
-        "ab0947c0.c09f58"
+        "e4f37d32.adb08",
+        "b232603b.f0d15"
       ]
     ]
   },
   {
-    "id": "70bab1b2.6f71f",
+    "id": "e4f37d32.adb08",
     "type": "other",
     "name": "outcome Null",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1117.1461563110352,
-    "y": 661.5753421783447,
-    "z": "5775f861.275e28",
+    "x": 1103.1500625610352,
+    "y": 670.5753412246704,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "b260d54b.5e5f58"
+        "157affe5.dc6c6"
       ]
     ]
   },
   {
-    "id": "ab0947c0.c09f58",
+    "id": "b232603b.f0d15",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1103.1461791992188,
-    "y": 724.5753309726715,
-    "z": "5775f861.275e28",
+    "x": 1089.1500854492188,
+    "y": 733.5753300189972,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "d2367329.94565"
+        "a3ecd1d6.43a2e"
       ]
     ]
   },
   {
-    "id": "d2367329.94565",
+    "id": "a3ecd1d6.43a2e",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1263.2732696533203,
-    "y": 722.7013075351715,
-    "z": "5775f861.275e28",
+    "x": 1249.2771759033203,
+    "y": 731.7013065814972,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "950f3191.ae2ba",
-        "51c9f5a5.4315fc"
+        "6dbcd93.5772b28",
+        "9971417.dd05cc"
       ]
     ]
   },
   {
-    "id": "51c0b7ea.3f9dc8",
+    "id": "be0fff75.07c73",
     "type": "set",
     "name": "set consumed allotted resources for deletion",
     "xml": "<set>\n<parameter name=\"service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].\" value=\"\" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`' />\n\n",
     "comments": "",
-    "x": 749.8606262207031,
-    "y": 749.28955078125,
-    "z": "5775f861.275e28",
+    "x": 735.8645324707031,
+    "y": 758.2895498275757,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "763d401a.4c2ab",
+    "id": "8604274a.795a98",
     "type": "switchNode",
     "name": "switch allotted-resource-id",
     "xml": "<switch test=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2078.1155166625977,
-    "y": 714.0040283203125,
-    "z": "5775f861.275e28",
+    "x": 2064.1194229125977,
+    "y": 723.0040273666382,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "8699c549.34eb68"
+        "3ce4b91e.bc1ea6"
       ]
     ]
   },
   {
-    "id": "8699c549.34eb68",
+    "id": "3ce4b91e.bc1ea6",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2273.925338745117,
-    "y": 713.4683527946472,
-    "z": "5775f861.275e28",
+    "x": 2259.929244995117,
+    "y": 722.4683518409729,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "a387ae74.594b6"
+        "bfbb9b9d.413298"
       ]
     ]
   },
   {
-    "id": "365e6c51.6f6434",
+    "id": "5d4138bb.2e6948",
     "type": "set",
     "name": "set tmp.cidx",
     "xml": "<set>\n<parameter name='tmp.cidx' value='`$cidx`' />\n",
     "comments": "",
-    "x": 2589.2618713378906,
-    "y": 714.2246108055115,
-    "z": "5775f861.275e28",
+    "x": 2575.2657775878906,
+    "y": 723.2246098518372,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "dda8dc98.e31b",
+    "id": "80fa82c1.032f3",
     "type": "comment",
     "name": "Delete consumed service consumed-allotted-resources in mdsal",
     "info": "",
     "comments": "",
-    "x": 804.0045623779297,
-    "y": 611.0038724095793,
-    "z": "5775f861.275e28",
+    "x": 790.0084686279297,
+    "y": 620.003871455905,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "f55bb2df.f0b",
+    "id": "b69750ea.d13e7",
     "type": "comment",
     "name": "This set resource will be deleted in MDSAL by provider code",
     "info": "",
     "comments": "",
-    "x": 794.337345123291,
-    "y": 715.781964302063,
-    "z": "5775f861.275e28",
+    "x": 780.341251373291,
+    "y": 724.7819633483887,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "c48ea2e0.f31db",
+    "id": "24feb42b.2816cc",
     "type": "comment",
     "name": "Obtain the index of conusumed AR",
     "info": "",
     "comments": "",
-    "x": 716.7817535400391,
-    "y": 642.8927326202393,
-    "z": "5775f861.275e28",
+    "x": 702.7856597900391,
+    "y": 651.8927316665649,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "b260d54b.5e5f58",
+    "id": "157affe5.dc6c6",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Resource to be deleted doesn't exist in MDSAL.\" />\n",
     "comments": "",
-    "x": 1279.00390625,
-    "y": 662.00390625,
-    "z": "5775f861.275e28",
+    "x": 1265.0078125,
+    "y": 671.0039052963257,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "a387ae74.594b6",
+    "id": "bfbb9b9d.413298",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 2423.003936767578,
-    "y": 714.2539558410645,
-    "z": "5775f861.275e28",
+    "x": 2409.007843017578,
+    "y": 723.2539548873901,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "365e6c51.6f6434"
+        "5d4138bb.2e6948"
       ]
     ]
   },
   {
-    "id": "9d4dfb29.6b9ee8",
+    "id": "f597fe60.1abe5",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"resource to be deleted is not available in mdsal\" />\n",
     "comments": "",
-    "x": 1733.25390625,
-    "y": 771.25390625,
-    "z": "5775f861.275e28",
+    "x": 1719.2578125,
+    "y": 780.2539052963257,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "42d75f79.805d2",
+    "id": "15fa064d.455b2a",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1595.75390625,
-    "y": 771.25390625,
-    "z": "5775f861.275e28",
+    "x": 1581.7578125,
+    "y": 780.2539052963257,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "9d4dfb29.6b9ee8"
+        "f597fe60.1abe5"
       ]
     ]
   },
   {
-    "id": "51c9f5a5.4315fc",
+    "id": "9971417.dd05cc",
     "type": "switchNode",
     "name": "switch tmp.cidx ",
     "xml": "<switch test=\"`$tmp.cidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1441.75390625,
-    "y": 771.25390625,
-    "z": "5775f861.275e28",
+    "x": 1427.7578125,
+    "y": 780.2539052963257,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "42d75f79.805d2"
+        "15fa064d.455b2a"
       ]
     ]
   },
   {
-    "id": "7f854ddc.974234",
+    "id": "78b32310.b31e1c",
     "type": "comment",
     "name": "Delete provided service provided-allotted-resources in mdsal",
     "info": "",
     "comments": "",
-    "x": 790.5039215087891,
-    "y": 807.00390625,
-    "z": "5775f861.275e28",
+    "x": 776.5078277587891,
+    "y": 816.0039052963257,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "7505397d.8aabc8",
+    "id": "2011daa6.6398e6",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1118.5041770935059,
-    "y": 1121.7540984153748,
-    "z": "5775f861.275e28",
+    "x": 1104.5080833435059,
+    "y": 1130.7540974617004,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "1ad39230.0014ce"
+        "73a8d368.4b79bc"
       ]
     ]
   },
   {
-    "id": "7a0bf533.2fea3c",
+    "id": "e3d57198.c43ea",
     "type": "other",
     "name": "outcome Null",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1135.5040969848633,
-    "y": 1033.7539324760437,
-    "z": "5775f861.275e28",
+    "x": 1121.5080032348633,
+    "y": 1042.7539315223694,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "7c243332.a34bdc"
+        "e0cbd03d.fef77"
       ]
     ]
   },
   {
-    "id": "7c243332.a34bdc",
+    "id": "e0cbd03d.fef77",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Resource to be deleted doesn't exist in MDSAL.\" />\n",
     "comments": "",
-    "x": 1299.3616943359375,
-    "y": 1034.1824774742126,
-    "z": "5775f861.275e28",
+    "x": 1285.3656005859375,
+    "y": 1043.1824765205383,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "eb1cae26.e29d4",
+    "id": "8152d4f5.017ee8",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"resource to be deleted is not available in mdsal\" />\n",
     "comments": "",
-    "x": 1730.7539501190186,
-    "y": 1151.753936290741,
-    "z": "5775f861.275e28",
+    "x": 1716.7578563690186,
+    "y": 1160.7539353370667,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "7690b02b.7872f",
+    "id": "9af42612.9cc9e8",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1593.2539501190186,
-    "y": 1151.753936290741,
-    "z": "5775f861.275e28",
+    "x": 1579.2578563690186,
+    "y": 1160.7539353370667,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "eb1cae26.e29d4"
+        "8152d4f5.017ee8"
       ]
     ]
   },
   {
-    "id": "757e6827.467698",
+    "id": "4ca0ceba.893a2",
     "type": "switchNode",
     "name": "switch tmp.pidx ",
     "xml": "<switch test=\"`$tmp.pidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1439.2539501190186,
-    "y": 1151.753936290741,
-    "z": "5775f861.275e28",
+    "x": 1425.2578563690186,
+    "y": 1160.7539353370667,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "7690b02b.7872f"
+        "9af42612.9cc9e8"
       ]
     ]
   },
   {
-    "id": "f9268a01.5183a8",
+    "id": "f2234386.9854c",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2303.504367828369,
-    "y": 1071.7540946006775,
-    "z": "5775f861.275e28",
+    "x": 2289.508274078369,
+    "y": 1080.7540936470032,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "86a5d9a6.a11a58"
+        "8c3b4c6c.f6375"
       ]
     ]
   },
   {
-    "id": "b544cb9e.217168",
+    "id": "51d5026c.5bd4fc",
     "type": "set",
     "name": "set tmp.pidx",
     "xml": "<set>\n<parameter name='tmp.pidx' value='`$pidx`' />\n",
     "comments": "",
-    "x": 2371.8404846191406,
-    "y": 1206.5101914405823,
-    "z": "5775f861.275e28",
+    "x": 2357.8443908691406,
+    "y": 1215.510190486908,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "86a5d9a6.a11a58",
+    "id": "8c3b4c6c.f6375",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 2363.582820892334,
-    "y": 1142.539580821991,
-    "z": "5775f861.275e28",
+    "x": 2349.586727142334,
+    "y": 1151.5395798683167,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "b544cb9e.217168"
+        "51d5026c.5bd4fc"
       ]
     ]
   },
   {
-    "id": "3ad79f2e.53c8c",
+    "id": "38ea07fe.9ae708",
     "type": "set",
     "name": "set provided allotted resources for deletion",
     "xml": "<set>\n<parameter name=\"service-data.provided-allotted-resources.consumed-allotted-resource[$pidx].\" value=\"\" />\n<parameter name=\"service-data.provided-allotted-resources.consumed-allotted-resource_length\" value='`$service-data.provided-allotted-resources.consumed-allotted-resource_length - 1`' />\n\n",
     "comments": "",
-    "x": 749.0039978027344,
-    "y": 1137.0039768218994,
-    "z": "5775f861.275e28",
+    "x": 735.0079040527344,
+    "y": 1146.003975868225,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": []
   },
   {
-    "id": "82dc876b.abfd98",
+    "id": "a01da430.f51578",
     "type": "update",
     "name": "update AAI allotted-resource",
     "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='allotted-resource'  \n\t\tkey=\"customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 706.2227554321289,
-    "y": 1291.754346370697,
-    "z": "5775f861.275e28",
+    "x": 692.2266616821289,
+    "y": 1300.7543454170227,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "9e10ac1a.8f491",
-        "824c305f.f99dc"
+        "ebfdd448.549cc8",
+        "4d049da0.ca99b4"
       ]
     ]
   },
   {
-    "id": "12de84a1.b1a80b",
+    "id": "5ded2c1d.2cf294",
     "type": "execute",
     "name": "execute RestApiCallNode - get-resource parent service data",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-psd\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 796.3334197998047,
-    "y": 977.333366394043,
-    "z": "5775f861.275e28",
+    "x": 782.3373260498047,
+    "y": 986.3333654403687,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       [
-        "23d329ac.3b7e66",
-        "e13f07b8.3067a8"
+        "32223174.f7450e",
+        "e0a303bb.2dc06"
       ]
     ]
   },
   {
-    "id": "55f05cd1.c7cc44",
+    "id": "9639b1d0.6aa4d",
     "type": "execute",
     "name": "get parent-service-data tmp.ar-url-psd",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-psd\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>",
     "comments": "",
     "outputs": 1,
-    "x": 730.3333587646484,
-    "y": 935.3332056999207,
-    "z": "5775f861.275e28",
+    "x": 716.3372650146484,
+    "y": 944.3332047462463,
+    "z": "3cf3c3f6.8ecf4c",
     "wires": [
       []
     ]
index 2645685..76e0f70 100644 (file)
@@ -1,20 +1,20 @@
 [
   {
-    "id": "c9ac4983.326288",
+    "id": "c38bd7d5.df77b8",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 259.03125,
-    "y": 199.03125,
-    "z": "33fa79d5.e5dbd6",
+    "x": 220.00390625,
+    "y": 142.00390625,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "a919b1fb.cf167"
+        "9db33c19.af792"
       ]
     ]
   },
   {
-    "id": "a919b1fb.cf167",
+    "id": "9db33c19.af792",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 471.03125381469727,
-    "y": 271.0312671661377,
-    "z": "33fa79d5.e5dbd6",
+    "x": 432.00391006469727,
+    "y": 214.0039234161377,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "20189583.354efa"
+        "d521798b.eb0348"
       ]
     ]
   },
   {
-    "id": "20189583.354efa",
+    "id": "d521798b.eb0348",
     "type": "method",
     "name": "sdwan-get-site-param",
     "xml": "<method rpc='sdwan-get-site-param' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 459.0313720703125,
-    "y": 359.03125,
-    "z": "33fa79d5.e5dbd6",
+    "x": 420.0040283203125,
+    "y": 302.00390625,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "c2456569.00bd88"
+        "71ba9c6d.9a9864"
       ]
     ]
   },
   {
-    "id": "c2456569.00bd88",
+    "id": "71ba9c6d.9a9864",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 466.03126525878906,
-    "y": 445.0313081741333,
-    "z": "33fa79d5.e5dbd6",
+    "x": 427.00392150878906,
+    "y": 388.0039644241333,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "4e2d26a4.4c1808"
+        "b3f4200f.57507"
       ]
     ]
   },
   {
-    "id": "4e2d26a4.4c1808",
+    "id": "b3f4200f.57507",
     "type": "for",
     "name": "for each sdwan-get-request-input-param",
     "xml": "<for index='idx' start='0' end='`$vnf-request-input.vnf-input-parameters.param_length`' >\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 502.6980285644531,
-    "y": 527.697904586792,
-    "z": "33fa79d5.e5dbd6",
+    "x": 463.6706848144531,
+    "y": 470.670560836792,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "e3603253.51629"
+        "6800f034.117f8"
       ]
     ]
   },
   {
-    "id": "e3603253.51629",
+    "id": "6800f034.117f8",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 789.5315780639648,
-    "y": 445.03135204315186,
-    "z": "33fa79d5.e5dbd6",
+    "x": 750.5042343139648,
+    "y": 388.00400829315186,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "4fbcc568.ce097c",
-        "9e4fbe84.7d2fb",
-        "ed14265a.99d948",
-        "773d0e91.45e91",
-        "a690711f.67d26",
-        "f96e2736.deb9e8",
-        "5bc913df.9a308c",
-        "8619f18f.0dd93",
-        "1ee73b7b.ea9285",
-        "5cd558f4.7f3258",
-        "dbf73ee2.461c2",
-        "bbcb741c.0eb968",
-        "cd952f17.46c77"
+        "a6377b98.e830f8",
+        "517edbd2.91b704",
+        "a701284f.455118",
+        "ca16c569.719ab8",
+        "86e64461.d62ec8",
+        "c6f06bc6.074328",
+        "24b313e.2bb53ec",
+        "3a793fa2.7f94e",
+        "fee596dc.022e48",
+        "2bb40b1d.ca77f4",
+        "663914f5.d948fc",
+        "9a6d9a43.210478",
+        "d3c58875.e0f958"
       ]
     ]
   },
   {
-    "id": "4fbcc568.ce097c",
+    "id": "a6377b98.e830f8",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 993.0323181152344,
-    "y": 814.032012462616,
-    "z": "33fa79d5.e5dbd6",
+    "x": 954.0049743652344,
+    "y": 757.004668712616,
+    "z": "152c5971.7ac927",
     "wires": []
   },
   {
-    "id": "9e4fbe84.7d2fb",
+    "id": "517edbd2.91b704",
     "type": "switchNode",
     "name": "switch name",
     "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1009.0312881469727,
-    "y": 241.031325340271,
-    "z": "33fa79d5.e5dbd6",
+    "x": 970.0039443969727,
+    "y": 184.003981590271,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "3261cfb2.83caf"
+        "7a153116.0d4e7"
       ]
     ]
   },
   {
-    "id": "3261cfb2.83caf",
+    "id": "7a153116.0d4e7",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1151.0312881469727,
-    "y": 242.031325340271,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1112.0039443969727,
+    "y": 185.003981590271,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "e4e6bc65.0ec81"
+        "d8a2309b.8475f"
       ]
     ]
   },
   {
-    "id": "e4e6bc65.0ec81",
+    "id": "d8a2309b.8475f",
     "type": "set",
     "name": "set name",
-    "xml": "<set>\n<parameter name='prop.device.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "xml": "<set>\n<parameter name='prop.site.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
     "comments": "",
-    "x": 1285.0312881469727,
-    "y": 242.63133144378662,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1246.0039443969727,
+    "y": 185.60398769378662,
+    "z": "152c5971.7ac927",
     "wires": []
   },
   {
-    "id": "ed14265a.99d948",
+    "id": "a701284f.455118",
     "type": "switchNode",
     "name": "switch name",
     "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1005.0313949584961,
-    "y": 332.0312833786011,
-    "z": "33fa79d5.e5dbd6",
+    "x": 966.0040512084961,
+    "y": 275.0039396286011,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "81ce8f79.a82a1"
+        "de455822.f8ce78"
       ]
     ]
   },
   {
-    "id": "81ce8f79.a82a1",
+    "id": "de455822.f8ce78",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1183.0314083099365,
-    "y": 335.0312833786011,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1144.0040645599365,
+    "y": 278.0039396286011,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "6599a894.64adf8"
+        "78b4f47e.c7bfcc"
       ]
     ]
   },
   {
-    "id": "6599a894.64adf8",
+    "id": "78b4f47e.c7bfcc",
     "type": "set",
     "name": "set name",
     "xml": "<set>\n<parameter name='prop.site.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
     "comments": "",
-    "x": 1330.0314178466797,
-    "y": 334.6312789916992,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1291.0040740966797,
+    "y": 277.6039352416992,
+    "z": "152c5971.7ac927",
     "wires": []
   },
   {
-    "id": "5cd558f4.7f3258",
+    "id": "2bb40b1d.ca77f4",
     "type": "switchNode",
     "name": "switch type",
     "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'type'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 983.9270668029785,
-    "y": 630.0047330856323,
-    "z": "33fa79d5.e5dbd6",
+    "x": 944.8997230529785,
+    "y": 572.9773893356323,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "48783360.87fe7c"
+        "8bb0abec.ed7288"
       ]
     ]
   },
   {
-    "id": "48783360.87fe7c",
+    "id": "8bb0abec.ed7288",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1162.9269104003906,
-    "y": 631.0046529769897,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1123.8995666503906,
+    "y": 573.9773092269897,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "b59fb35a.098b9"
+        "bb6bcb71.b39508"
       ]
     ]
   },
   {
-    "id": "b59fb35a.098b9",
+    "id": "bb6bcb71.b39508",
     "type": "set",
     "name": "set type",
     "xml": "<set>\n<parameter name='prop.site.type' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n<parameter name='prop.site.sdwan' value='true' />",
     "comments": "",
-    "x": 1312.9269218444824,
-    "y": 632.6046676635742,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1273.8995780944824,
+    "y": 575.5773239135742,
+    "z": "152c5971.7ac927",
     "wires": []
   },
   {
-    "id": "dbf73ee2.461c2",
+    "id": "663914f5.d948fc",
     "type": "switchNode",
     "name": "switch role",
     "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'role'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 984.9267425537109,
-    "y": 674.0047731399536,
-    "z": "33fa79d5.e5dbd6",
+    "x": 945.8993988037109,
+    "y": 616.9774293899536,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "8ceba6c3.5c88c8"
+        "a0fc9634.928638"
       ]
     ]
   },
   {
-    "id": "8ceba6c3.5c88c8",
+    "id": "a0fc9634.928638",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1154.9267501831055,
-    "y": 684.0047359466553,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1115.8994064331055,
+    "y": 626.9773921966553,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "832f2789.d30da8"
+        "55d77248.d68a9c"
       ]
     ]
   },
   {
-    "id": "773d0e91.45e91",
+    "id": "ca16c569.719ab8",
     "type": "switchNode",
     "name": "switch location-name",
     "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'location-name'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1027.9265823364258,
-    "y": 374.0045919418335,
-    "z": "33fa79d5.e5dbd6",
+    "x": 988.8992385864258,
+    "y": 316.9772481918335,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "85468ea4.c68d2"
+        "4c784934.a87448"
       ]
     ]
   },
   {
-    "id": "85468ea4.c68d2",
+    "id": "4c784934.a87448",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1191.9267539978027,
-    "y": 374.0045928955078,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1152.8994102478027,
+    "y": 316.9772491455078,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "bc94b24c.9dce8"
+        "3e756eb.d90f392"
       ]
     ]
   },
   {
-    "id": "bc94b24c.9dce8",
+    "id": "3e756eb.d90f392",
     "type": "set",
     "name": "set location-name",
     "xml": "<set>\n<parameter name='prop.site.location-name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
     "comments": "",
-    "x": 1353.9267654418945,
-    "y": 373.6046495437622,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1314.8994216918945,
+    "y": 316.5773057937622,
+    "z": "152c5971.7ac927",
     "wires": []
   },
   {
-    "id": "a690711f.67d26",
+    "id": "86e64461.d62ec8",
     "type": "switchNode",
     "name": "switch address",
     "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'address'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1010.9265823364258,
-    "y": 410.00459575653076,
-    "z": "33fa79d5.e5dbd6",
+    "x": 971.8992385864258,
+    "y": 352.97725200653076,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "5c1e569f.3488e8"
+        "4b7d0893.6d1a98"
       ]
     ]
   },
   {
-    "id": "5c1e569f.3488e8",
+    "id": "4b7d0893.6d1a98",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1180.9264297485352,
-    "y": 418.00459480285645,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1141.8990859985352,
+    "y": 360.97725105285645,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "b976d806.368f48"
+        "2c26a847.9d4008"
       ]
     ]
   },
   {
-    "id": "b976d806.368f48",
+    "id": "2c26a847.9d4008",
     "type": "set",
     "name": "set location-address",
     "xml": "<set>\n<parameter name='prop.site.location-address' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
     "comments": "",
-    "x": 1368.9266052246094,
-    "y": 413.60457038879395,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1329.8992614746094,
+    "y": 356.57722663879395,
+    "z": "152c5971.7ac927",
     "wires": []
   },
   {
-    "id": "f96e2736.deb9e8",
+    "id": "c6f06bc6.074328",
     "type": "switchNode",
     "name": "switch postcode",
     "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'postcode'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1011.9265823364258,
-    "y": 452.0045566558838,
-    "z": "33fa79d5.e5dbd6",
+    "x": 972.8992385864258,
+    "y": 394.9772129058838,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "e2c2334c.42179"
+        "af6ba3e1.07f47"
       ]
     ]
   },
   {
-    "id": "e2c2334c.42179",
+    "id": "af6ba3e1.07f47",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1176.9267539978027,
-    "y": 451.0045566558838,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1137.8994102478027,
+    "y": 393.9772129058838,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "8da40933.edfaf8"
+        "2e6a288b.539db8"
       ]
     ]
   },
   {
-    "id": "8da40933.edfaf8",
+    "id": "2e6a288b.539db8",
     "type": "set",
     "name": "set location-postcode",
     "xml": "<set>\n<parameter name='prop.site.location-postcode' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
     "comments": "",
-    "x": 1363.9266052246094,
-    "y": 452.6045732498169,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1324.8992614746094,
+    "y": 395.5772294998169,
+    "z": "152c5971.7ac927",
     "wires": []
   },
   {
-    "id": "bbcb741c.0eb968",
+    "id": "9a6d9a43.210478",
     "type": "switchNode",
     "name": "switch controlPoint",
     "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'controlPoint'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1003.8099670410156,
-    "y": 734.0315742492676,
-    "z": "33fa79d5.e5dbd6",
+    "x": 964.7826232910156,
+    "y": 677.0042304992676,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "6a2baa92.dd77f4"
+        "610c92a.a595c6c"
       ]
     ]
   },
   {
-    "id": "6a2baa92.dd77f4",
+    "id": "610c92a.a595c6c",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1165.8098907470703,
-    "y": 730.0315971374512,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1126.7825469970703,
+    "y": 673.0042533874512,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "fd4f1adb.5ec4b8"
+        "be722424.9e5438"
       ]
     ]
   },
   {
-    "id": "9ab3bfdb.b8822",
+    "id": "64aa63f1.8e581c",
     "type": "set",
     "name": "set role",
     "xml": "<set>\n<parameter name='prop.site.role' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n\n",
     "comments": "",
-    "x": 1526.8100395202637,
-    "y": 660.0315113067627,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1487.7826957702637,
+    "y": 603.0041675567627,
+    "z": "152c5971.7ac927",
     "wires": []
   },
   {
-    "id": "44d73030.0da8d",
+    "id": "79665fbb.1aeb5",
     "type": "set",
     "name": "set controlPoint",
     "xml": "<set>\n<parameter name='prop.site.controlPoint' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n\n",
     "comments": "",
-    "x": 1550.8099174499512,
-    "y": 750.0315952301025,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1511.7825736999512,
+    "y": 693.0042514801025,
+    "z": "152c5971.7ac927",
     "wires": []
   },
   {
-    "id": "a9190ca.3c93df",
+    "id": "adfd7aba.7276f8",
     "type": "execute",
     "name": "execute split roles",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.site.role`'/>\n<parameter name=\"regex\" value=\",\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.site.roles\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1565.4762649536133,
-    "y": 707.0314292907715,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1526.4489212036133,
+    "y": 650.0040855407715,
+    "z": "152c5971.7ac927",
     "wires": [
       []
     ]
   },
   {
-    "id": "832f2789.d30da8",
+    "id": "55d77248.d68a9c",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1312.4764022827148,
-    "y": 687.0314292907715,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1273.4490585327148,
+    "y": 630.0040855407715,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "9ab3bfdb.b8822",
-        "a9190ca.3c93df"
+        "64aa63f1.8e581c",
+        "adfd7aba.7276f8"
       ]
     ]
   },
   {
-    "id": "fd4f1adb.5ec4b8",
+    "id": "be722424.9e5438",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "comments": "",
     "outputs": 1,
-    "x": 1324.4762382507324,
-    "y": 734.0313529968262,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1285.4488945007324,
+    "y": 677.0040092468262,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "44d73030.0da8d",
-        "2ecea48f.cefbcc"
+        "79665fbb.1aeb5",
+        "db6408de.efe4c8"
       ]
     ]
   },
   {
-    "id": "2ecea48f.cefbcc",
+    "id": "db6408de.efe4c8",
     "type": "execute",
     "name": "execute split control points",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.site.controlPoint`'/>\n<parameter name=\"regex\" value=\",\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.site.controlpoints\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1575.4763946533203,
-    "y": 802.031455039978,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1536.4490509033203,
+    "y": 745.004111289978,
+    "z": "152c5971.7ac927",
     "wires": [
       []
     ]
   },
   {
-    "id": "5bc913df.9a308c",
+    "id": "24b313e.2bb53ec",
     "type": "switchNode",
     "name": "switch latitude",
     "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'latitude'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1002.1428909301758,
-    "y": 496.03133392333984,
-    "z": "33fa79d5.e5dbd6",
+    "x": 963.1155471801758,
+    "y": 439.00399017333984,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "408fca65.ceeb84"
+        "13e09627.b199da"
       ]
     ]
   },
   {
-    "id": "408fca65.ceeb84",
+    "id": "13e09627.b199da",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1178.1427383422852,
-    "y": 491.03129291534424,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1139.1153945922852,
+    "y": 434.00394916534424,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "fff4ca4.988db38"
+        "3ac65d27.a38462"
       ]
     ]
   },
   {
-    "id": "fff4ca4.988db38",
+    "id": "3ac65d27.a38462",
     "type": "set",
     "name": "set location-latitude",
     "xml": "<set>\n<parameter name='prop.site.location-latitude' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
     "comments": "",
-    "x": 1352.1427459716797,
-    "y": 489.63130950927734,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1313.1154022216797,
+    "y": 432.60396575927734,
+    "z": "152c5971.7ac927",
     "wires": []
   },
   {
-    "id": "8619f18f.0dd93",
+    "id": "3a793fa2.7f94e",
     "type": "switchNode",
     "name": "switch longitude",
     "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'longitude'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1005.1428909301758,
-    "y": 536.0313768386841,
-    "z": "33fa79d5.e5dbd6",
+    "x": 966.1155471801758,
+    "y": 479.0040330886841,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "f2c6dced.9082e"
+        "55ab0e28.8342d"
       ]
     ]
   },
   {
-    "id": "f2c6dced.9082e",
+    "id": "55ab0e28.8342d",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1177.1428985595703,
-    "y": 531.031418800354,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1138.1155548095703,
+    "y": 474.004075050354,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "dc9fd2db.e7bb7"
+        "de42d185.f22c5"
       ]
     ]
   },
   {
-    "id": "dc9fd2db.e7bb7",
+    "id": "de42d185.f22c5",
     "type": "set",
-    "name": "set location-latitude",
-    "xml": "<set>\n<parameter name='prop.site.location-latitude' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "name": "set location-longitude",
+    "xml": "<set>\n<parameter name='prop.site.location-longitude' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
     "comments": "",
-    "x": 1359.1427536010742,
-    "y": 534.6312704086304,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1320.1154098510742,
+    "y": 477.60392665863037,
+    "z": "152c5971.7ac927",
     "wires": []
   },
   {
-    "id": "95b5a3d.f7b926",
+    "id": "954fde0c.db00e",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1168.1428985595703,
-    "y": 581.031421661377,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1129.1155548095703,
+    "y": 524.004077911377,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "9b797058.27cec"
+        "ec738ea.7ff107"
       ]
     ]
   },
   {
-    "id": "e75918af.752508",
+    "id": "ddfdabba.c44028",
     "type": "set",
     "name": "set emails",
     "xml": "<set>\n<parameter name='prop.site.emails' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
     "comments": "",
-    "x": 1526.142593383789,
-    "y": 549.6312737464905,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1487.115249633789,
+    "y": 492.6039299964905,
+    "z": "152c5971.7ac927",
     "wires": []
   },
   {
-    "id": "1ee73b7b.ea9285",
+    "id": "fee596dc.022e48",
     "type": "switchNode",
     "name": "switch emails",
     "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'emails'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 995.1429672241211,
-    "y": 581.031421661377,
-    "z": "33fa79d5.e5dbd6",
+    "x": 956.1156234741211,
+    "y": 524.004077911377,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "95b5a3d.f7b926"
+        "954fde0c.db00e"
       ]
     ]
   },
   {
-    "id": "931cb5f.e240e48",
+    "id": "803294bd.b33768",
     "type": "execute",
     "name": "execute split emails",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.site.emails`'/>\n<parameter name=\"regex\" value=\",\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.site.email\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1551.808937072754,
-    "y": 596.0311765670776,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1512.781593322754,
+    "y": 539.0038328170776,
+    "z": "152c5971.7ac927",
     "wires": [
       []
     ]
   },
   {
-    "id": "9b797058.27cec",
+    "id": "ec738ea.7ff107",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1330.1429061889648,
-    "y": 582.0313391685486,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1291.1155624389648,
+    "y": 525.0039954185486,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "e75918af.752508",
-        "931cb5f.e240e48"
+        "ddfdabba.c44028",
+        "803294bd.b33768"
       ]
     ]
   },
   {
-    "id": "cd952f17.46c77",
+    "id": "d3c58875.e0f958",
     "type": "switchNode",
     "name": "switch description",
     "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'description'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1010.03125,
-    "y": 286.03125,
-    "z": "33fa79d5.e5dbd6",
+    "x": 971.00390625,
+    "y": 229.00390625,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "e92216b6.4260b8"
+        "8aebe9ab.cbad88"
       ]
     ]
   },
   {
-    "id": "e92216b6.4260b8",
+    "id": "8aebe9ab.cbad88",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1152.03125,
-    "y": 287.03125,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1113.00390625,
+    "y": 230.00390625,
+    "z": "152c5971.7ac927",
     "wires": [
       [
-        "adffc0ee.7e0ff"
+        "d7605ed6.36544"
       ]
     ]
   },
   {
-    "id": "adffc0ee.7e0ff",
+    "id": "d7605ed6.36544",
     "type": "set",
     "name": "set description",
-    "xml": "<set>\n<parameter name='prop.device.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "xml": "<set>\n<parameter name='prop.site.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
     "comments": "",
-    "x": 1286.03125,
-    "y": 287.6312561035156,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1259.0039825439453,
+    "y": 230.60393619537354,
+    "z": "152c5971.7ac927",
     "wires": []
   }
 ]
index 84599e1..0534be5 100644 (file)
 [
   {
-    "id": "c57da515.f74988",
+    "id": "50195fc6.898bb",
     "type": "comment",
     "name": "sdwan-vnf-topology-operation-device-activate",
     "info": "",
     "comments": "",
-    "x": 571.344856262207,
-    "y": 61,
-    "z": "48050f50.e2132",
+    "x": 550.00390625,
+    "y": 71.00390625,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "e16a751b.7b48a8",
+    "id": "85d78052.fe7cc",
     "type": "service-logic",
-    "name": "GENERIC-RESOURCE-API 1.2.1-SNAPSHOT",
+    "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
-    "version": "1.2.1-SNAPSHOT",
+    "version": "${project.version}",
     "comments": "",
-    "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='1.2.1-SNAPSHOT'>",
+    "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 251.2857666015625,
-    "y": 132.0002670288086,
-    "z": "48050f50.e2132",
+    "x": 229.94481658935547,
+    "y": 142.0041732788086,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "e3b9d3fc.f582d"
+        "323cadd3.27c0d2"
       ]
     ]
   },
   {
-    "id": "22a66427.5103ec",
+    "id": "aaa38f17.f307a",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 172.00006103515625,
-    "y": 69.76215744018555,
-    "z": "48050f50.e2132",
+    "x": 150.65911102294922,
+    "y": 79.76606369018555,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "e16a751b.7b48a8"
+        "85d78052.fe7cc"
       ]
     ]
   },
   {
-    "id": "5e9c748a.d0c93c",
+    "id": "220347f8.1484e8",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 246.66673278808594,
-    "y": 411.42884254455566,
-    "z": "48050f50.e2132",
+    "x": 225.3257827758789,
+    "y": 421.43274879455566,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "164a289d.b889e7",
-        "c60faf33.f797b",
-        "138d258a.ddadba",
-        "2a9fc936.08f4c6",
-        "b4b11b51.f47008",
-        "88ab4e5f.36358",
-        "15d0a117.420b6f",
-        "34088ab3.22cba6",
-        "96fd10aa.3117f",
-        "3c7b9f2b.d2464",
-        "4d7e6631.03a558",
-        "58df9113.78ab9",
-        "971b776.085e288",
-        "64ab23e7.432f0c"
+        "e6b80f71.25bd4",
+        "41d21371.3482cc",
+        "ede17b3a.f75148",
+        "d7029e79.59672",
+        "6ae18188.f2044",
+        "f628964.b562168",
+        "120defaf.28edc",
+        "46c583fa.d0b40c",
+        "139f4e2.66d6eb2",
+        "a27fb783.ef2f48",
+        "bcf0047f.528cc8",
+        "981acfda.e23ab",
+        "86570f1a.fe5e8",
+        "fba2af80.f96de"
       ]
     ]
   },
   {
-    "id": "c60faf33.f797b",
+    "id": "41d21371.3482cc",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 646.3334732055664,
-    "y": 1056.0956745147705,
-    "z": "48050f50.e2132",
+    "x": 624.9925231933594,
+    "y": 1066.0995807647705,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "164a289d.b889e7",
+    "id": "e6b80f71.25bd4",
     "type": "set",
     "name": "set vnf-level-oper-status to Active",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
     "comments": "",
-    "x": 727.813533782959,
-    "y": 863.4328231811523,
-    "z": "48050f50.e2132",
+    "x": 706.472583770752,
+    "y": 873.4367294311523,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "b4b11b51.f47008",
+    "id": "6ae18188.f2044",
     "type": "set",
     "name": "copy input data to service data",
-    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />\n",
+    "xml": "<set>\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />\n",
     "comments": "",
-    "x": 705.6667251586914,
-    "y": 919.4289989471436,
-    "z": "48050f50.e2132",
+    "x": 684.3257751464844,
+    "y": 929.4329051971436,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "49141d65.bdcea4",
+    "id": "4cad5392.24fc9c",
     "type": "comment",
     "name": "make sure this VNF doesn't exist already",
     "info": "",
     "comments": "",
-    "x": 1443.8572311401367,
-    "y": 634.9527101516724,
-    "z": "48050f50.e2132",
+    "x": 1422.5162811279297,
+    "y": 644.9566164016724,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "3c7b9f2b.d2464",
+    "id": "a27fb783.ef2f48",
     "type": "save",
     "name": "save deviceInstance configuration in AAI",
-    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n      key='device.id = $vnf-topology-operation-input.vnf-information.vnf-id' >\n<parameter name='id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='device-id' value='$deviceResp[0].id' />\n<parameter name='operational-status' value='Active' />",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n      key='device.id = $vnf-topology-operation-input.vnf-information.vnf-id' >\n<parameter name='id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='device-id' value='`$deviceResp.success[0].id`' />\n<parameter name='operational-status' value='Active' />",
     "comments": "",
     "outputs": 1,
-    "x": 730.0002212524414,
-    "y": 969.3179988861084,
-    "z": "48050f50.e2132",
+    "x": 708.6592712402344,
+    "y": 979.3219051361084,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       []
     ]
   },
   {
-    "id": "e3b9d3fc.f582d",
+    "id": "323cadd3.27c0d2",
     "type": "method",
     "name": "method sdwan-vnf-topology-operation-device-activate",
     "xml": "<method rpc='sdwan-vnf-topology-operation-device-activate' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 263.00006103515625,
-    "y": 226.3484992980957,
-    "z": "48050f50.e2132",
+    "x": 241.65911102294922,
+    "y": 236.3524055480957,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "5e9c748a.d0c93c"
+        "220347f8.1484e8"
       ]
     ]
   },
   {
-    "id": "138d258a.ddadba",
+    "id": "ede17b3a.f75148",
     "type": "set",
     "name": "set vnfId and vnf-object-path",
     "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",
     "comments": "",
-    "x": 709.0001754760742,
-    "y": 812.348635673523,
-    "z": "48050f50.e2132",
+    "x": 687.6592254638672,
+    "y": 822.352541923523,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "64ab23e7.432f0c",
+    "id": "fba2af80.f96de",
     "type": "execute",
     "name": "execute RestApiCallNode Create Devcie Instance",
-    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-device.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v3/devices'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"deviceResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />\n\n\n<!--execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-wan-port.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"wanPortResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" /-->",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-device.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v3/devices'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"deviceResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 784.4446868896484,
-    "y": 639.1265163421631,
-    "z": "48050f50.e2132",
+    "x": 763.1037368774414,
+    "y": 649.1304225921631,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "fe651cbe.71dae",
-        "4a034411.478adc"
+        "1a1378b0.178537",
+        "d8dd7f14.0ab02"
       ]
     ]
   },
   {
-    "id": "971b776.085e288",
+    "id": "86570f1a.fe5e8",
     "type": "execute",
     "name": "execute RestApiCallNode Get token",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
     "comments": "",
     "outputs": 1,
-    "x": 738.4446105957031,
-    "y": 509.1263904571533,
-    "z": "48050f50.e2132",
+    "x": 717.1036605834961,
+    "y": 519.1302967071533,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "f5a9152f.d977a8",
-        "12711b8c.b16b14"
+        "946c47ae.42bcf8",
+        "ddd15567.8fafd8"
       ]
     ]
   },
   {
-    "id": "f5a9152f.d977a8",
+    "id": "946c47ae.42bcf8",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 970.4446105957031,
-    "y": 489.1263904571533,
-    "z": "48050f50.e2132",
+    "x": 949.1036605834961,
+    "y": 499.1302967071533,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "3cccbb3c.73ecb4"
+        "8008bf96.00803"
       ]
     ]
   },
   {
-    "id": "12711b8c.b16b14",
+    "id": "ddd15567.8fafd8",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 962.6946105957031,
-    "y": 530.7692737579346,
-    "z": "48050f50.e2132",
+    "x": 941.3536605834961,
+    "y": 540.7731800079346,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "3e406e18.5253e2"
+        "87a9f03d.7da59"
       ]
     ]
   },
   {
-    "id": "3cccbb3c.73ecb4",
+    "id": "8008bf96.00803",
     "type": "set",
     "name": "set token-id",
     "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
     "comments": "",
-    "x": 1107.4446105957031,
-    "y": 489.1263904571533,
-    "z": "48050f50.e2132",
+    "x": 1086.103660583496,
+    "y": 499.1302967071533,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "3e406e18.5253e2",
+    "id": "87a9f03d.7da59",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1088.7781066894531,
-    "y": 531.0153064727783,
-    "z": "48050f50.e2132",
+    "x": 1067.437156677246,
+    "y": 541.0192127227783,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       []
     ]
   },
   {
-    "id": "647f2905.b3b168",
+    "id": "e45b42b8.e6dbb",
     "type": "comment",
     "name": "Do Nothing",
     "info": "",
     "comments": "",
-    "x": 1350.333652496338,
-    "y": 331.9041233062744,
-    "z": "48050f50.e2132",
+    "x": 1328.9927024841309,
+    "y": 341.9080295562744,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "a8bad102.6b5e9",
+    "id": "928cde96.7898d",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "comments": "",
     "outputs": 1,
-    "x": 1211.1111526489258,
-    "y": 609.0153045654297,
-    "z": "48050f50.e2132",
+    "x": 1189.7702026367188,
+    "y": 619.0192108154297,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       []
     ]
   },
   {
-    "id": "e9b5eb58.3f04d8",
+    "id": "d1dae5c1.63a508",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Activate Device rest api\" />\n",
     "comments": "",
-    "x": 1212.5557327270508,
-    "y": 659.570837020874,
-    "z": "48050f50.e2132",
+    "x": 1191.2147827148438,
+    "y": 669.574743270874,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "4a034411.478adc",
+    "id": "d8dd7f14.0ab02",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1059.555576324463,
-    "y": 662.5707912445068,
-    "z": "48050f50.e2132",
+    "x": 1038.2146263122559,
+    "y": 672.5746974945068,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "e9b5eb58.3f04d8"
+        "d1dae5c1.63a508"
       ]
     ]
   },
   {
-    "id": "fe651cbe.71dae",
+    "id": "1a1378b0.178537",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1059.0000915527344,
-    "y": 606.2375030517578,
-    "z": "48050f50.e2132",
+    "x": 1037.6591415405273,
+    "y": 616.2414093017578,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "a8bad102.6b5e9"
+        "928cde96.7898d"
       ]
     ]
   },
   {
-    "id": "88ab4e5f.36358",
+    "id": "f628964.b562168",
     "type": "set",
     "name": "set deviceId to service data",
-    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value=\"deviceId\" />\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$deviceResp[0].id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\n",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value=\"deviceId\" />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$deviceResp.success[0].id`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\n",
     "comments": "",
-    "x": 715.0003280639648,
-    "y": 764.3488826751709,
-    "z": "48050f50.e2132",
+    "x": 693.6593780517578,
+    "y": 774.3527889251709,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "7e5552be.6be08c",
-    "type": "comment",
-    "name": "URL needs to confirm.",
-    "info": "",
-    "comments": "",
-    "x": 763.0001525878906,
-    "y": 581.3486194610596,
-    "z": "48050f50.e2132",
-    "wires": []
-  },
-  {
-    "id": "62f12a96.37bf64",
+    "id": "7d88138b.724c0c",
     "type": "comment",
     "name": "AAI resource need to update",
     "info": "",
     "comments": "",
-    "x": 1041.0001754760742,
-    "y": 923.348635673523,
-    "z": "48050f50.e2132",
+    "x": 1019.6592254638672,
+    "y": 933.352541923523,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "58df9113.78ab9",
+    "id": "981acfda.e23ab",
     "type": "get-resource",
     "name": "get-resource esr-thirdparty-sdnc",
-    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 733.0002746582031,
-    "y": 413.34861183166504,
-    "z": "48050f50.e2132",
+    "x": 711.6593246459961,
+    "y": 423.35251808166504,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "a6d8f866.73e908",
-        "7fc0e78d.a01498",
-        "1501ba2b.428996"
+        "d90f92f1.56733",
+        "58ca0b39.c48274",
+        "871628e8.c20ff8"
       ]
     ]
   },
   {
-    "id": "a6d8f866.73e908",
+    "id": "d90f92f1.56733",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 974.0003318786621,
-    "y": 338.3485860824585,
-    "z": "48050f50.e2132",
+    "x": 952.6593818664551,
+    "y": 348.3524923324585,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "133ac586.e3a64a"
+        "9c017cb1.5ef39"
       ]
     ]
   },
   {
-    "id": "133ac586.e3a64a",
+    "id": "9c017cb1.5ef39",
     "type": "set",
     "name": "set controller data",
     "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
     "comments": "",
-    "x": 1223.5003852844238,
-    "y": 294.348575592041,
-    "z": "48050f50.e2132",
+    "x": 1129.159423828125,
+    "y": 339.35248136520386,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "7fc0e78d.a01498",
+    "id": "58ca0b39.c48274",
     "type": "not-found",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 965.4911689758301,
-    "y": 386.92263412475586,
-    "z": "48050f50.e2132",
+    "x": 944.150218963623,
+    "y": 396.92654037475586,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "6099fe20.b764e"
+        "48a5b30d.99482c"
       ]
     ]
   },
   {
-    "id": "6099fe20.b764e",
+    "id": "48a5b30d.99482c",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
     "comments": "",
-    "x": 1139.0625801086426,
-    "y": 375.20837020874023,
-    "z": "48050f50.e2132",
+    "x": 1117.7216300964355,
+    "y": 385.21227645874023,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "1501ba2b.428996",
+    "id": "871628e8.c20ff8",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 957.8241767883301,
-    "y": 428.2559471130371,
-    "z": "48050f50.e2132",
+    "x": 936.483226776123,
+    "y": 438.2598533630371,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "49a6b499.06dbac"
+        "59c1c9f6.0040b8"
       ]
     ]
   },
   {
-    "id": "49a6b499.06dbac",
+    "id": "59c1c9f6.0040b8",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
     "comments": "",
-    "x": 1145.5967330932617,
-    "y": 423.69513988494873,
-    "z": "48050f50.e2132",
-    "wires": []
-  },
-  {
-    "id": "b2aff25d.5a4e",
-    "type": "comment",
-    "name": "review and test req",
-    "info": "",
-    "comments": "",
-    "x": 741.0002212524414,
-    "y": 729.3487091064453,
-    "z": "48050f50.e2132",
-    "wires": []
-  },
-  {
-    "id": "61725e4c.10868",
-    "type": "comment",
-    "name": "tmp.thirdparty-sdnc-id to be hardcoded here?",
-    "info": "",
-    "comments": "",
-    "x": 731.0042877197266,
-    "y": 369.3525629043579,
-    "z": "48050f50.e2132",
+    "x": 1124.2557830810547,
+    "y": 433.69904613494873,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "4d7e6631.03a558",
+    "id": "bcf0047f.528cc8",
     "type": "save",
     "name": "save service relationship in AAI",
     "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \n      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id \n         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id \n         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"device\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/devices/device/' + $vnf-topology-operation-input.vnf-information.vnf-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"device.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 704.0003967285156,
-    "y": 1016.0955476760864,
-    "z": "48050f50.e2132",
+    "x": 682.6594467163086,
+    "y": 1026.0994539260864,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       []
     ]
   },
   {
-    "id": "2a9fc936.08f4c6",
+    "id": "d7029e79.59672",
     "type": "record",
     "name": "record",
     "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"Provided alloted resource length\"/>\n<parameter name=\"field3\" value=\"'parameters length'\"/>\n<parameter name=\"field4\" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`'/>\n\n\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 678.0000762939453,
-    "y": 291.0151786804199,
-    "z": "48050f50.e2132",
+    "x": 656.6591262817383,
+    "y": 301.0190849304199,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       []
     ]
   },
   {
-    "id": "15d0a117.420b6f",
+    "id": "120defaf.28edc",
     "type": "for",
     "name": "for vidx..service-data.vnfs.vnf_length[]",
     "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 766.031364440918,
-    "y": 177.0312786102295,
-    "z": "48050f50.e2132",
+    "x": 744.6904144287109,
+    "y": 187.0351848602295,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "1b896cda.b979e3"
+        "2fb6d9ed.49aab6"
       ]
     ]
   },
   {
-    "id": "1b896cda.b979e3",
+    "id": "2fb6d9ed.49aab6",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1014.3809585571289,
-    "y": 177.57134628295898,
-    "z": "48050f50.e2132",
+    "x": 993.0400085449219,
+    "y": 187.57525253295898,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "a706d238.291a"
+        "974bf0fe.dc4fc"
       ]
     ]
   },
   {
-    "id": "a706d238.291a",
+    "id": "974bf0fe.dc4fc",
     "type": "switchNode",
     "name": "switch vnfid found",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1168.4605560302734,
-    "y": 177.28142833709717,
-    "z": "48050f50.e2132",
+    "x": 1147.1196060180664,
+    "y": 187.28533458709717,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "5082e995.a70f58"
+        "82b55f94.090c5"
       ]
     ]
   },
   {
-    "id": "ea1b1425.d6abb8",
+    "id": "e03d76d9.cc3a98",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1462.0580673217773,
-    "y": 178.5817413330078,
-    "z": "48050f50.e2132",
+    "x": 1440.7171173095703,
+    "y": 188.5856475830078,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "65194b17.7753d4",
-        "65c6f7a.c67d608",
-        "47f60422.f643ac"
+        "dd0e8d25.544ad",
+        "d5fff7a1.3b1048",
+        "1fe66a57.7e4926"
       ]
     ]
   },
   {
-    "id": "5082e995.a70f58",
+    "id": "82b55f94.090c5",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1323.4125480651855,
-    "y": 178.1741075515747,
-    "z": "48050f50.e2132",
+    "x": 1302.0715980529785,
+    "y": 188.1780138015747,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "ea1b1425.d6abb8"
+        "e03d76d9.cc3a98"
       ]
     ]
   },
   {
-    "id": "65c6f7a.c67d608",
+    "id": "d5fff7a1.3b1048",
     "type": "set",
     "name": "set vnf-request-input.",
     "xml": "<set>\n<parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\n\n",
     "comments": "",
-    "x": 1703.3909225463867,
-    "y": 134.58180141448975,
-    "z": "48050f50.e2132",
+    "x": 1682.0499725341797,
+    "y": 144.58570766448975,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "65194b17.7753d4",
+    "id": "dd0e8d25.544ad",
     "type": "set",
     "name": "set tmp.vidx and ctx.vnf-data",
     "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",
     "comments": "",
-    "x": 1730.9446334838867,
-    "y": 87.92416572570801,
-    "z": "48050f50.e2132",
+    "x": 1709.6036834716797,
+    "y": 97.92807197570801,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "47f60422.f643ac",
+    "id": "1fe66a57.7e4926",
     "type": "call",
     "name": "call sdwan-get-device-param",
     "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1708.0313720703125,
-    "y": 197.03127193450928,
-    "z": "48050f50.e2132",
+    "x": 1686.6904220581055,
+    "y": 207.03517818450928,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       []
     ]
   },
   {
-    "id": "34088ab3.22cba6",
+    "id": "46c583fa.d0b40c",
     "type": "switchNode",
     "name": "switch tmp.vidx ",
     "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 697.03125,
-    "y": 238.03125,
-    "z": "48050f50.e2132",
+    "x": 675.690299987793,
+    "y": 248.03515625,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "f352fc21.fd854"
+        "47e07fa8.46bc3"
       ]
     ]
   },
   {
-    "id": "f352fc21.fd854",
+    "id": "47e07fa8.46bc3",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 844.4598922729492,
-    "y": 237.60266017913818,
-    "z": "48050f50.e2132",
+    "x": 823.1189422607422,
+    "y": 247.60656642913818,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       [
-        "d74e2e0c.835e1"
+        "b8303d6e.293f7"
       ]
     ]
   },
   {
-    "id": "d74e2e0c.835e1",
+    "id": "b8303d6e.293f7",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 993.8886184692383,
-    "y": 238.74557781219482,
-    "z": "48050f50.e2132",
+    "x": 972.5476684570312,
+    "y": 248.74948406219482,
+    "z": "c21457e5.a6cbc8",
     "wires": []
   },
   {
-    "id": "96fd10aa.3117f",
+    "id": "139f4e2.66d6eb2",
     "type": "execute",
     "name": "execute Properties",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n    <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",
     "comments": "",
     "outputs": 1,
-    "x": 692.03125,
-    "y": 334.03125,
-    "z": "48050f50.e2132",
+    "x": 670.690299987793,
+    "y": 344.03515625,
+    "z": "c21457e5.a6cbc8",
     "wires": [
       []
     ]
index 034f2d5..d94d34d 100644 (file)
 [
   {
-    "id": "5e3d5340.60ff6c",
-    "type": "comment",
-    "name": "sdwan-vnf-topology-operation-device-activate",
-    "info": "",
-    "comments": "",
-    "x": 508.3447952270508,
-    "y": 51,
-    "z": "68e83c1d.51ded4",
-    "wires": []
-  },
-  {
-    "id": "98a7b4d5.abb6c8",
+    "id": "9cb483d7.ff8df",
     "type": "service-logic",
-    "name": "GENERIC-RESOURCE-API 1.2.1-SNAPSHOT",
+    "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
-    "version": "1.2.1-SNAPSHOT",
+    "version": "${project.version}",
     "comments": "",
-    "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='1.2.1-SNAPSHOT'>",
+    "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 188.28570556640625,
-    "y": 122.0002670288086,
-    "z": "68e83c1d.51ded4",
+    "x": 183.78570556640625,
+    "y": 145.0002658367157,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "6e6cf252.6d76ac"
+        "82081d1c.b4352"
       ]
     ]
   },
   {
-    "id": "b122f38a.d6d66",
+    "id": "a3a5e35d.08a8b",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 109,
-    "y": 59.76215744018555,
-    "z": "68e83c1d.51ded4",
+    "x": 104.5,
+    "y": 82.76215624809265,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "98a7b4d5.abb6c8"
+        "9cb483d7.ff8df"
       ]
     ]
   },
   {
-    "id": "acf9046.9fdadf8",
+    "id": "194cf25c.9d64be",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 189.66666412353516,
-    "y": 383.4288272857666,
-    "z": "68e83c1d.51ded4",
+    "x": 185.16666412353516,
+    "y": 406.4288260936737,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "fadd626.2db7aa",
-        "3d1725f.b682bda",
-        "973ba2fa.09281",
-        "a8ec1f34.2d716",
-        "1a8342ca.6c718d",
-        "2f458da.dde6872",
-        "5b27914d.aaeea",
-        "14b0db80.805625",
-        "60a129a0.bbdd58",
-        "b0ca4039.10bf1",
-        "48942c51.646f94",
-        "f06f6e0f.f753c"
+        "12b7db37.f7ff25",
+        "94ec7644.8f3208",
+        "d463d74.bf70428",
+        "ade80aa2.c72f18",
+        "d76d180.81a43e8",
+        "d4716c92.1b3cb",
+        "1202a9f6.764af6",
+        "50fb4440.68b56c",
+        "35434662.4bcfda",
+        "b21ec7e.52c2938",
+        "93472449.69d418",
+        "9bf97976.fa1928"
       ]
     ]
   },
   {
-    "id": "3d1725f.b682bda",
+    "id": "94ec7644.8f3208",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 570.3336067199707,
-    "y": 1005.0958871841431,
-    "z": "68e83c1d.51ded4",
+    "x": 565.8336067199707,
+    "y": 1028.0958859920502,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "fadd626.2db7aa",
+    "id": "12b7db37.f7ff25",
     "type": "set",
     "name": "set vnf-level-oper-status to Created",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
     "comments": "",
-    "x": 659.8136177062988,
-    "y": 737.4329919815063,
-    "z": "68e83c1d.51ded4",
+    "x": 655.3136177062988,
+    "y": 760.4329907894135,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "a8ec1f34.2d716",
+    "id": "ade80aa2.c72f18",
     "type": "set",
     "name": "copy input data to service data",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />",
     "comments": "",
-    "x": 637.6668090820312,
-    "y": 793.4291677474976,
-    "z": "68e83c1d.51ded4",
+    "x": 633.1668090820312,
+    "y": 816.4291665554047,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "3cb5e097.323b3",
+    "id": "bf289ee9.17eee",
     "type": "save",
     "name": "save deviceInstance configuration in AAI",
     "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n      key='device.id = $prop.vnf-id' >\n<parameter name='id' value='`$prop.vnf-id`' />\n<parameter name='esn' value='`$prop.device.name`' />\n<parameter name='name' value=\"true\" />\n<parameter name='description' value='`$prop.device.description`' />\n<parameter name='vendor' value='`$prop.device.vendor`' />\n<parameter name='class' value='`$prop.device.class`' />\n<parameter name='type' value='`$prop.device.deviceModel`' />\n<parameter name='version' value='`$prop.device.version`' />\n<parameter name='system-ip' value='`$prop.device.systemIp`' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` \" />\n",
     "comments": "",
     "outputs": 1,
-    "x": 1116.0007019042969,
-    "y": 810.3184747695923,
-    "z": "68e83c1d.51ded4",
+    "x": 1111.5007019042969,
+    "y": 833.3184735774994,
+    "z": "f234e69c.c27828",
     "wires": [
       []
     ]
   },
   {
-    "id": "6e6cf252.6d76ac",
+    "id": "82081d1c.b4352",
     "type": "method",
     "name": "method sdwan-vnf-topology-operation-device-create",
     "xml": "<method rpc='sdwan-vnf-topology-operation-device-create' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 200,
-    "y": 216.3484992980957,
-    "z": "68e83c1d.51ded4",
+    "x": 195.5,
+    "y": 239.3484981060028,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "acf9046.9fdadf8"
+        "194cf25c.9d64be"
       ]
     ]
   },
   {
-    "id": "973ba2fa.09281",
+    "id": "d463d74.bf70428",
     "type": "set",
     "name": "set vnfId and vnf-object-path",
     "xml": "<set>\n<parameter name='vnfId' value='`$prop.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` \" />",
     "comments": "",
-    "x": 641.0002593994141,
-    "y": 686.348804473877,
-    "z": "68e83c1d.51ded4",
+    "x": 636.5002593994141,
+    "y": 709.3488032817841,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "1a8342ca.6c718d",
+    "id": "b128ad93.6f9ac",
     "type": "set",
     "name": "set deviceId to service data",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-id`' />\n",
     "comments": "",
-    "x": 647.0004119873047,
-    "y": 638.3490514755249,
-    "z": "68e83c1d.51ded4",
+    "x": 642.5004119873047,
+    "y": 661.349050283432,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "11b9f4bc.54a6db",
+    "id": "de11064d.94a5d8",
     "type": "comment",
     "name": "AAI resource need to update",
     "info": "",
     "comments": "",
-    "x": 962.0003051757812,
-    "y": 764.3489141464233,
-    "z": "68e83c1d.51ded4",
+    "x": 957.5003051757812,
+    "y": 787.3489129543304,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "57ec6080.aef67",
+    "id": "4f128f3f.350cf",
     "type": "execute",
     "name": "execute generate-vnf-id",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.vnf-id\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1146.0006866455078,
-    "y": 151.3486099243164,
-    "z": "68e83c1d.51ded4",
+    "x": 1141.5006866455078,
+    "y": 174.3486087322235,
+    "z": "f234e69c.c27828",
     "wires": [
       []
     ]
   },
   {
-    "id": "f5373c70.1c094",
+    "id": "9bf97976.fa1928",
     "type": "save",
     "name": "save service relationship in AAI",
     "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \n      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id \n         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id \n         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"device\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/devices/device/' + $prop.vnf-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"device.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.vnf-id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 628.000560760498,
-    "y": 960.0957889556885,
-    "z": "68e83c1d.51ded4",
+    "x": 623.500560760498,
+    "y": 983.0957877635956,
+    "z": "f234e69c.c27828",
     "wires": [
       []
     ]
   },
   {
-    "id": "2f458da.dde6872",
+    "id": "d76d180.81a43e8",
     "type": "switchNode",
     "name": "switch vnf-id",
     "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 610.0001068115234,
-    "y": 255.0000286102295,
-    "z": "68e83c1d.51ded4",
+    "x": 605.5001068115234,
+    "y": 278.0000274181366,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "96bd2791.9be248",
-        "67087b1d.5c3fb4"
+        "621f97e2.b689f8",
+        "786ad46d.cda56c"
       ]
     ]
   },
   {
-    "id": "96bd2791.9be248",
+    "id": "621f97e2.b689f8",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>",
     "comments": "",
     "outputs": 1,
-    "x": 751.0001106262207,
-    "y": 230.00002002716064,
-    "z": "68e83c1d.51ded4",
+    "x": 746.5001106262207,
+    "y": 253.00001883506775,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "17f3f6fd.04e999"
+        "ef09f155.972b9"
       ]
     ]
   },
   {
-    "id": "17f3f6fd.04e999",
+    "id": "ef09f155.972b9",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 899.0002136230469,
-    "y": 166.0000123977661,
-    "z": "68e83c1d.51ded4",
+    "x": 894.5002136230469,
+    "y": 189.00001120567322,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "57ec6080.aef67",
-        "3fbf12e1.7d984e",
-        "1f9131ce.7814de"
+        "4f128f3f.350cf",
+        "e345eb47.17b7c8",
+        "82623d50.b5d47"
       ]
     ]
   },
   {
-    "id": "67087b1d.5c3fb4",
+    "id": "786ad46d.cda56c",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 747.5312881469727,
-    "y": 290.03125762939453,
-    "z": "68e83c1d.51ded4",
+    "x": 743.0312881469727,
+    "y": 313.03125643730164,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "36044171.bb341e"
+        "b8aff249.035f2"
       ]
     ]
   },
   {
-    "id": "71433e4d.c21fc",
+    "id": "8bf27ffe.7192e",
     "type": "set",
     "name": "set prop.vnf-id",
     "xml": "<set>\n<parameter name='prop.vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n",
     "comments": "",
-    "x": 1062.531982421875,
-    "y": 359.03163146972656,
-    "z": "68e83c1d.51ded4",
+    "x": 1082.0320434570312,
+    "y": 392.03162956237793,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "36044171.bb341e",
+    "id": "b8aff249.035f2",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 898.5317077636719,
-    "y": 322.03137969970703,
-    "z": "68e83c1d.51ded4",
+    "x": 894.0317077636719,
+    "y": 345.03137850761414,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "71433e4d.c21fc",
-        "1f9131ce.7814de",
-        "ded55567.2a8678"
+        "8bf27ffe.7192e",
+        "82623d50.b5d47",
+        "ac207b07.0b4de8"
       ]
     ]
   },
   {
-    "id": "5b27914d.aaeea",
+    "id": "d4716c92.1b3cb",
     "type": "set",
     "name": "set prop.sdncCreate=false",
     "xml": "<set>\n<parameter name='prop.sdncCreate' value='false' />\n",
     "comments": "",
-    "x": 684.5313568115234,
-    "y": 146.03125190734863,
-    "z": "68e83c1d.51ded4",
+    "x": 680.0313568115234,
+    "y": 169.03125071525574,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "14b0db80.805625",
+    "id": "1202a9f6.764af6",
     "type": "switchNode",
     "name": "switch prop.sdncCreate",
     "xml": "<switch test='`$prop.sdncCreate`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 607.0316925048828,
-    "y": 840.0316715240479,
-    "z": "68e83c1d.51ded4",
+    "x": 602.5316925048828,
+    "y": 863.031670331955,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "f49b5933.b5d218",
-        "b6ead02e.a5302"
+        "a65c4106.c8fe7",
+        "b49509b2.10c3c8"
       ]
     ]
   },
   {
-    "id": "f49b5933.b5d218",
+    "id": "a65c4106.c8fe7",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 853.0314636230469,
-    "y": 810.5314083099365,
-    "z": "68e83c1d.51ded4",
+    "x": 848.5314636230469,
+    "y": 833.5314071178436,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "3cb5e097.323b3"
+        "bf289ee9.17eee"
       ]
     ]
   },
   {
-    "id": "b6ead02e.a5302",
+    "id": "b49509b2.10c3c8",
     "type": "outcomeTrue",
     "name": "false",
     "xml": "<outcome value='false'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 854.5314483642578,
-    "y": 865.5314226150513,
-    "z": "68e83c1d.51ded4",
+    "x": 850.0314483642578,
+    "y": 888.5314214229584,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "689dbbbf.19b784"
+        "593b4cfd.497904"
       ]
     ]
   },
   {
-    "id": "3fbf12e1.7d984e",
+    "id": "e345eb47.17b7c8",
     "type": "set",
     "name": "set prop.updateAAIsdncCreate",
     "xml": "<set>\n<parameter name='prop.sdncCreate' value='true' />\n",
     "comments": "",
-    "x": 1163.5317764282227,
-    "y": 111.03133583068848,
-    "z": "68e83c1d.51ded4",
+    "x": 1159.0317764282227,
+    "y": 134.03133463859558,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "60a129a0.bbdd58",
+    "id": "50fb4440.68b56c",
     "type": "for",
     "name": "for loop idx - VNF input parameters",
     "xml": "<for index=\"idx\" start=\"0\" end=\"`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 672.5314331054688,
-    "y": 440.031286239624,
-    "z": "68e83c1d.51ded4",
+    "x": 668.0314331054688,
+    "y": 463.0312850475311,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "ea444b8d.2a7e58"
+        "d8830e39.7254c"
       ]
     ]
   },
   {
-    "id": "ea444b8d.2a7e58",
+    "id": "d8830e39.7254c",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 887.3097763061523,
-    "y": 437.58687019348145,
-    "z": "68e83c1d.51ded4",
+    "x": 882.8097763061523,
+    "y": 460.58686900138855,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "5cf3f0ff.4ce19",
-        "c56fa091.a24ed"
+        "6cb4a749.692908",
+        "24244ebf.8f5572"
       ]
     ]
   },
   {
-    "id": "c56fa091.a24ed",
+    "id": "24244ebf.8f5572",
     "type": "set",
     "name": "set parameterName",
     "xml": "<set>\n<parameter name=\"`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",
     "comments": "",
-    "x": 1053.0104064941406,
-    "y": 452.3351249694824,
-    "z": "68e83c1d.51ded4",
+    "x": 1048.5104064941406,
+    "y": 475.3351237773895,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "5cf3f0ff.4ce19",
+    "id": "6cb4a749.692908",
     "type": "execute",
     "name": "execute split parameterName",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1083.5659790039062,
-    "y": 415.3350086212158,
-    "z": "68e83c1d.51ded4",
+    "x": 1079.0659790039062,
+    "y": 438.3350074291229,
+    "z": "f234e69c.c27828",
     "wires": [
       []
     ]
   },
   {
-    "id": "b0ca4039.10bf1",
+    "id": "35434662.4bcfda",
     "type": "set",
     "name": "set vnf-request-input.",
     "xml": "<set>\n<parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />\n",
     "comments": "",
-    "x": 634.5310516357422,
-    "y": 514.3560009002686,
-    "z": "68e83c1d.51ded4",
+    "x": 630.0310516357422,
+    "y": 537.3559997081757,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "48942c51.646f94",
+    "id": "b21ec7e.52c2938",
     "type": "call",
     "name": "call sdwan-get-device-param",
     "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 659.5314331054688,
-    "y": 546.3561611175537,
-    "z": "68e83c1d.51ded4",
+    "x": 655.0314331054688,
+    "y": 569.3561599254608,
+    "z": "f234e69c.c27828",
     "wires": [
       []
     ]
   },
   {
-    "id": "76da7c24.a3ef74",
+    "id": "bcf057ee.ac0fd8",
     "type": "comment",
     "name": "if SO provide vnf-id use that else create new",
     "info": "",
     "comments": "",
-    "x": 701.5312805175781,
-    "y": 200.0312614440918,
-    "z": "68e83c1d.51ded4",
+    "x": 697.0312805175781,
+    "y": 223.0312602519989,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "1f9131ce.7814de",
+    "id": "82623d50.b5d47",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1107.0317840576172,
-    "y": 248.0313549041748,
-    "z": "68e83c1d.51ded4",
+    "x": 1102.5317840576172,
+    "y": 271.0313537120819,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "3b0d82e1.8f158e",
-        "2e1a03e.c5a90fc"
+        "d5e68c18.6d168",
+        "2bfd5f0a.c7681"
       ]
     ]
   },
   {
-    "id": "3b0d82e1.8f158e",
+    "id": "d5e68c18.6d168",
     "type": "switchNode",
     "name": "switch service-data.vnfs.vnf_length",
     "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1351.0316734313965,
-    "y": 205.0313482284546,
-    "z": "68e83c1d.51ded4",
+    "x": 1346.5316734313965,
+    "y": 228.0313470363617,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "975a1f09.2f8c8",
-        "a0a50419.1fe858"
+        "f59d1f3f.83f78",
+        "475c8f31.8dce6"
       ]
     ]
   },
   {
-    "id": "975a1f09.2f8c8",
+    "id": "f59d1f3f.83f78",
     "type": "other",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1564.7460556030273,
-    "y": 188.1741189956665,
-    "z": "68e83c1d.51ded4",
+    "x": 1560.2460556030273,
+    "y": 211.1741178035736,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "3e9891d0.1834fe"
+        "b1cc315c.65ade"
       ]
     ]
   },
   {
-    "id": "3e9891d0.1834fe",
+    "id": "b1cc315c.65ade",
     "type": "set",
     "name": "set vnf-index=0",
     "xml": "<set>\n<parameter name='vnf-index' value='0' />\n",
     "comments": "",
-    "x": 1713.0317039489746,
-    "y": 185.17417335510254,
-    "z": "68e83c1d.51ded4",
+    "x": 1708.5317039489746,
+    "y": 208.17417216300964,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "a0a50419.1fe858",
+    "id": "475c8f31.8dce6",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1568.1745529174805,
-    "y": 233.45991039276123,
-    "z": "68e83c1d.51ded4",
+    "x": 1563.6745529174805,
+    "y": 256.45990920066833,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "bfe1f8cb.5f4108"
+        "f950bc3f.5973b"
       ]
     ]
   },
   {
-    "id": "bfe1f8cb.5f4108",
+    "id": "f950bc3f.5973b",
     "type": "set",
     "name": "set vnf-index = vnf_length",
     "xml": "<set>\n<parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\n",
     "comments": "",
-    "x": 1752.0322952270508,
-    "y": 233.74567890167236,
-    "z": "68e83c1d.51ded4",
+    "x": 1747.5322952270508,
+    "y": 256.74567770957947,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "2e1a03e.c5a90fc",
+    "id": "2bfd5f0a.c7681",
     "type": "set",
     "name": "set new vnf_length",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\n",
     "comments": "",
-    "x": 1303.0317344665527,
-    "y": 240.031343460083,
-    "z": "68e83c1d.51ded4",
+    "x": 1293.5318145751953,
+    "y": 276.0313377380371,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "689dbbbf.19b784",
+    "id": "593b4cfd.497904",
     "type": "save",
     "name": "update deviceInstance configuration in AAI",
     "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n      key='device.id = $prop.vnf-id' >\n<parameter name='id' value='`$prop.vnf-id`' />\n<parameter name='esn' value='`$prop.device.name`' />\n<parameter name='name' value=\"true\" />\n<parameter name='description' value='`$prop.device.description`' />\n<parameter name='vendor' value='`$prop.device.vendor`' />\n<parameter name='class' value='`$prop.device.class`' />\n<parameter name='type' value='`$prop.device.deviceModel`' />\n<parameter name='version' value='`$prop.device.version`' />\n<parameter name='system-ip' value='`$prop.device.systemIp`' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` \" />\n",
     "comments": "",
     "outputs": 1,
-    "x": 1108.0312805175781,
-    "y": 868.0312757492065,
-    "z": "68e83c1d.51ded4",
+    "x": 1103.5312805175781,
+    "y": 891.0312745571136,
+    "z": "f234e69c.c27828",
     "wires": [
       []
     ]
   },
   {
-    "id": "ded55567.2a8678",
+    "id": "ac207b07.0b4de8",
     "type": "for",
     "name": "for each existing VNF",
     "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1114.0313186645508,
-    "y": 320.03128814697266,
-    "z": "68e83c1d.51ded4",
+    "x": 1109.5313186645508,
+    "y": 343.03128695487976,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "5b9cdd8f.43fa54"
+        "d4f21952.f2dd68"
       ]
     ]
   },
   {
-    "id": "e638f4a.543e508",
+    "id": "4fb64c02.89a0b4",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1650.6031284332275,
-    "y": 368.17424297332764,
-    "z": "68e83c1d.51ded4",
+    "x": 1646.1031284332275,
+    "y": 391.17424178123474,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "584781cc.b608c"
+        "1752f719.1e90a9"
       ]
     ]
   },
   {
-    "id": "584781cc.b608c",
+    "id": "1752f719.1e90a9",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id\n      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`\" />\n",
     "comments": "",
-    "x": 1789.1744861602783,
-    "y": 368.17420387268066,
-    "z": "68e83c1d.51ded4",
+    "x": 1784.6744861602783,
+    "y": 391.17420268058777,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "e89efb32.eef4a8",
+    "id": "1b529b77.5e22e5",
     "type": "comment",
     "name": "make sure this vnf-id doesn't exist already",
     "info": "",
     "comments": "",
-    "x": 1744.459602355957,
-    "y": 497.1741261482239,
-    "z": "68e83c1d.51ded4",
+    "x": 1739.959602355957,
+    "y": 520.174124956131,
+    "z": "f234e69c.c27828",
     "wires": []
   },
   {
-    "id": "5b9cdd8f.43fa54",
+    "id": "d4f21952.f2dd68",
     "type": "switchNode",
     "name": "switch vnf-information.vnf-id == service-data.vnfs.vnf[].vnf-id",
     "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1453.0313262939453,
-    "y": 321.0312910079956,
-    "z": "68e83c1d.51ded4",
+    "x": 1448.5313262939453,
+    "y": 344.0312898159027,
+    "z": "f234e69c.c27828",
     "wires": [
       [
-        "e638f4a.543e508"
+        "4fb64c02.89a0b4"
       ]
     ]
   },
   {
-    "id": "f06f6e0f.f753c",
+    "id": "93472449.69d418",
     "type": "set",
-    "name": "set deviceId to service data",
+    "name": "set sdncCreate to service data",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value=\"sdncCreate\" />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.sdncCreate`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\n",
     "comments": "",
-    "x": 621.0313682556152,
-    "y": 901.0312786102295,
-    "z": "68e83c1d.51ded4",
+    "x": 616.5313682556152,
+    "y": 924.0312774181366,
+    "z": "f234e69c.c27828",
     "wires": []
   }
-]
\ No newline at end of file
+]
index b6fa82f..fd716bc 100644 (file)
@@ -1,20 +1,20 @@
 [
   {
-    "id": "9c3e9355.a9b98",
+    "id": "28277ffa.638ba",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 211,
-    "y": 76,
-    "z": "73283ddb.ad1024",
+    "x": 139.57137298583984,
+    "y": 52.00390625,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "ce33d12b.fedca"
+        "4a59deb7.c7457"
       ]
     ]
   },
   {
-    "id": "ce33d12b.fedca",
+    "id": "4a59deb7.c7457",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 286.28570556640625,
-    "y": 116.23811149597168,
-    "z": "73283ddb.ad1024",
+    "x": 214.8570785522461,
+    "y": 92.24201774597168,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "5efe4e61.39e9f"
+        "4241d8c0.16daf8"
       ]
     ]
   },
   {
-    "id": "5efe4e61.39e9f",
+    "id": "4241d8c0.16daf8",
     "type": "method",
     "name": "method sdwan-vnf-topology-operation-device-deactivate",
     "xml": "<method rpc='sdwan-vnf-topology-operation-device-deactivate' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 279.42862701416016,
-    "y": 155.9999942779541,
-    "z": "73283ddb.ad1024",
+    "x": 208,
+    "y": 132.0039005279541,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "dd73ee5c.ac516"
+        "e1131c3b.26e86"
       ]
     ]
   },
   {
-    "id": "dd73ee5c.ac516",
+    "id": "e1131c3b.26e86",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 304.1667289733887,
-    "y": 346.69354248046875,
-    "z": "73283ddb.ad1024",
+    "x": 232.73810195922852,
+    "y": 322.69744873046875,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "e4601a05.8a4688",
-        "9a1b232.90c38e",
-        "73fbd09e.9edc3",
-        "3e61d24c.5cc44e",
-        "1587e9e4.574f16",
-        "3781959e.04703a",
-        "2a98908a.1304b",
-        "7025602.36919a",
-        "f4083614.bed898",
-        "f8b84934.c5f1e8",
-        "e2ef718b.f3132",
-        "274a3fd3.76447",
-        "5ee6b514.0ecf0c"
+        "f0fdfb5e.5f4f98",
+        "f90e57ef.2882a8",
+        "7e2abc70.e22d84",
+        "c34a88b2.04b7e8",
+        "270267d5.5e26e8",
+        "58a16fad.ea89b",
+        "90a0a7b1.52f328",
+        "f53c993f.c19e48",
+        "30405ea5.d01402",
+        "6f2e8f06.6beb6",
+        "8a59eab6.8ca808",
+        "fd82888d.de41f8",
+        "86982181.80824"
       ]
     ]
   },
   {
-    "id": "e4601a05.8a4688",
+    "id": "f0fdfb5e.5f4f98",
     "type": "set",
     "name": "set vnf in service-data",
-    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />",
+    "xml": "<set>\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />",
     "comments": "",
-    "x": 560.0000762939453,
-    "y": 769.0002317428589,
-    "z": "73283ddb.ad1024",
+    "x": 488.57144927978516,
+    "y": 745.0041379928589,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "9a1b232.90c38e",
+    "id": "f90e57ef.2882a8",
     "type": "set",
     "name": "set vnfId and vnf-object-path",
     "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",
     "comments": "",
-    "x": 581.5556182861328,
-    "y": 811.2224426269531,
-    "z": "73283ddb.ad1024",
+    "x": 510.12699127197266,
+    "y": 787.2263488769531,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "1587e9e4.574f16",
+    "id": "c34a88b2.04b7e8",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 540.3334503173828,
-    "y": 973.7777910232544,
-    "z": "73283ddb.ad1024",
+    "x": 468.90482330322266,
+    "y": 949.7816972732544,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "73fbd09e.9edc3",
+    "id": "86982181.80824",
     "type": "update",
     "name": "update SDWAN DeviceInstance status to AAI",
     "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n      key='device.id = $vnf-topology-operation-input.vnf-information.vnf-id' >\n<parameter name='id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='operational-status' value='PendingDelete' />",
     "comments": "",
     "outputs": 1,
-    "x": 630.6630401611328,
-    "y": 914.1478223800659,
-    "z": "73283ddb.ad1024",
+    "x": 559.2344131469727,
+    "y": 890.1517286300659,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       []
     ]
   },
   {
-    "id": "3e61d24c.5cc44e",
+    "id": "7e2abc70.e22d84",
     "type": "set",
     "name": "set vnf-level-oper-status to PendingDelete",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
     "comments": "",
-    "x": 620.0001068115234,
-    "y": 868.0001993179321,
-    "z": "73283ddb.ad1024",
+    "x": 548.5714797973633,
+    "y": 844.0041055679321,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "e2ef718b.f3132",
+    "id": "6f2e8f06.6beb6",
     "type": "get-resource",
     "name": "get-resource esr-thirdparty-sdnc",
-    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 586.5555725097656,
-    "y": 395.99996280670166,
-    "z": "73283ddb.ad1024",
+    "x": 515.1269454956055,
+    "y": 372.00386905670166,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "5f923fb2.e6dac",
-        "d9f1fd79.ec60b",
-        "917e23b.f000ae"
+        "f6a1b10b.feba7",
+        "3f65fa89.adee86",
+        "78d7b0ce.bc9f4"
       ]
     ]
   },
   {
-    "id": "5f923fb2.e6dac",
+    "id": "f6a1b10b.feba7",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 813.5555801391602,
-    "y": 323.99996185302734,
-    "z": "73283ddb.ad1024",
+    "x": 742.126953125,
+    "y": 300.00386810302734,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "fec9d567.919a68"
+        "7f8f918f.20ef"
       ]
     ]
   },
   {
-    "id": "fec9d567.919a68",
+    "id": "7f8f918f.20ef",
     "type": "set",
     "name": "set controller data",
     "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
     "comments": "",
-    "x": 1012.0556945800781,
-    "y": 314.999960899353,
-    "z": "73283ddb.ad1024",
+    "x": 940.627067565918,
+    "y": 291.003867149353,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "d9f1fd79.ec60b",
+    "id": "3f65fa89.adee86",
     "type": "not-found",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 816.0465087890625,
-    "y": 356.573974609375,
-    "z": "73283ddb.ad1024",
+    "x": 744.6178817749023,
+    "y": 332.577880859375,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "8773c32.44abd4"
+        "d39e70d3.4d393"
       ]
     ]
   },
   {
-    "id": "8773c32.44abd4",
+    "id": "d39e70d3.4d393",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
     "comments": "",
-    "x": 992.617977142334,
-    "y": 353.85972690582275,
-    "z": "73283ddb.ad1024",
+    "x": 921.1893501281738,
+    "y": 329.86363315582275,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "917e23b.f000ae",
+    "id": "78d7b0ce.bc9f4",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 808.3795166015625,
-    "y": 397.90728759765625,
-    "z": "73283ddb.ad1024",
+    "x": 736.9508895874023,
+    "y": 373.91119384765625,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "639cc54c.25461c"
+        "9d02040e.b8d128"
       ]
     ]
   },
   {
-    "id": "639cc54c.25461c",
+    "id": "9d02040e.b8d128",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
     "comments": "",
-    "x": 996.1520729064941,
-    "y": 393.34648036956787,
-    "z": "73283ddb.ad1024",
+    "x": 924.723445892334,
+    "y": 369.35038661956787,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "274a3fd3.76447",
+    "id": "8a59eab6.8ca808",
     "type": "execute",
     "name": "execute RestApiCallNode Get token",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-device.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
     "comments": "",
     "outputs": 1,
-    "x": 609.4442253112793,
-    "y": 462.1111717224121,
-    "z": "73283ddb.ad1024",
+    "x": 538.0155982971191,
+    "y": 438.1150779724121,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "8dc1f56a.c9edd8",
-        "2d6a0c7e.fec4b4"
+        "26f9897c.dede86",
+        "de10be74.3d175"
       ]
     ]
   },
   {
-    "id": "8dc1f56a.c9edd8",
+    "id": "26f9897c.dede86",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 844.4442253112793,
-    "y": 440.1111717224121,
-    "z": "73283ddb.ad1024",
+    "x": 773.0155982971191,
+    "y": 416.1150779724121,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "cafcbbb3.279d28"
+        "2cf72494.6f564c"
       ]
     ]
   },
   {
-    "id": "2d6a0c7e.fec4b4",
+    "id": "de10be74.3d175",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 836.6942253112793,
-    "y": 493.75405502319336,
-    "z": "73283ddb.ad1024",
+    "x": 765.2655982971191,
+    "y": 469.75796127319336,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "2bb735a3.ef2caa"
+        "af0aa9cf.0f24c8"
       ]
     ]
   },
   {
-    "id": "cafcbbb3.279d28",
+    "id": "2cf72494.6f564c",
     "type": "set",
     "name": "set token-id",
     "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
     "comments": "",
-    "x": 998.4442253112793,
-    "y": 441.1111717224121,
-    "z": "73283ddb.ad1024",
+    "x": 927.0155982971191,
+    "y": 417.1150779724121,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "11e446ee.b59549",
+    "id": "d3b082c5.69f01",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 945.5554428100586,
-    "y": 677.1112051010132,
-    "z": "73283ddb.ad1024",
+    "x": 874.1268157958984,
+    "y": 653.1151113510132,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "edc154b6.909958"
+        "99768bda.9cb4d8"
       ]
     ]
   },
   {
-    "id": "edc154b6.909958",
+    "id": "99768bda.9cb4d8",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "comments": "",
     "outputs": 1,
-    "x": 1116.6664581298828,
-    "y": 675.8890256881714,
-    "z": "73283ddb.ad1024",
+    "x": 1045.2378311157227,
+    "y": 651.8929319381714,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       []
     ]
   },
   {
-    "id": "2bb735a3.ef2caa",
+    "id": "af0aa9cf.0f24c8",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 984.5552673339844,
-    "y": 490.00000381469727,
-    "z": "73283ddb.ad1024",
+    "x": 913.1266403198242,
+    "y": 466.00391006469727,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       []
     ]
   },
   {
-    "id": "d5f90150.5efad",
+    "id": "2e0a17d4.eed478",
     "type": "comment",
     "name": "Do Nothing",
     "info": "",
     "comments": "",
-    "x": 1120.1108411153155,
-    "y": 488.88887956407336,
-    "z": "73283ddb.ad1024",
+    "x": 1048.6822141011553,
+    "y": 464.89278581407336,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "9375b3d1.4ccfc",
+    "id": "333f615c.44144e",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 942.1109962463379,
-    "y": 730.4444913864136,
-    "z": "73283ddb.ad1024",
+    "x": 870.6823692321777,
+    "y": 706.4483976364136,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "4a4ccb7.2656134"
+        "d0bb3a12.db6658"
       ]
     ]
   },
   {
-    "id": "4a4ccb7.2656134",
+    "id": "d0bb3a12.db6658",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",
     "comments": "",
-    "x": 1087.110996246338,
-    "y": 733.4444913864136,
-    "z": "73283ddb.ad1024",
+    "x": 1015.6823692321777,
+    "y": 709.4483976364136,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "4f2b12fc.8ccc3c",
+    "id": "d3422f84.faf5e",
     "type": "comment",
     "name": "deviceId need to provide here?",
     "info": "",
     "comments": "",
-    "x": 581.3333320617676,
-    "y": 528,
-    "z": "73283ddb.ad1024",
+    "x": 509.9047050476074,
+    "y": 504.00390625,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "f5a0eb00.de7588",
+    "id": "f9274c25.d5eea",
     "type": "comment",
     "name": "tmp.thirdparty-sdnc-id to be hardcoded here?",
     "info": "",
     "comments": "",
-    "x": 635.333366394043,
-    "y": 315.0000591278076,
-    "z": "73283ddb.ad1024",
+    "x": 563.9047393798828,
+    "y": 291.0039653778076,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "a4f6705d.1d73",
+    "id": "4a930baa.676754",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 875.3332824707031,
-    "y": 1718.3333358764648,
-    "z": "73283ddb.ad1024",
+    "x": 803.904655456543,
+    "y": 1694.3372421264648,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "3781959e.04703a",
+    "id": "270267d5.5e26e8",
     "type": "for",
     "name": "for vidx..service-data.vnfs.vnf_length[]",
     "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 619.03125,
-    "y": 244.03125,
-    "z": "73283ddb.ad1024",
+    "x": 547.6026229858398,
+    "y": 220.03515625,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "a8d53377.9812d"
+        "728ab8ba.7e8bd8"
       ]
     ]
   },
   {
-    "id": "a8d53377.9812d",
+    "id": "728ab8ba.7e8bd8",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 867.3808441162109,
-    "y": 244.5713176727295,
-    "z": "73283ddb.ad1024",
+    "x": 795.9522171020508,
+    "y": 220.5752239227295,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "80a46b1e.d041d8"
+        "905ea52f.02efa8"
       ]
     ]
   },
   {
-    "id": "80a46b1e.d041d8",
+    "id": "905ea52f.02efa8",
     "type": "switchNode",
     "name": "switch vnfid found",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1021.4604415893555,
-    "y": 244.28139972686768,
-    "z": "73283ddb.ad1024",
+    "x": 950.0318145751953,
+    "y": 220.28530597686768,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "42dc4574.ff70ac"
+        "7e04ad09.ef3004"
       ]
     ]
   },
   {
-    "id": "89ce8e98.fff87",
+    "id": "873538e6.7c6cb8",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1315.0579528808594,
-    "y": 245.58171272277832,
-    "z": "73283ddb.ad1024",
+    "x": 1243.6293258666992,
+    "y": 221.58561897277832,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "68c86c18.1fc774",
-        "3e5b1306.9b698c",
-        "50ffba36.d6fac4"
+        "3c1b116b.de0f4e",
+        "2734bda2.1de7a2",
+        "79d2ab5b.7f7124"
       ]
     ]
   },
   {
-    "id": "42dc4574.ff70ac",
+    "id": "7e04ad09.ef3004",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1176.4124336242676,
-    "y": 245.17407894134521,
-    "z": "73283ddb.ad1024",
+    "x": 1104.9838066101074,
+    "y": 221.17798519134521,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "89ce8e98.fff87"
+        "873538e6.7c6cb8"
       ]
     ]
   },
   {
-    "id": "3e5b1306.9b698c",
+    "id": "2734bda2.1de7a2",
     "type": "set",
     "name": "set vnf-request-input.",
     "xml": "<set>\n<parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\n\n",
     "comments": "",
-    "x": 1556.3908081054688,
-    "y": 201.58177280426025,
-    "z": "73283ddb.ad1024",
+    "x": 1484.9621810913086,
+    "y": 177.58567905426025,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "68c86c18.1fc774",
+    "id": "3c1b116b.de0f4e",
     "type": "set",
     "name": "set tmp.vidx and ctx.vnf-data",
     "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",
     "comments": "",
-    "x": 1583.9445190429688,
-    "y": 154.92413711547852,
-    "z": "73283ddb.ad1024",
+    "x": 1512.5158920288086,
+    "y": 130.92804336547852,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "50ffba36.d6fac4",
+    "id": "79d2ab5b.7f7124",
     "type": "call",
     "name": "call sdwan-get-device-param",
     "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1561.0312576293945,
-    "y": 264.0312433242798,
-    "z": "73283ddb.ad1024",
+    "x": 1489.6026306152344,
+    "y": 240.03514957427979,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       []
     ]
   },
   {
-    "id": "2a98908a.1304b",
+    "id": "58a16fad.ea89b",
     "type": "switchNode",
     "name": "switch tmp.vidx ",
     "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 536.03125,
-    "y": 286.03125,
-    "z": "73283ddb.ad1024",
+    "x": 464.60262298583984,
+    "y": 262.03515625,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "ebb7bd09.45a41"
+        "dde49dff.66ec"
       ]
     ]
   },
   {
-    "id": "ebb7bd09.45a41",
+    "id": "dde49dff.66ec",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 683.4598922729492,
-    "y": 285.6026601791382,
-    "z": "73283ddb.ad1024",
+    "x": 612.0312652587891,
+    "y": 261.6065664291382,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "94eadd89.567a"
+        "94b39f5e.140ba"
       ]
     ]
   },
   {
-    "id": "94eadd89.567a",
+    "id": "94b39f5e.140ba",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 832.8886184692383,
-    "y": 286.7455778121948,
-    "z": "73283ddb.ad1024",
+    "x": 761.4599914550781,
+    "y": 262.7494840621948,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "5ee6b514.0ecf0c",
+    "id": "fd82888d.de41f8",
     "type": "execute",
     "name": "execute RestApiCallNode delete Devcie Instance",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-device-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v3/devices'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"delete\"/>\n<parameter name=\"responsePrefix\" value=\"deviceResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 652.0313262939453,
-    "y": 700.0313568115234,
-    "z": "73283ddb.ad1024",
+    "x": 580.6026992797852,
+    "y": 676.0352630615234,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       [
-        "11e446ee.b59549",
-        "9375b3d1.4ccfc"
+        "d3b082c5.69f01",
+        "333f615c.44144e"
       ]
     ]
   },
   {
-    "id": "7025602.36919a",
+    "id": "90a0a7b1.52f328",
     "type": "execute",
     "name": "execute Properties",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n    <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",
     "comments": "",
     "outputs": 1,
-    "x": 560.03125,
-    "y": 350.03125,
-    "z": "73283ddb.ad1024",
+    "x": 488.60262298583984,
+    "y": 326.03515625,
+    "z": "3dfa2ee1.d9eb62",
     "wires": [
       []
     ]
   },
   {
-    "id": "f4083614.bed898",
+    "id": "f53c993f.c19e48",
     "type": "set",
     "name": "set device Id length and deviceId",
     "xml": "<set>\n<parameter name='prop.devices[0]' value='`$prop.device.deviceId`' />\n\n\n",
     "comments": "",
-    "x": 602.0312652587891,
-    "y": 645.0312666893005,
-    "z": "73283ddb.ad1024",
+    "x": 520.6026458740234,
+    "y": 613.0351934432983,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   },
   {
-    "id": "f8b84934.c5f1e8",
+    "id": "30405ea5.d01402",
     "type": "set",
     "name": "set device Id length and deviceId",
     "xml": "<set>\n<parameter name='prop.devices_length' value='1' />\n\n\n",
     "comments": "",
-    "x": 596.03125,
-    "y": 595.03125,
-    "z": "73283ddb.ad1024",
+    "x": 524.6026229858398,
+    "y": 571.03515625,
+    "z": "3dfa2ee1.d9eb62",
     "wires": []
   }
 ]
index 72538cf..1077d8e 100644 (file)
@@ -1,37 +1,37 @@
 [
   {
-    "id": "7735fc30.841634",
+    "id": "a1df0c8c.e610f",
     "type": "switchNode",
     "name": "switch service-data.vnfs.vnf_length",
     "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 757.03125,
-    "y": 380.03125,
-    "z": "f20d2d3a.d3597",
+    "x": 652.5634536743164,
+    "y": 312.26116919517517,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "8fd37aa5.017ed8",
-        "9c974a8d.2ebbc8"
+        "a23f9932.76df28",
+        "eec5abe1.727dc8"
       ]
     ]
   },
   {
-    "id": "44891278.d01ccc",
+    "id": "dda3e77b.e1de28",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 218.9365463256836,
-    "y": 144.77007961273193,
-    "z": "f20d2d3a.d3597",
+    "x": 114.46875,
+    "y": 76.9999988079071,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "cf34b9f3.a217e8"
+        "b55d96f3.653dc8"
       ]
     ]
   },
   {
-    "id": "cf34b9f3.a217e8",
+    "id": "b55d96f3.653dc8",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 294.22225189208984,
-    "y": 185.0081911087036,
-    "z": "f20d2d3a.d3597",
+    "x": 189.75445556640625,
+    "y": 117.23811030387878,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "f275038d.034f"
+        "e0c2d3e0.8a2bb"
       ]
     ]
   },
   {
-    "id": "9fb20f9.a2934f",
+    "id": "8ad52b68.cd0138",
     "type": "comment",
     "name": "wan port-vnf-topology-operation-delete",
     "info": "",
     "comments": "",
-    "x": 668.2814636230469,
-    "y": 218.35647869110107,
-    "z": "f20d2d3a.d3597",
+    "x": 563.8136672973633,
+    "y": 150.58639788627625,
+    "z": "42785b1.0f2e6a4",
     "wires": []
   },
   {
-    "id": "47c2021d.e2c7fc",
+    "id": "c136d1d8.af3e6",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 295.60321044921875,
-    "y": 446.4367513656616,
-    "z": "f20d2d3a.d3597",
+    "x": 191.13541412353516,
+    "y": 378.6666705608368,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "e3e2bc88.e9b0d",
-        "6dbec876.fc0328",
-        "750850d5.2167c",
-        "3731bfbc.74cda",
-        "25ec4ecb.412e22",
-        "7735fc30.841634",
-        "e6700fc6.f20b6",
-        "6f81e67.c77e818",
-        "3b4d6073.21879"
+        "a72c9897.585208",
+        "d19a177f.7de988",
+        "30536e3.568f592",
+        "a1df0c8c.e610f",
+        "9db50f7b.a0897",
+        "4dffba9e.fd0434",
+        "28632f25.b7972",
+        "af6ad43e.5c24e8",
+        "743e7718.e7f968",
+        "4b8bdd76.d28184",
+        "cb6608fc.bd5f68"
       ]
     ]
   },
   {
-    "id": "8fd37aa5.017ed8",
+    "id": "a23f9932.76df28",
     "type": "other",
     "name": "outcome Null",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1021.7535629272461,
-    "y": 362.5868721008301,
-    "z": "f20d2d3a.d3597",
+    "x": 917.2857666015625,
+    "y": 294.81679129600525,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "847c658a.4062c8"
+        "81cc943f.50f958"
       ]
     ]
   },
   {
-    "id": "847c658a.4062c8",
+    "id": "81cc943f.50f958",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 1202.753433227539,
-    "y": 357.5867500305176,
-    "z": "f20d2d3a.d3597",
+    "x": 1098.2856369018555,
+    "y": 289.81666922569275,
+    "z": "42785b1.0f2e6a4",
     "wires": []
   },
   {
-    "id": "9c974a8d.2ebbc8",
+    "id": "eec5abe1.727dc8",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1007.2535629272461,
-    "y": 414.58683490753174,
-    "z": "f20d2d3a.d3597",
+    "x": 902.7857666015625,
+    "y": 346.8167541027069,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "a54560d4.0ba6d"
+        "679d4612.15d218"
       ]
     ]
   },
   {
-    "id": "a54560d4.0ba6d",
+    "id": "679d4612.15d218",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1179.2532691955566,
-    "y": 414.5868330001831,
-    "z": "f20d2d3a.d3597",
+    "x": 1074.785472869873,
+    "y": 346.8167521953583,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "77ddf34.4623e0c",
-        "6b40a8cd.dcd938",
-        "7e832033.e29c9"
+        "862951df.5fe1d",
+        "dc6fa4c3.5ecea8"
       ]
     ]
   },
   {
-    "id": "6b40a8cd.dcd938",
+    "id": "dc6fa4c3.5ecea8",
     "type": "switchNode",
     "name": "switch tmp.vidx ",
     "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1354.2534408569336,
-    "y": 433.58675479888916,
-    "z": "f20d2d3a.d3597",
+    "x": 1249.78564453125,
+    "y": 365.81667399406433,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "5d6c7481.ef0eac"
+        "1c173742.b90799"
       ]
     ]
   },
   {
-    "id": "25ec4ecb.412e22",
+    "id": "30536e3.568f592",
     "type": "switchNode",
     "name": "switch vnf-level-oper-status",
     "xml": "<switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 727.4202499389648,
-    "y": 454.4757137298584,
-    "z": "f20d2d3a.d3597",
+    "x": 622.9524536132812,
+    "y": 386.70563292503357,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "6e834974.d9b6b8",
-        "8930f777.246948"
+        "ba7f62e0.c87a8",
+        "246d8ed1.13b9e2"
       ]
     ]
   },
   {
-    "id": "6e834974.d9b6b8",
+    "id": "ba7f62e0.c87a8",
     "type": "outcome",
     "name": "outcome PendingDelete",
     "xml": "<outcome value='PendingDelete'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1018.2535171508789,
-    "y": 458.58683681488037,
-    "z": "f20d2d3a.d3597",
+    "x": 913.7857208251953,
+    "y": 390.81675601005554,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "9d8ec192.cf786"
+        "7fe1211e.ac713"
       ]
     ]
   },
   {
-    "id": "8930f777.246948",
+    "id": "246d8ed1.13b9e2",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 964.2535781860352,
-    "y": 505.58684062957764,
-    "z": "f20d2d3a.d3597",
+    "x": 880.7858581542969,
+    "y": 442.8168087005615,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "8989bed6.5ee81"
+        "7d27948.1b45c6c"
       ]
     ]
   },
   {
-    "id": "8989bed6.5ee81",
+    "id": "7d27948.1b45c6c",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`\" />",
     "comments": "",
-    "x": 1123.753345489502,
-    "y": 508.5868396759033,
-    "z": "f20d2d3a.d3597",
+    "x": 1040.2856254577637,
+    "y": 445.8168077468872,
+    "z": "42785b1.0f2e6a4",
     "wires": []
   },
   {
-    "id": "e6700fc6.f20b6",
+    "id": "9db50f7b.a0897",
     "type": "switchNode",
     "name": "switch vnf-id",
     "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 693.2535667419434,
-    "y": 335.5868434906006,
-    "z": "f20d2d3a.d3597",
+    "x": 588.7857704162598,
+    "y": 267.81676268577576,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "73ae75a9.e85c8c"
+        "2d92055a.30ffda"
       ]
     ]
   },
   {
-    "id": "73ae75a9.e85c8c",
+    "id": "2d92055a.30ffda",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>",
     "comments": "",
     "outputs": 1,
-    "x": 891.2536315917969,
-    "y": 325.5868558883667,
-    "z": "f20d2d3a.d3597",
+    "x": 786.7858352661133,
+    "y": 257.81677508354187,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "dd6eb157.d89e"
+        "889ae61d.096b48"
       ]
     ]
   },
   {
-    "id": "dd6eb157.d89e",
+    "id": "889ae61d.096b48",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-request-input.vnf-input-parameters.name is a required input\" />\n",
     "comments": "",
-    "x": 1057.753517150879,
-    "y": 322.5868501663208,
-    "z": "f20d2d3a.d3597",
+    "x": 953.2857208251953,
+    "y": 254.81676936149597,
+    "z": "42785b1.0f2e6a4",
     "wires": []
   },
   {
-    "id": "77ddf34.4623e0c",
+    "id": "862951df.5fe1d",
     "type": "for",
     "name": "for vidx..service-data.vnfs.vnf[]",
     "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1414.7534446716309,
-    "y": 369.5867509841919,
-    "z": "f20d2d3a.d3597",
+    "x": 1310.2856483459473,
+    "y": 301.81667017936707,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "cd627687.735828"
+        "91f5b0d9.94102"
       ]
     ]
   },
   {
-    "id": "cd627687.735828",
+    "id": "91f5b0d9.94102",
     "type": "switchNode",
     "name": "switch vnf-id found",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1670.7534637451172,
-    "y": 369.5867509841919,
-    "z": "f20d2d3a.d3597",
+    "x": 1566.2856674194336,
+    "y": 301.81667017936707,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "4efba8ed.463c18"
+        "8dc7c708.bc5718"
       ]
     ]
   },
   {
-    "id": "4efba8ed.463c18",
+    "id": "8dc7c708.bc5718",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1847.253517150879,
-    "y": 372.5867509841919,
-    "z": "f20d2d3a.d3597",
+    "x": 1742.7857208251953,
+    "y": 304.81667017936707,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "ae933ccf.17812"
+        "2d4f17e9.19c368"
       ]
     ]
   },
   {
-    "id": "1bcea5bb.85368a",
+    "id": "dd40fac0.73a058",
     "type": "set",
     "name": "set tmp.vidx and ctx.vnf-data",
     "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].vnf-data.`' />\n",
     "comments": "",
-    "x": 2264.253730773926,
-    "y": 451.58680295944214,
-    "z": "f20d2d3a.d3597",
+    "x": 2159.785934448242,
+    "y": 383.8167221546173,
+    "z": "42785b1.0f2e6a4",
     "wires": []
   },
   {
-    "id": "3be2d098.9a5d7",
+    "id": "59a5fc66.f24204",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 1659.7534561157227,
-    "y": 433.58675479888916,
-    "z": "f20d2d3a.d3597",
+    "x": 1555.285659790039,
+    "y": 365.81667399406433,
+    "z": "42785b1.0f2e6a4",
     "wires": []
   },
   {
-    "id": "5d6c7481.ef0eac",
+    "id": "1c173742.b90799",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1522.2534561157227,
-    "y": 433.58675479888916,
-    "z": "f20d2d3a.d3597",
+    "x": 1417.785659790039,
+    "y": 365.81667399406433,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "3be2d098.9a5d7"
+        "59a5fc66.f24204"
       ]
     ]
   },
   {
-    "id": "750850d5.2167c",
+    "id": "a72c9897.585208",
     "type": "set",
     "name": "set vnfId and vnf-object-path",
     "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='vnf-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vnf-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'` \" />",
     "comments": "",
-    "x": 705.2699813842773,
-    "y": 630.1034965515137,
-    "z": "f20d2d3a.d3597",
+    "x": 596.8022003173828,
+    "y": 689.3334522247314,
+    "z": "42785b1.0f2e6a4",
     "wires": []
   },
   {
-    "id": "3731bfbc.74cda",
+    "id": "d19a177f.7de988",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 654.3811416625977,
-    "y": 755.6589269638062,
-    "z": "f20d2d3a.d3597",
+    "x": 545.9133987426758,
+    "y": 808.8889608383179,
+    "z": "42785b1.0f2e6a4",
     "wires": []
   },
   {
-    "id": "e3e2bc88.e9b0d",
-    "type": "set",
-    "name": "set new vnf length",
-    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf_length\" value=\"`$service-data.vnfs.vnf_length - 1`\"/>\n\n\t\n",
-    "comments": "",
-    "x": 685.9025650024414,
-    "y": 527.5743541717529,
-    "z": "f20d2d3a.d3597",
-    "wires": []
-  },
-  {
-    "id": "6dbec876.fc0328",
-    "type": "set",
-    "name": "Remove vnf from ServiceData",
-    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$tmp.vidx].\" value=\"\"/>\n\n",
-    "comments": "",
-    "x": 721.5267562866211,
-    "y": 571.5423212051392,
-    "z": "f20d2d3a.d3597",
-    "wires": []
-  },
-  {
-    "id": "9d8ec192.cf786",
+    "id": "7fe1211e.ac713",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1215.5599174499512,
-    "y": 468.91199111938477,
-    "z": "f20d2d3a.d3597",
+    "x": 1111.0921211242676,
+    "y": 401.14191031455994,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       []
     ]
   },
   {
-    "id": "f275038d.034f",
+    "id": "e0c2d3e0.8a2bb",
     "type": "method",
     "name": "method sdwan-vnf-topology-operation-device-delete",
     "xml": "<method rpc='sdwan-vnf-topology-operation-device-delete' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 299.4677963256836,
-    "y": 301.03125,
-    "z": "f20d2d3a.d3597",
+    "x": 195,
+    "y": 233.26116919517517,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "47c2021d.e2c7fc"
+        "c136d1d8.af3e6"
       ]
     ]
   },
   {
-    "id": "6f81e67.c77e818",
+    "id": "4dffba9e.fd0434",
     "type": "execute",
     "name": "execute requiredParameters",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"vnf-topology-operation-input.vnf-information.vnf-id\" value=\"$vnf-topology-operation-input.vnf-information.vnf-id\"/>\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 750.7536239624023,
-    "y": 275.58684253692627,
-    "z": "f20d2d3a.d3597",
+    "x": 646.2858276367188,
+    "y": 207.81676173210144,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       []
     ]
   },
   {
-    "id": "9d539b15.274ee8",
+    "id": "7385dfef.35179",
     "type": "delete",
     "name": "delete wan port instance configuration in AAI",
     "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='device' \n        key='device.id = $vnf-topology-operation-input.vnf-information.vnf-id'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1058.4678955078125,
-    "y": 693.0313606262207,
-    "z": "f20d2d3a.d3597",
+    "x": 1073.0003051757812,
+    "y": 744.261435508728,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       []
     ]
   },
   {
-    "id": "7e832033.e29c9",
-    "type": "record",
-    "name": "record",
-    "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"tmp.vidx1234555\"/>\n<parameter name=\"field3\" value='`$tmp.vidx`'/>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1403.4679336547852,
-    "y": 488.0312623977661,
-    "z": "f20d2d3a.d3597",
-    "wires": [
-      []
-    ]
-  },
-  {
-    "id": "baf87e05.49718",
+    "id": "3c959d82.f7e672",
     "type": "call",
     "name": "call sdwan-get-device-param",
     "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 2256.0313110351562,
-    "y": 396.0312566757202,
-    "z": "f20d2d3a.d3597",
+    "x": 2151.5635147094727,
+    "y": 328.2611758708954,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       []
     ]
   },
   {
-    "id": "657365d9.06388c",
+    "id": "5f3e6fd4.e37e8",
     "type": "set",
     "name": "set vnf-request-input.",
     "xml": "<set>\n<parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\n\n",
     "comments": "",
-    "x": 2251.3908615112305,
-    "y": 333.5817861557007,
-    "z": "f20d2d3a.d3597",
+    "x": 2146.923065185547,
+    "y": 265.81170535087585,
+    "z": "42785b1.0f2e6a4",
     "wires": []
   },
   {
-    "id": "2c001ef8.5cd552",
+    "id": "94ec2391.e8ee4",
     "type": "set",
     "name": "set tmp.vidx and ctx.vnf-data",
     "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",
     "comments": "",
-    "x": 2278.9445724487305,
-    "y": 286.92415046691895,
-    "z": "f20d2d3a.d3597",
+    "x": 2174.476776123047,
+    "y": 219.15406966209412,
+    "z": "42785b1.0f2e6a4",
     "wires": []
   },
   {
-    "id": "ae933ccf.17812",
+    "id": "2d4f17e9.19c368",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 2017.0311279296875,
-    "y": 374.03125,
-    "z": "f20d2d3a.d3597",
+    "x": 1912.563331604004,
+    "y": 306.26116919517517,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "1bcea5bb.85368a",
-        "baf87e05.49718",
-        "657365d9.06388c",
-        "2c001ef8.5cd552"
+        "dd40fac0.73a058",
+        "3c959d82.f7e672",
+        "5f3e6fd4.e37e8",
+        "94ec2391.e8ee4"
       ]
     ]
   },
   {
-    "id": "3b4d6073.21879",
+    "id": "28632f25.b7972",
     "type": "switchNode",
     "name": "switch prop.device.sdncCreate",
     "xml": "<switch test=\"`$prop.device.sdncCreate`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 649.0314254760742,
-    "y": 691.0313444137573,
-    "z": "f20d2d3a.d3597",
+    "x": 597.5636672973633,
+    "y": 752.2614345550537,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "749e7d0b.8542b4"
+        "d02123b.6bfe7e"
       ]
     ]
   },
   {
-    "id": "749e7d0b.8542b4",
+    "id": "d02123b.6bfe7e",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 803.0312919616699,
-    "y": 692.031268119812,
-    "z": "f20d2d3a.d3597",
+    "x": 804.5635223388672,
+    "y": 749.2612714767456,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "7385dfef.35179"
+      ]
+    ]
+  },
+  {
+    "id": "af6ad43e.5c24e8",
+    "type": "set",
+    "name": "set prop.vnfNewidx",
+    "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",
+    "comments": "",
+    "x": 589.0000381469727,
+    "y": 454.0000276565552,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "743e7718.e7f968",
+    "type": "for",
+    "name": "for lidx..service-data.vnfs.vnf[]",
+    "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 615.9999580383301,
+    "y": 518.0000123977661,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "25a69c7c.cd2204"
+      ]
+    ]
+  },
+  {
+    "id": "25a69c7c.cd2204",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 859.9999389648438,
+    "y": 543.9999718666077,
+    "z": "42785b1.0f2e6a4",
     "wires": [
       [
-        "9d539b15.274ee8"
+        "2e7532f9.d7b9be"
       ]
     ]
+  },
+  {
+    "id": "2e7532f9.d7b9be",
+    "type": "switchNode",
+    "name": "switch vnf-id found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$lidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1051.999885559082,
+    "y": 553.0000162124634,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "fb34ff49.abebe"
+      ]
+    ]
+  },
+  {
+    "id": "4b8bdd76.d28184",
+    "type": "set",
+    "name": "set new vnf length",
+    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",
+    "comments": "",
+    "x": 582.1013412475586,
+    "y": 568.8043041229248,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "fb34ff49.abebe",
+    "type": "outcomeFalse",
+    "name": "false",
+    "xml": "<outcome value='false'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1237.999900817871,
+    "y": 536.9999027252197,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "aa789605.e97ae8"
+      ]
+    ]
+  },
+  {
+    "id": "aa789605.e97ae8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1388.9998245239258,
+    "y": 537.9999389648438,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "79843b9d.c445e4",
+        "fcd82b9e.5e0628"
+      ]
+    ]
+  },
+  {
+    "id": "79843b9d.c445e4",
+    "type": "set",
+    "name": "set  vnf data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$lidx].vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$lidx].vnf-data.`' />\n",
+    "comments": "",
+    "x": 1553.9999198913574,
+    "y": 513.0000944137573,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "fcd82b9e.5e0628",
+    "type": "set",
+    "name": "set prop.vnfNewidx",
+    "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",
+    "comments": "",
+    "x": 1575.9999198913574,
+    "y": 569.0000581741333,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "cb6608fc.bd5f68",
+    "type": "set",
+    "name": "Remove vnf from ServiceData",
+    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$prop.vnfidxLen].\" value=\"\"/>\n\n",
+    "comments": "",
+    "x": 621,
+    "y": 630,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
   }
-]
\ No newline at end of file
+]
index 1f6af4f..a29f5c0 100644 (file)
@@ -1,20 +1,20 @@
 [
   {
-    "id": "fea5a9bd.a03d18",
+    "id": "426569df.8612f8",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 86.00390625,
-    "y": 44.999999046325684,
-    "z": "3545e2b7.8c73ce",
+    "x": 120.00390625,
+    "y": 238.75390625,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "e45f8bd6.497e68"
+        "7d6fafb.3ddd95"
       ]
     ]
   },
   {
-    "id": "e45f8bd6.497e68",
+    "id": "7d6fafb.3ddd95",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 234.2895965576172,
-    "y": 95.23810768127441,
-    "z": "3545e2b7.8c73ce",
+    "x": 268.2895965576172,
+    "y": 288.99201488494873,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "f0f23207.f8f43"
+        "7af8806b.3ecd7"
       ]
     ]
   },
   {
-    "id": "f0f23207.f8f43",
+    "id": "7af8806b.3ecd7",
     "type": "method",
     "name": "method sdwan-vnf-topology-operation-wanport-activate",
     "xml": "<method rpc='sdwan-vnf-topology-operation-wanport-activate' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 237.43252563476562,
-    "y": 180.00003147125244,
-    "z": "3545e2b7.8c73ce",
+    "x": 271.4325256347656,
+    "y": 373.75393867492676,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "32849d64.f1ae32"
+        "63259a1d.b752b4"
       ]
     ]
   },
   {
-    "id": "32849d64.f1ae32",
+    "id": "63259a1d.b752b4",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 300.67066192626953,
-    "y": 785.6669883728027,
-    "z": "3545e2b7.8c73ce",
+    "x": 334.67066192626953,
+    "y": 979.420895576477,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "dc92d74f.dca7a8",
-        "1cf85990.ed3b86",
-        "b4c4037f.4ac1e",
-        "f3c230b1.3312b",
-        "ac816a8a.6fb1f8",
-        "e9d0f6cd.99c098",
-        "62f05310.c79d2c",
-        "ca279788.45f118",
-        "aece4931.30eed8",
-        "d9e42142.36e4c",
-        "eaa46981.c8da08",
-        "2847803.c88858",
-        "a3465abe.51b3e8",
-        "ea6762c6.702c5",
-        "33c90daa.1c8182",
-        "81b0e70b.0576d8",
-        "e220c2f5.e3641",
-        "cd49784f.a3cd48"
+        "ff4c2e55.307e9",
+        "36b7eecd.26eef2",
+        "236a2d57.6cfe02",
+        "7b3df5af.3ce7ac",
+        "21db1d94.b93312",
+        "b01a2888.afc958",
+        "8814bd0.a9cd04",
+        "a3b723.963fa8e",
+        "eefe56c7.aeba48",
+        "1d7f590a.25aba7",
+        "4f9762f1.7b8f7c",
+        "739bdc62.97be04",
+        "e93ff52d.80faa8",
+        "378b7e77.9ee662",
+        "8569d96f.59e838",
+        "2af7b981.494176",
+        "66231f4c.1fe22",
+        "d3523f5e.150e2",
+        "ce5ce7ac.be3938",
+        "a1d99b62.d31458"
       ]
     ]
   },
   {
-    "id": "dc92d74f.dca7a8",
+    "id": "ff4c2e55.307e9",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 639.3383979797363,
-    "y": 1527.3344058990479,
-    "z": "3545e2b7.8c73ce",
+    "x": 659.3384132385254,
+    "y": 1777.088438987732,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "eaa46981.c8da08",
+    "id": "1d7f590a.25aba7",
     "type": "execute",
     "name": "execute RestApiCallNode device port create",
-    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-port.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-port.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 715.3380165100098,
-    "y": 780.8894968032837,
-    "z": "3545e2b7.8c73ce",
+    "x": 749.3380165100098,
+    "y": 974.643404006958,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "65c0152d.40a98c",
-        "6523c3cc.277f2c"
+        "53451b0.d0c27e4",
+        "d2d2e81c.454428"
       ]
     ]
   },
   {
-    "id": "65c0152d.40a98c",
+    "id": "53451b0.d0c27e4",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 964.3380756378174,
-    "y": 794.889702796936,
-    "z": "3545e2b7.8c73ce",
+    "x": 998.3380756378174,
+    "y": 988.6436100006104,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "9cca9a95.c82758"
+        "eca1c460.e76228"
       ]
     ]
   },
   {
-    "id": "6523c3cc.277f2c",
+    "id": "d2d2e81c.454428",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 964.3380756378174,
-    "y": 756.8895382881165,
-    "z": "3545e2b7.8c73ce",
+    "x": 998.3380756378174,
+    "y": 950.6434454917908,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "d75e1634.f465a8"
+        "104d6c7d.be4024"
       ]
     ]
   },
   {
-    "id": "d75e1634.f465a8",
+    "id": "104d6c7d.be4024",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create device port rest api\" />\n",
     "comments": "",
-    "x": 1108.3384094238281,
-    "y": 755.8895378112793,
-    "z": "3545e2b7.8c73ce",
+    "x": 1142.3384094238281,
+    "y": 949.6434450149536,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "9cca9a95.c82758",
+    "id": "eca1c460.e76228",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "comments": "",
     "outputs": 1,
-    "x": 1111.3380870819092,
-    "y": 795.8895416259766,
-    "z": "3545e2b7.8c73ce",
+    "x": 1145.3380870819092,
+    "y": 989.6434488296509,
+    "z": "2525d6cd.61f35a",
     "wires": [
       []
     ]
   },
   {
-    "id": "a3465abe.51b3e8",
+    "id": "4f9762f1.7b8f7c",
     "type": "execute",
     "name": "execute RestApiCallNode get transport network info",
-    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-network-orchestration.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/network-orchestration-resources'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"get\"/>\n<parameter name=\"responsePrefix\" value=\"transportNetworksResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/network-orchestration-resources'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"get\"/>\n<parameter name=\"responsePrefix\" value=\"transportNetworksResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 738.0043678283691,
-    "y": 960.0006022453308,
-    "z": "3545e2b7.8c73ce",
+    "x": 772.0043678283691,
+    "y": 1153.7545094490051,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "91b71ecc.ea421",
-        "dad0aff7.4b6c2"
+        "af3e9c1f.7be91",
+        "394b70c0.ac6f"
       ]
     ]
   },
   {
-    "id": "81b0e70b.0576d8",
+    "id": "e93ff52d.80faa8",
     "type": "execute",
     "name": "execute RestApiCallNode wan port create",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-wan-port.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"wanPortResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 711.0044593811035,
-    "y": 1197.0006504058838,
-    "z": "3545e2b7.8c73ce",
+    "x": 745.0044593811035,
+    "y": 1390.754557609558,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "b0038d4b.581a3",
-        "fdc236b1.efb848"
+        "727c41a7.9551b",
+        "51280d82.cd5cc4"
       ]
     ]
   },
   {
-    "id": "1cf85990.ed3b86",
+    "id": "36b7eecd.26eef2",
     "type": "switchNode",
     "name": "switch service-data.vnfs.vnf_length",
     "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 697.0248413085938,
-    "y": 124.02091121673584,
-    "z": "3545e2b7.8c73ce",
+    "x": 731.0248413085938,
+    "y": 317.77481842041016,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "d1aa4aa.5bcccb8",
-        "7a701067.ec473",
-        "6e75ccb1.58cf34"
+        "7f1fbca4.9489e4",
+        "5c724185.8e516",
+        "5b28fd04.e48584"
       ]
     ]
   },
   {
-    "id": "d1aa4aa.5bcccb8",
+    "id": "7f1fbca4.9489e4",
     "type": "other",
     "name": "Null",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 949.0248756408691,
-    "y": 125.02099227905273,
-    "z": "3545e2b7.8c73ce",
+    "x": 983.0248756408691,
+    "y": 318.77489948272705,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "4988f92c.8e1ab8"
+        "9ce50f4e.b2fc8"
       ]
     ]
   },
   {
-    "id": "4988f92c.8e1ab8",
+    "id": "9ce50f4e.b2fc8",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 1110.8026237487793,
-    "y": 104.90993928909302,
-    "z": "3545e2b7.8c73ce",
+    "x": 1144.8026237487793,
+    "y": 298.66384649276733,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "7a701067.ec473",
+    "id": "5c724185.8e516",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 942.0252838134766,
-    "y": 158.02099609375,
-    "z": "3545e2b7.8c73ce",
+    "x": 976.0252838134766,
+    "y": 351.7749032974243,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "ba03b0d7.0be36"
+        "85017b74.ea3478"
       ]
     ]
   },
   {
-    "id": "ba03b0d7.0be36",
+    "id": "85017b74.ea3478",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 960.2947769165039,
-    "y": 320.5755786895752,
-    "z": "3545e2b7.8c73ce",
+    "x": 994.2947769165039,
+    "y": 514.3294858932495,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "24648014.ff824",
-        "5aa1ffdc.05015",
-        "a65a9125.dc54c",
-        "ae97242b.dc5558",
-        "acc92682.3c6fd8"
+        "6e42e95a.0ecb68",
+        "f672c022.be35c",
+        "59c48b6.04c5c74",
+        "5cf9118c.68854",
+        "388b05e0.8ee79a"
       ]
     ]
   },
   {
-    "id": "24648014.ff824",
+    "id": "6e42e95a.0ecb68",
     "type": "for",
     "name": "for vidx..service-data.vnfs.vnf_length[]",
     "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1245.3109436035156,
-    "y": 150.44955730438232,
-    "z": "3545e2b7.8c73ce",
+    "x": 1279.3109436035156,
+    "y": 344.20346450805664,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "1aa311e.b073aee"
+        "7f2ca034.081d2"
       ]
     ]
   },
   {
-    "id": "5aa1ffdc.05015",
+    "id": "f672c022.be35c",
     "type": "switchNode",
     "name": "switch tmp.vidx ",
     "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1171.612247467041,
-    "y": 296.4327926635742,
-    "z": "3545e2b7.8c73ce",
+    "x": 1205.612247467041,
+    "y": 490.18669986724854,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "93a97c9.4fbf08"
+        "40c5bcb3.8f3694"
       ]
     ]
   },
   {
-    "id": "93a97c9.4fbf08",
+    "id": "40c5bcb3.8f3694",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1319.0408897399902,
-    "y": 296.0042028427124,
-    "z": "3545e2b7.8c73ce",
+    "x": 1353.0408897399902,
+    "y": 489.7581100463867,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "c3cf31a6.b52f"
+        "8c183b0a.c20d58"
       ]
     ]
   },
   {
-    "id": "b192d0.2d48dd3",
+    "id": "52d419f2.072bd8",
     "type": "switchNode",
     "name": "switch vnfid found",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1618.7401733398438,
-    "y": 149.6997194290161,
-    "z": "3545e2b7.8c73ce",
+    "x": 1652.7401733398438,
+    "y": 343.45362663269043,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "801ede81.82f43"
+        "7d43258f.b6dc1c"
       ]
     ]
   },
   {
-    "id": "c3cf31a6.b52f",
+    "id": "8c183b0a.c20d58",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 1468.4696159362793,
-    "y": 297.14712047576904,
-    "z": "3545e2b7.8c73ce",
+    "x": 1502.4696159362793,
+    "y": 490.90102767944336,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "801ede81.82f43",
+    "id": "7d43258f.b6dc1c",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1773.6921653747559,
-    "y": 150.59239864349365,
-    "z": "3545e2b7.8c73ce",
+    "x": 1807.6921653747559,
+    "y": 344.34630584716797,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "7772ec9b.efcac4"
+        "7b4fae02.aca0c"
       ]
     ]
   },
   {
-    "id": "db3e11bd.eb0ca",
+    "id": "5f826b27.adc144",
     "type": "set",
     "name": "set tmp.vidx and ctx.vnf-data",
     "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",
     "comments": "",
-    "x": 2181.224250793457,
-    "y": 60.34245681762695,
-    "z": "3545e2b7.8c73ce",
+    "x": 2215.224250793457,
+    "y": 254.09636402130127,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "6e75ccb1.58cf34",
+    "id": "5b28fd04.e48584",
     "type": "outcome",
     "name": "0",
     "xml": "<outcome value='0'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 950.9936256408691,
-    "y": 88.98967838287354,
-    "z": "3545e2b7.8c73ce",
+    "x": 984.9936256408691,
+    "y": 282.74358558654785,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "4988f92c.8e1ab8"
+        "9ce50f4e.b2fc8"
       ]
     ]
   },
   {
-    "id": "cd49784f.a3cd48",
+    "id": "378b7e77.9ee662",
     "type": "set",
-    "name": "set device PortId and wan portId to service data",
-    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='devicePortId' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.wan.devicePortId`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1].name' value='wanPortId' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1].value' value='`$prop.wan.wanPortId`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 2`' />\n\n\n\n\n",
+    "name": "set device PortId to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='devicePortId' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.wan.devicePortId`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\n\n\n\n\n",
     "comments": "",
-    "x": 734.9947814941406,
-    "y": 1318.9909219741821,
-    "z": "3545e2b7.8c73ce",
+    "x": 711.9948043823242,
+    "y": 1513.744936466217,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "abae1674.12b3d8",
+    "id": "b1043d5b.c9816",
     "type": "comment",
     "name": "Get siteId from site resource created for this service",
     "info": "",
     "comments": "",
-    "x": 722.9938888549805,
-    "y": 309.32321548461914,
-    "z": "3545e2b7.8c73ce",
+    "x": 756.9938888549805,
+    "y": 503.07712268829346,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "1aa311e.b073aee",
+    "id": "7f2ca034.081d2",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1464.6605758666992,
-    "y": 149.98963737487793,
-    "z": "3545e2b7.8c73ce",
+    "x": 1498.6605758666992,
+    "y": 343.74354457855225,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "b192d0.2d48dd3"
+        "52d419f2.072bd8"
       ]
     ]
   },
   {
-    "id": "b4c4037f.4ac1e",
+    "id": "236a2d57.6cfe02",
     "type": "set",
     "name": "set vnfId and vnf-object-path",
     "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",
     "comments": "",
-    "x": 672.5501022338867,
-    "y": 1406.2128171920776,
-    "z": "3545e2b7.8c73ce",
+    "x": 692.5501174926758,
+    "y": 1655.9668502807617,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "f3c230b1.3312b",
+    "id": "7b3df5af.3ce7ac",
     "type": "set",
     "name": "set vnf-level-oper-status to Active",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
     "comments": "",
-    "x": 689.9945640563965,
-    "y": 1445.990653038025,
-    "z": "3545e2b7.8c73ce",
+    "x": 709.9945793151855,
+    "y": 1695.744686126709,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "da8588c8.55f098",
+    "id": "a1d99b62.d31458",
     "type": "update",
     "name": "save SDWAN wan port instance configuration in AAI",
-    "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \n      key='wan-port-config.id = $service-data.vnfs.vnf[$tmp.vidx].vnf-id' >\n<parameter name=\"id\" value=\"`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`\" />\n<parameter name='operational-status' value='Active' />\n<parameter name='device-port-id' value='`$prop.wan.devicePortId`' />\n<parameter name='wan-port-id' value='`$prop.wan.wanPortId`' />\n<parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n",
+    "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \n      key='wan-port-config.id = $vnf-topology-operation-input.vnf-information.vnf-id' >\n<parameter name=\"id\" value=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\" />\n<parameter name='operational-status' value='Active' />\n<parameter name='device-port-id' value='`$prop.wan.devicePortId`' />\n<parameter name='wan-port-id' value='`$prop.wan.wanPortId`' />\n<parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n",
     "comments": "",
     "outputs": 1,
-    "x": 752.6574897766113,
-    "y": 1485.1381149291992,
-    "z": "3545e2b7.8c73ce",
+    "x": 772.6575050354004,
+    "y": 1734.8921480178833,
+    "z": "2525d6cd.61f35a",
     "wires": [
       []
     ]
   },
   {
-    "id": "d902b620.732c58",
+    "id": "44786d4c.78c0b4",
     "type": "set",
     "name": "set prop.wan.transportNetworkId",
-    "xml": "<set>\n<parameter name='prop.wan.transportNetworkId' value='`$transportNetworksResp[$tidx].id`' />\n",
+    "xml": "<set>\n<parameter name='prop.wan.transportNetworkId' value='`$transportNetworksResp.data.transportNetworks[$tidx].id`' />\n",
     "comments": "",
-    "x": 1492.995449066162,
-    "y": 1036.9906740188599,
-    "z": "3545e2b7.8c73ce",
+    "x": 1526.995449066162,
+    "y": 1230.7445812225342,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "ac816a8a.6fb1f8",
+    "id": "ce5ce7ac.be3938",
     "type": "for",
     "name": "for loop sidx - Get siteId from servicedata",
     "xml": "<for index=\"sidx\" start=\"0\" end=\"`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 702.9939117431641,
-    "y": 459.98987197875977,
-    "z": "3545e2b7.8c73ce",
+    "x": 736.9939117431641,
+    "y": 653.7437791824341,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "f946d98b.8721e8"
+        "4aaf0dac.f4bd44"
       ]
     ]
   },
   {
-    "id": "6e3361b7.a1918",
+    "id": "3237e366.c0b81c",
     "type": "switchNode",
     "name": "switch siteId",
     "xml": "<switch test=\"`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'siteId'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1133.994239807129,
-    "y": 460.9900026321411,
-    "z": "3545e2b7.8c73ce",
+    "x": 1167.994239807129,
+    "y": 654.7439098358154,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "628588c5.8c4528"
+        "c0bb2f42.b3aaf"
       ]
     ]
   },
   {
-    "id": "628588c5.8c4528",
+    "id": "c0bb2f42.b3aaf",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1271.9946975708008,
-    "y": 458.98998737335205,
-    "z": "3545e2b7.8c73ce",
+    "x": 1305.9946975708008,
+    "y": 652.7438945770264,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "b0597272.0a65f"
+        "1433eee.8c0de11"
       ]
     ]
   },
   {
-    "id": "b0597272.0a65f",
+    "id": "1433eee.8c0de11",
     "type": "set",
     "name": "set prop.wan.siteId",
     "xml": "<set>\n<parameter name='prop.wan.siteId' value='`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />\n\n\n",
     "comments": "",
-    "x": 1435.9947319030762,
-    "y": 460.58984088897705,
-    "z": "3545e2b7.8c73ce",
+    "x": 1469.9947319030762,
+    "y": 654.3437480926514,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "33c90daa.1c8182",
+    "id": "739bdc62.97be04",
     "type": "execute",
     "name": "execute split ip and mask",
-    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.ipAddress`'/>\n<parameter name=\"regex\" value=\"/\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"ipandMask\"/>\n",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.wan.ipAddress`'/>\n<parameter name=\"regex\" value=\"/\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"ipandMask\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 661.9942359924316,
-    "y": 1105.323642730713,
-    "z": "3545e2b7.8c73ce",
+    "x": 695.9942359924316,
+    "y": 1299.0775499343872,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "d21f243c.e29608",
-        "61bef1c0.f032f"
+        "fdf45f99.54463",
+        "bde78d5d.e4b42"
       ]
     ]
   },
   {
-    "id": "61bef1c0.f032f",
+    "id": "bde78d5d.e4b42",
     "type": "failure",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 862.994255065918,
-    "y": 1083.323634147644,
-    "z": "3545e2b7.8c73ce",
+    "x": 896.994255065918,
+    "y": 1277.0775413513184,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "dba59ea6.fb87c"
+        "b4f4511b.838b7"
       ]
     ]
   },
   {
-    "id": "d21f243c.e29608",
+    "id": "fdf45f99.54463",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 862.9942588806152,
-    "y": 1124.3236379623413,
-    "z": "3545e2b7.8c73ce",
+    "x": 896.9942588806152,
+    "y": 1318.0775451660156,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "5e04d6ae.a87ea8"
+        "284d3324.0f7a9c"
       ]
     ]
   },
   {
-    "id": "dba59ea6.fb87c",
+    "id": "b4f4511b.838b7",
     "type": "set",
     "name": "set ipAddress prefixLength",
     "xml": "<set>\n<parameter name='prop.wan.ip-address' value='`$ipandMask[0]`' />\n<parameter name='prop.wan.prefixLength' value='`$ipandMask[1]`' />",
     "comments": "",
-    "x": 1059.9942741394043,
-    "y": 1081.323634147644,
-    "z": "3545e2b7.8c73ce",
+    "x": 1093.9942741394043,
+    "y": 1275.0775413513184,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "5e04d6ae.a87ea8",
+    "id": "284d3324.0f7a9c",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value=\"An error occured while splitting sna1_route\" />\n",
     "comments": "",
-    "x": 1017.9942665100098,
-    "y": 1121.323637008667,
-    "z": "3545e2b7.8c73ce",
+    "x": 1051.9942665100098,
+    "y": 1315.0775442123413,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "aece4931.30eed8",
+    "id": "a3b723.963fa8e",
     "type": "get-resource",
     "name": "get-resource esr-thirdparty-sdnc",
-    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 696.4940643310547,
-    "y": 559.9899234771729,
-    "z": "3545e2b7.8c73ce",
+    "x": 730.4940643310547,
+    "y": 753.7438306808472,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "acfff48e.adde88",
-        "cfdab1ae.df7ca",
-        "3d21e606.ef145a"
+        "e9572be2.73ae58",
+        "29c0457e.12142a",
+        "d78bfaf1.6dc7f8"
       ]
     ]
   },
   {
-    "id": "acfff48e.adde88",
+    "id": "e9572be2.73ae58",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 909.4941635131836,
-    "y": 521.989951133728,
-    "z": "3545e2b7.8c73ce",
+    "x": 943.4941635131836,
+    "y": 715.7438583374023,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "caaa91ba.7a205"
+        "b45f540f.db5988"
       ]
     ]
   },
   {
-    "id": "cfdab1ae.df7ca",
+    "id": "29c0457e.12142a",
     "type": "not-found",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 911.9850463867188,
-    "y": 557.5639877319336,
-    "z": "3545e2b7.8c73ce",
+    "x": 945.9850463867188,
+    "y": 751.3178949356079,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "43a0c2ab.03d7fc"
+        "5afb7116.97e19"
       ]
     ]
   },
   {
-    "id": "3d21e606.ef145a",
+    "id": "d78bfaf1.6dc7f8",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 907.3180541992188,
-    "y": 593.897346496582,
-    "z": "3545e2b7.8c73ce",
+    "x": 941.3180541992188,
+    "y": 787.6512537002563,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "5c31ca17.841574"
+        "aca4c3f3.f6f79"
       ]
     ]
   },
   {
-    "id": "5c31ca17.841574",
+    "id": "aca4c3f3.f6f79",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
     "comments": "",
-    "x": 1061.0905456542969,
-    "y": 591.3364334106445,
-    "z": "3545e2b7.8c73ce",
+    "x": 1095.0905456542969,
+    "y": 785.0903406143188,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "43a0c2ab.03d7fc",
+    "id": "5afb7116.97e19",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
     "comments": "",
-    "x": 1057.5564422607422,
-    "y": 555.8496751785278,
-    "z": "3545e2b7.8c73ce",
+    "x": 1091.5564422607422,
+    "y": 749.6035823822021,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "caaa91ba.7a205",
+    "id": "b45f540f.db5988",
     "type": "set",
     "name": "set controller data",
     "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
     "comments": "",
-    "x": 1069.9942741394043,
-    "y": 519.9898910522461,
-    "z": "3545e2b7.8c73ce",
+    "x": 1103.9942741394043,
+    "y": 713.7437982559204,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "e9d0f6cd.99c098",
+    "id": "21db1d94.b93312",
     "type": "record",
     "name": "record",
     "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"sdwan-wanport-vnf-topology-operation-activate\"/>\n<parameter name=\"field3\" value=\"SDWAN-Activate\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 615.0040016174316,
-    "y": 180.00002908706665,
-    "z": "3545e2b7.8c73ce",
+    "x": 649.0040016174316,
+    "y": 373.75393629074097,
+    "z": "2525d6cd.61f35a",
     "wires": [
       []
     ]
   },
   {
-    "id": "62f05310.c79d2c",
+    "id": "b01a2888.afc958",
     "type": "execute",
     "name": "execute Properties",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n    <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",
     "comments": "",
     "outputs": 1,
-    "x": 651.3061256408691,
-    "y": 215.0000729560852,
-    "z": "3545e2b7.8c73ce",
+    "x": 685.3061256408691,
+    "y": 408.7539801597595,
+    "z": "2525d6cd.61f35a",
     "wires": [
       []
     ]
   },
   {
-    "id": "d9e42142.36e4c",
+    "id": "eefe56c7.aeba48",
     "type": "execute",
     "name": "execute RestApiCallNode Get token",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
     "comments": "",
     "outputs": 1,
-    "x": 699.004207611084,
-    "y": 649.6669254302979,
-    "z": "3545e2b7.8c73ce",
+    "x": 733.004207611084,
+    "y": 843.4208326339722,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "dbf3792f.06d4c8",
-        "ba692605.0e2fb8"
+        "f0beb476.3438c8",
+        "bfd1c15b.d1a6c"
       ]
     ]
   },
   {
-    "id": "dbf3792f.06d4c8",
+    "id": "f0beb476.3438c8",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 927.004337310791,
-    "y": 631.6669187545776,
-    "z": "3545e2b7.8c73ce",
+    "x": 961.004337310791,
+    "y": 825.420825958252,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "2ce328a2.bcfc88"
+        "7978fb11.837754"
       ]
     ]
   },
   {
-    "id": "2ce328a2.bcfc88",
+    "id": "7978fb11.837754",
     "type": "set",
     "name": "set token-id",
     "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
     "comments": "",
-    "x": 1069.0043449401855,
-    "y": 630.666919708252,
-    "z": "3545e2b7.8c73ce",
+    "x": 1103.0043449401855,
+    "y": 824.4208269119263,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "eb7128c2.0605b8",
+    "id": "518fd324.836c3c",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",
     "comments": "",
-    "x": 1075.0043449401855,
-    "y": 668.059907913208,
-    "z": "3545e2b7.8c73ce",
+    "x": 1109.0043449401855,
+    "y": 861.8138151168823,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "ba692605.0e2fb8",
+    "id": "bfd1c15b.d1a6c",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 926.254337310791,
-    "y": 667.3098258972168,
-    "z": "3545e2b7.8c73ce",
+    "x": 960.254337310791,
+    "y": 861.0637331008911,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "eb7128c2.0605b8"
+        "518fd324.836c3c"
       ]
     ]
   },
   {
-    "id": "ea6762c6.702c5",
-    "type": "for",
-    "name": "for loop tidx - Get transportNetwork ID",
-    "xml": "<for index=\"tidx\" start=\"0\" end=\"`$transportNetworksResp.transportNetworks_length`\">\n    \n    \n",
-    "comments": "",
-    "outputs": 1,
-    "x": 695.0043983459473,
-    "y": 995.3335218429565,
-    "z": "3545e2b7.8c73ce",
-    "wires": [
-      [
-        "f45abeac.b55fa"
-      ]
-    ]
-  },
-  {
-    "id": "f45abeac.b55fa",
-    "type": "block",
-    "name": "block",
-    "xml": "<block>\n",
-    "atomic": "false",
-    "comments": "",
-    "outputs": 1,
-    "x": 911.0047798156738,
-    "y": 996.3337659835815,
-    "z": "3545e2b7.8c73ce",
-    "wires": [
-      [
-        "8c6e090d.8c7a88"
-      ]
-    ]
-  },
-  {
-    "id": "8c6e090d.8c7a88",
+    "id": "e5fec542.f96808",
     "type": "switchNode",
     "name": "switch transportNetworkName same",
-    "xml": "<switch test=\"`$transportNetworksResp.transportNetworks[$tidx].name == $prop.wan.transportNetworkName`\">\n\n",
+    "xml": "<switch test=\"`$transportNetworksResp.data.transportNetworks[$tidx].name == $prop.wan.transportNetworkName`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1132.0050621032715,
-    "y": 994.6670722961426,
-    "z": "3545e2b7.8c73ce",
+    "x": 1166.0050621032715,
+    "y": 1188.420979499817,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "9c44e433.9ec8a8"
+        "5378ee5d.02dde"
       ]
     ]
   },
   {
-    "id": "9c44e433.9ec8a8",
+    "id": "5378ee5d.02dde",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1345.0045127868652,
-    "y": 994.6669902801514,
-    "z": "3545e2b7.8c73ce",
+    "x": 1379.0045127868652,
+    "y": 1188.4208974838257,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "d902b620.732c58"
+        "44786d4c.78c0b4"
       ]
     ]
   },
   {
-    "id": "570db1f7.cbe77",
+    "id": "a080fa5f.ddeb88",
     "type": "switchNode",
     "name": "switch ActivateSDWANDeviceInstance",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\">\n    \n    \n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1559.3375091552734,
-    "y": 227.00005626678467,
-    "z": "3545e2b7.8c73ce",
+    "x": 1593.3375091552734,
+    "y": 420.753963470459,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "8b1ff3eb.69d25"
+        "6c3d1f35.43a16"
       ]
     ]
   },
   {
-    "id": "8b1ff3eb.69d25",
+    "id": "6c3d1f35.43a16",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1782.3375186920166,
-    "y": 227.00005626678467,
-    "z": "3545e2b7.8c73ce",
+    "x": 1816.3375186920166,
+    "y": 420.753963470459,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "48e7d6a0.748938"
+        "4f891fe5.5f59b"
       ]
     ]
   },
   {
-    "id": "c26d092c.4da7c8",
+    "id": "57757525.a0de7c",
     "type": "set",
     "name": "set tmp.devicevidx",
     "xml": "<set>\n<parameter name='tmp.devicevidx' value='`$vidx`' />\n\n",
     "comments": "",
-    "x": 2747.3368530273438,
-    "y": 658.0000810623169,
-    "z": "3545e2b7.8c73ce",
+    "x": 2781.3368530273438,
+    "y": 851.7539882659912,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "a65a9125.dc54c",
+    "id": "388b05e0.8ee79a",
     "type": "switchNode",
     "name": "switch tmp.devicevidx",
     "xml": "<switch test=\"`$tmp.devicevidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1212.3374366760254,
-    "y": 385.0001187324524,
-    "z": "3545e2b7.8c73ce",
+    "x": 1246.3374366760254,
+    "y": 578.7540259361267,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "432fe6b0.129348"
+        "44f27715.04a478"
       ]
     ]
   },
   {
-    "id": "432fe6b0.129348",
+    "id": "44f27715.04a478",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1396.7660026550293,
-    "y": 385.57155561447144,
-    "z": "3545e2b7.8c73ce",
+    "x": 1430.7660026550293,
+    "y": 579.3254628181458,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "4e59531.7ac0fac"
+        "143c0c16.156cc4"
       ]
     ]
   },
   {
-    "id": "4e59531.7ac0fac",
+    "id": "143c0c16.156cc4",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"ActivateSDWANDeviceInstance not found in service-data\" />\n",
     "comments": "",
-    "x": 1537.1947441101074,
-    "y": 385.7144351005554,
-    "z": "3545e2b7.8c73ce",
+    "x": 1571.1947441101074,
+    "y": 579.4683423042297,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "81f1ba7c.aa1808",
+    "id": "fd72d81.72be228",
     "type": "comment",
     "name": "Get deviceId from device resource created for this service",
     "info": "",
     "comments": "",
-    "x": 2196.6707916259766,
-    "y": 324.3333349227905,
-    "z": "3545e2b7.8c73ce",
+    "x": 2230.6707916259766,
+    "y": 518.0872421264648,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "c653d564.103fb8",
+    "id": "d06cae4f.399ba",
     "type": "for",
     "name": "for loop didx - Get deviceId from servicedata",
     "xml": "<for index=\"didx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 2182.671001434326,
-    "y": 247.99997901916504,
-    "z": "3545e2b7.8c73ce",
+    "x": 2216.671001434326,
+    "y": 441.75388622283936,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "b9b11207.7934a"
+        "cc06f146.51f0f"
       ]
     ]
   },
   {
-    "id": "7c90973.05bfa68",
+    "id": "fc2a7486.890a38",
     "type": "switchNode",
     "name": "switch name (DeviceName)",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].name == 'name'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2200.671600341797,
-    "y": 386.00022411346436,
-    "z": "3545e2b7.8c73ce",
+    "x": 2234.671600341797,
+    "y": 579.7541313171387,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "41a73401.a0e75c"
+        "e011449c.868068"
       ]
     ]
   },
   {
-    "id": "41a73401.a0e75c",
+    "id": "e011449c.868068",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2402.672092437744,
-    "y": 380.0002841949463,
-    "z": "3545e2b7.8c73ce",
+    "x": 2436.672092437744,
+    "y": 573.7541913986206,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "edf1bf9c.83bf3"
+        "4999ecb0.3d8164"
       ]
     ]
   },
   {
-    "id": "f946d98b.8721e8",
+    "id": "4aaf0dac.f4bd44",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 965.0041046142578,
-    "y": 460.6666965484619,
-    "z": "3545e2b7.8c73ce",
+    "x": 999.0041046142578,
+    "y": 654.4206037521362,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "6e3361b7.a1918"
+        "3237e366.c0b81c"
       ]
     ]
   },
   {
-    "id": "b9b11207.7934a",
+    "id": "cc06f146.51f0f",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1975.003890991211,
-    "y": 384.6667251586914,
-    "z": "3545e2b7.8c73ce",
+    "x": 2009.003890991211,
+    "y": 578.4206323623657,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "7c90973.05bfa68"
+        "fc2a7486.890a38"
       ]
     ]
   },
   {
-    "id": "f5314270.2417a",
+    "id": "1d887fbe.2fb47",
     "type": "switchNode",
     "name": "switch deviceId",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].name == 'deviceId'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3046.0050506591797,
-    "y": 598.6670217514038,
-    "z": "3545e2b7.8c73ce",
+    "x": 3080.0050506591797,
+    "y": 792.4209289550781,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "6eb2a758.9628c8"
+        "e9c4ed3a.99165"
       ]
     ]
   },
   {
-    "id": "6eb2a758.9628c8",
+    "id": "e9c4ed3a.99165",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3199.0054206848145,
-    "y": 599.6670989990234,
-    "z": "3545e2b7.8c73ce",
+    "x": 3233.0054206848145,
+    "y": 793.4210062026978,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "2a323a58.ea63c6"
+        "49a9daf2.48f304"
       ]
     ]
   },
   {
-    "id": "2a323a58.ea63c6",
+    "id": "49a9daf2.48f304",
     "type": "set",
     "name": "set prop.wan.deviceId",
     "xml": "<set>\n<parameter name='prop.wan.deviceId' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />\n",
     "comments": "",
-    "x": 3368.0060272216797,
-    "y": 598.2671337127686,
-    "z": "3545e2b7.8c73ce",
+    "x": 3402.0060272216797,
+    "y": 792.0210409164429,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "48e7d6a0.748938",
+    "id": "4f891fe5.5f59b",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1923.6708374023438,
-    "y": 249.0000762939453,
-    "z": "3545e2b7.8c73ce",
+    "x": 1957.6708374023438,
+    "y": 442.75398349761963,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "c653d564.103fb8"
+        "d06cae4f.399ba"
       ]
     ]
   },
   {
-    "id": "edf1bf9c.83bf3",
+    "id": "4999ecb0.3d8164",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 2221.0051345825195,
-    "y": 463.00025367736816,
-    "z": "3545e2b7.8c73ce",
+    "x": 2255.0051345825195,
+    "y": 656.7541608810425,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "8e851a14.33c2e8"
+        "46a841ba.4af92"
       ]
     ]
   },
   {
-    "id": "15e6beda.ef5931",
+    "id": "c5bcabb0.9f3978",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2610.0058403015137,
-    "y": 466.0003786087036,
-    "z": "3545e2b7.8c73ce",
+    "x": 2644.0058403015137,
+    "y": 659.7542858123779,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "8b8e8a8.6844f78"
+        "512e7a73.c439f4"
       ]
     ]
   },
   {
-    "id": "7772ec9b.efcac4",
+    "id": "7b4fae02.aca0c",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1912.3376846313477,
-    "y": 151.00003242492676,
-    "z": "3545e2b7.8c73ce",
-    "wires": [
-      [
-        "db3e11bd.eb0ca",
-        "3f24458e.06f9fa",
-        "a565af06.127cb",
-        "9a2c7dc6.4b893"
-      ]
-    ]
-  },
-  {
-    "id": "e220c2f5.e3641",
-    "type": "for",
-    "name": "for loop wanPortidx - Get wanPortId",
-    "xml": "<for index=\"wanPortidx\" start=\"0\" end=\"`$wanPortResp_length`\">\n    \n    \n",
-    "comments": "",
-    "outputs": 1,
-    "x": 693.3374061584473,
-    "y": 1231.0003681182861,
-    "z": "3545e2b7.8c73ce",
-    "wires": [
-      [
-        "50e167ac.c7e768"
-      ]
-    ]
-  },
-  {
-    "id": "50e167ac.c7e768",
-    "type": "block",
-    "name": "block",
-    "xml": "<block>\n",
-    "atomic": "false",
-    "comments": "",
-    "outputs": 1,
-    "x": 910.3379402160645,
-    "y": 1232.000452041626,
-    "z": "3545e2b7.8c73ce",
+    "x": 1946.3376846313477,
+    "y": 344.7539396286011,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "97aa93ae.f7018"
+        "5f826b27.adc144",
+        "3b7b404e.14ae9",
+        "11bb0a8f.c8a415",
+        "207a1eb2.66eaf2"
       ]
     ]
   },
   {
-    "id": "97aa93ae.f7018",
-    "type": "switchNode",
-    "name": "switch deviceId same",
-    "xml": "<switch test=\"`$wanPortResp[$wanPortidx].deviceId == $prop.deviceId`\">\n\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1084.3385925292969,
-    "y": 1239.3339138031006,
-    "z": "3545e2b7.8c73ce",
-    "wires": [
-      [
-        "3a30ba64.e39ed6"
-      ]
-    ]
-  },
-  {
-    "id": "3a30ba64.e39ed6",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1252.3377742767334,
-    "y": 1228.333701133728,
-    "z": "3545e2b7.8c73ce",
-    "wires": [
-      [
-        "3ba0cd34.c2b072"
-      ]
-    ]
-  },
-  {
-    "id": "3ba0cd34.c2b072",
+    "id": "66231f4c.1fe22",
     "type": "set",
     "name": "set prop.wan.wanPortId",
-    "xml": "<set>\n<parameter name='prop.wan.wanPortId' value='`$wanPortResp[$wanPortidx].id`' />\n",
+    "xml": "<set>\n<parameter name='prop.wan.wanPortId' value='`$wanPortResp.success[0].id`' />\n",
     "comments": "",
-    "x": 1334.3284950256348,
-    "y": 1278.6572723388672,
-    "z": "3545e2b7.8c73ce",
+    "x": 693.3285293579102,
+    "y": 1455.4113006591797,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "2847803.c88858",
-    "type": "for",
-    "name": "for loop portidx - Get device portId",
-    "xml": "<for index=\"portidx\" start=\"0\" end=\"`$portResp_length`\">\n    \n    \n",
-    "comments": "",
-    "outputs": 1,
-    "x": 686.0040702819824,
-    "y": 831.333553314209,
-    "z": "3545e2b7.8c73ce",
-    "wires": [
-      [
-        "ec540fb0.f5947"
-      ]
-    ]
-  },
-  {
-    "id": "ec540fb0.f5947",
-    "type": "block",
-    "name": "block",
-    "xml": "<block>\n",
-    "atomic": "false",
-    "comments": "",
-    "outputs": 1,
-    "x": 887.0044059753418,
-    "y": 832.3337163925171,
-    "z": "3545e2b7.8c73ce",
-    "wires": [
-      [
-        "b9169b7.ff5dd68"
-      ]
-    ]
-  },
-  {
-    "id": "b9169b7.ff5dd68",
-    "type": "switchNode",
-    "name": "switch deviceId same",
-    "xml": "<switch test=\"`$portResp[$portidx].deviceId == $prop.deviceId`\">\n\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1046.0049057006836,
-    "y": 830.6671323776245,
-    "z": "3545e2b7.8c73ce",
-    "wires": [
-      [
-        "165db6.9ea6824a"
-      ]
-    ]
-  },
-  {
-    "id": "165db6.9ea6824a",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1219.0042743682861,
-    "y": 831.6669683456421,
-    "z": "3545e2b7.8c73ce",
-    "wires": [
-      [
-        "a1161094.a324"
-      ]
-    ]
-  },
-  {
-    "id": "a1161094.a324",
+    "id": "8569d96f.59e838",
     "type": "set",
     "name": "set prop.wan.devicePortId",
-    "xml": "<set>\n<parameter name='prop.wan.devicePortId' value='`$portResp[$portidx].id`' />\n",
+    "xml": "<set>\n<parameter name='prop.wan.devicePortId' value='`$portResp.success[0].id`' />\n",
     "comments": "",
-    "x": 1379.99515914917,
-    "y": 882.9906177520752,
-    "z": "3545e2b7.8c73ce",
+    "x": 703.9952239990234,
+    "y": 1036.7445602416992,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "69fec1ed.0fee",
+    "id": "f2d45048.04d33",
     "type": "comment",
     "name": "Create port",
     "info": "",
     "comments": "",
-    "x": 617.0039558410645,
-    "y": 747.3335208892822,
-    "z": "3545e2b7.8c73ce",
+    "x": 651.0039558410645,
+    "y": 941.0874280929565,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "595aa329.443d7c",
+    "id": "f7f10711.f1f2c8",
     "type": "comment",
     "name": "Get network id",
     "info": "",
     "comments": "",
-    "x": 613.0039558410645,
-    "y": 922.3334903717041,
-    "z": "3545e2b7.8c73ce",
+    "x": 702.0040283203125,
+    "y": 1119.0873865485191,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "a89f747e.6de7f8",
+    "id": "8a3200f.80e49",
     "type": "comment",
     "name": "Create wan port",
     "info": "",
     "comments": "",
-    "x": 628.0041046142578,
-    "y": 1069.3336572647095,
-    "z": "3545e2b7.8c73ce",
+    "x": 669.0041122436523,
+    "y": 1252.0875997543335,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "fdc236b1.efb848",
+    "id": "51280d82.cd5cc4",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 997.0040283203125,
-    "y": 1157.000238418579,
-    "z": "3545e2b7.8c73ce",
+    "x": 1031.0040283203125,
+    "y": 1350.7541456222534,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "a6e9f6d5.ea4dd8"
+        "7e3eadf1.9f0d14"
       ]
     ]
   },
   {
-    "id": "b0038d4b.581a3",
+    "id": "727c41a7.9551b",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 997.0040245056152,
-    "y": 1197.0004034042358,
-    "z": "3545e2b7.8c73ce",
+    "x": 1031.0040245056152,
+    "y": 1390.7543106079102,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "be9a3635.dfb8c8"
+        "e2be8d7c.bac7d"
       ]
     ]
   },
   {
-    "id": "be9a3635.dfb8c8",
+    "id": "e2be8d7c.bac7d",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "comments": "",
     "outputs": 1,
-    "x": 1141.0040397644043,
-    "y": 1196.0002403259277,
-    "z": "3545e2b7.8c73ce",
+    "x": 1175.0040397644043,
+    "y": 1389.754147529602,
+    "z": "2525d6cd.61f35a",
     "wires": [
       []
     ]
   },
   {
-    "id": "a6e9f6d5.ea4dd8",
+    "id": "7e3eadf1.9f0d14",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create wan port rest api\" />\n",
     "comments": "",
-    "x": 1139.0043601989746,
-    "y": 1156.000238418579,
-    "z": "3545e2b7.8c73ce",
+    "x": 1173.0043601989746,
+    "y": 1349.7541456222534,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "dad0aff7.4b6c2",
+    "id": "394b70c0.ac6f",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1044.0039558410645,
-    "y": 908.0001773834229,
-    "z": "3545e2b7.8c73ce",
+    "x": 1078.0039558410645,
+    "y": 1101.7540845870972,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "63d1b7a0.e4fbc8"
+        "7a566c5c.f46854"
       ]
     ]
   },
   {
-    "id": "91b71ecc.ea421",
+    "id": "af3e9c1f.7be91",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1044.0039520263672,
-    "y": 948.0003423690796,
-    "z": "3545e2b7.8c73ce",
+    "x": 1078.0039520263672,
+    "y": 1141.754249572754,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "45c0e517.c6f5ac"
+        "1ebcd5ee.10112a"
       ]
     ]
   },
   {
-    "id": "45c0e517.c6f5ac",
+    "id": "1ebcd5ee.10112a",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "comments": "",
     "outputs": 1,
-    "x": 1188.0039672851562,
-    "y": 947.0001792907715,
-    "z": "3545e2b7.8c73ce",
+    "x": 1222.0039672851562,
+    "y": 1140.7540864944458,
+    "z": "2525d6cd.61f35a",
     "wires": [
       []
     ]
   },
   {
-    "id": "63d1b7a0.e4fbc8",
+    "id": "7a566c5c.f46854",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Get transport network info rest api\" />\n",
     "comments": "",
-    "x": 1186.0042877197266,
-    "y": 907.0001773834229,
-    "z": "3545e2b7.8c73ce",
+    "x": 1220.0042877197266,
+    "y": 1100.7540845870972,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "a565af06.127cb",
+    "id": "11bb0a8f.c8a415",
     "type": "call",
     "name": "call sdwan-get-wan-param",
     "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 2184.670539855957,
-    "y": 157.000075340271,
-    "z": "3545e2b7.8c73ce",
+    "x": 2218.670539855957,
+    "y": 350.7539825439453,
+    "z": "2525d6cd.61f35a",
     "wires": [
       []
     ]
   },
   {
-    "id": "3f24458e.06f9fa",
+    "id": "3b7b404e.14ae9",
     "type": "set",
     "name": "set vnf-request-input.",
     "xml": "<set>\n<parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\n\n",
     "comments": "",
-    "x": 2153.670539855957,
-    "y": 107.00009250640869,
-    "z": "3545e2b7.8c73ce",
+    "x": 2187.670539855957,
+    "y": 300.753999710083,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "7cd20fc3.2681b",
+    "id": "5738aa95.6c6dc4",
     "type": "comment",
     "name": "This is also required for template parameters update",
     "info": "",
     "comments": "",
-    "x": 2549.0043029785156,
-    "y": 203.0000352859497,
-    "z": "3545e2b7.8c73ce",
+    "x": 2583.0043029785156,
+    "y": 396.753942489624,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "400dec0b.3df124",
+    "id": "f74da2b3.1326d",
     "type": "switchNode",
     "name": "switch ActivateSiteInstance",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`\">\n    \n    \n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1522.0043487548828,
-    "y": 192.00004863739014,
-    "z": "3545e2b7.8c73ce",
+    "x": 1556.0043487548828,
+    "y": 385.75395584106445,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "a948b445.19bab8"
+        "3fa03eb7.c59572"
       ]
     ]
   },
   {
-    "id": "a948b445.19bab8",
+    "id": "3fa03eb7.c59572",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1718.0045318603516,
-    "y": 193.00004863739014,
-    "z": "3545e2b7.8c73ce",
+    "x": 1752.0045318603516,
+    "y": 386.75395584106445,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "50e42e52.250bb"
+        "5e72f4d2.b107fc"
       ]
     ]
   },
   {
-    "id": "50e42e52.250bb",
+    "id": "5e72f4d2.b107fc",
     "type": "set",
     "name": "set tmp.siteVidx",
     "xml": "<set>\n<parameter name='tmp.siteVidx' value='`$vidx`' />\n<parameter name='ctx.site.' value='`$service-data.vnfs.vnf[$vidx].`' />\n\n",
     "comments": "",
-    "x": 1904.0038299560547,
-    "y": 190.0000524520874,
-    "z": "3545e2b7.8c73ce",
+    "x": 1938.0038299560547,
+    "y": 383.7539596557617,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "ae97242b.dc5558",
+    "id": "5cf9118c.68854",
     "type": "switchNode",
     "name": "switch tmp.siteVidx",
     "xml": "<switch test=\"`$tmp.siteVidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1195.6706581115723,
-    "y": 334.00006914138794,
-    "z": "3545e2b7.8c73ce",
+    "x": 1229.6706581115723,
+    "y": 527.7539763450623,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "31115c1a.df8dd4"
+        "9765105d.6b72d"
       ]
     ]
   },
   {
-    "id": "31115c1a.df8dd4",
+    "id": "9765105d.6b72d",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1370.0993690490723,
-    "y": 334.5715208053589,
-    "z": "3545e2b7.8c73ce",
+    "x": 1404.0993690490723,
+    "y": 528.3254280090332,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "efdc94d7.becbf8"
+        "3a85e200.dcaaae"
       ]
     ]
   },
   {
-    "id": "efdc94d7.becbf8",
+    "id": "3a85e200.dcaaae",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"ActivateSiteInstance not found in service-data\" />\n",
     "comments": "",
-    "x": 1512.5280876159668,
-    "y": 333.71438360214233,
-    "z": "3545e2b7.8c73ce",
+    "x": 1546.5280876159668,
+    "y": 527.4682908058167,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "8e851a14.33c2e8",
+    "id": "46a841ba.4af92",
     "type": "switchNode",
     "name": "switch deviceName match",
     "xml": "<switch test=\"`$prop.wan.deviceName == $service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].value`\">\n\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2426.671859741211,
-    "y": 464.00031757354736,
-    "z": "3545e2b7.8c73ce",
+    "x": 2460.671859741211,
+    "y": 657.7542247772217,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "15e6beda.ef5931"
+        "c5bcabb0.9f3978"
       ]
     ]
   },
   {
-    "id": "8b8e8a8.6844f78",
+    "id": "512e7a73.c439f4",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 2509.3377990722656,
-    "y": 538.0001611709595,
-    "z": "3545e2b7.8c73ce",
+    "x": 2543.3377990722656,
+    "y": 731.7540683746338,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "7124d1e8.c1afc",
-        "c26d092c.4da7c8"
+        "4c673d0.8ff4ac4",
+        "57757525.a0de7c"
       ]
     ]
   },
   {
-    "id": "7124d1e8.c1afc",
+    "id": "4c673d0.8ff4ac4",
     "type": "for",
     "name": "for loop deviceidx - Get deviceId from servicedata",
     "xml": "<for index=\"deviceidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 2789.5349502563477,
-    "y": 533.0313501358032,
-    "z": "3545e2b7.8c73ce",
+    "x": 2823.5349502563477,
+    "y": 726.7852573394775,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "29242480.1ab1ec"
+        "536e54bd.8b3bec"
       ]
     ]
   },
   {
-    "id": "29242480.1ab1ec",
+    "id": "536e54bd.8b3bec",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 2866.5356826782227,
-    "y": 597.0314493179321,
-    "z": "3545e2b7.8c73ce",
+    "x": 2900.5356826782227,
+    "y": 790.7853565216064,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "f5314270.2417a"
+        "1d887fbe.2fb47"
       ]
     ]
   },
   {
-    "id": "9a2c7dc6.4b893",
+    "id": "207a1eb2.66eaf2",
     "type": "record",
     "name": "record",
     "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\".....\"/>\n<parameter name=\"field3\" value=\"prop.wan.deviceName\"/>\n<parameter name=\"field4\" value='`$prop.wan.deviceName`'/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2112.535285949707,
-    "y": 205.03126621246338,
-    "z": "3545e2b7.8c73ce",
+    "x": 2146.535285949707,
+    "y": 398.7851734161377,
+    "z": "2525d6cd.61f35a",
     "wires": [
       []
     ]
   },
   {
-    "id": "acc92682.3c6fd8",
+    "id": "59c48b6.04c5c74",
     "type": "for",
     "name": "for vidx..service-data.vnfs.vnf_length[]",
     "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1238.003978729248,
-    "y": 228.00001621246338,
-    "z": "3545e2b7.8c73ce",
+    "x": 1272.003978729248,
+    "y": 421.7539234161377,
+    "z": "2525d6cd.61f35a",
     "wires": [
       [
-        "570db1f7.cbe77",
-        "400dec0b.3df124"
+        "a080fa5f.ddeb88",
+        "f74da2b3.1326d"
       ]
     ]
   },
   {
-    "id": "ca279788.45f118",
+    "id": "8814bd0.a9cd04",
     "type": "set",
     "name": "copy input data to service data",
-    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />",
+    "xml": "<set>\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />",
     "comments": "",
-    "x": 685.03515625,
-    "y": 1360.5311269760132,
-    "z": "3545e2b7.8c73ce",
+    "x": 705.0351715087891,
+    "y": 1610.2851600646973,
+    "z": "2525d6cd.61f35a",
     "wires": []
   },
   {
-    "id": "a2ce1e1.66d8de",
+    "id": "eac4599c.f1e908",
     "type": "comment",
     "name": "TODO: split ip/mask",
     "info": "",
     "comments": "",
-    "x": 1059.00390625,
-    "y": 1043.50390625,
-    "z": "3545e2b7.8c73ce",
+    "x": 1093.00390625,
+    "y": 1237.2578134536743,
+    "z": "2525d6cd.61f35a",
+    "wires": []
+  },
+  {
+    "id": "aa148c7f.0d986",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 945.0047798156738,
+    "y": 1190.0876731872559,
+    "z": "2525d6cd.61f35a",
+    "wires": [
+      [
+        "e5fec542.f96808"
+      ]
+    ]
+  },
+  {
+    "id": "2af7b981.494176",
+    "type": "for",
+    "name": "for loop tidx - Get transportNetwork ID",
+    "xml": "<for index=\"tidx\" start=\"0\" end=\"`$transportNetworksResp.data.transportNetworks_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 729.0043983459473,
+    "y": 1189.0874290466309,
+    "z": "2525d6cd.61f35a",
+    "wires": [
+      [
+        "aa148c7f.0d986"
+      ]
+    ]
+  },
+  {
+    "id": "d3523f5e.150e2",
+    "type": "set",
+    "name": "set wan portId to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='wanPortId' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.wan.wanPortId`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\n\n\n\n\n",
+    "comments": "",
+    "x": 706.0038986206055,
+    "y": 1560.0040016174316,
+    "z": "2525d6cd.61f35a",
     "wires": []
   }
 ]
index 68bc52c..ea2c70f 100644 (file)
@@ -1,20 +1,20 @@
 [
   {
-    "id": "f7c47e43.722a8",
+    "id": "469452cb.bb081c",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 131.00390625,
-    "y": 50.00390625,
-    "z": "61d54760.a4d0c8",
+    "x": 110.00390625,
+    "y": 47.00390625,
+    "z": "fb90012b.616c1",
     "wires": [
       [
-        "df50ad92.5b9f3"
+        "c7697d03.d4e67"
       ]
     ]
   },
   {
-    "id": "df50ad92.5b9f3",
+    "id": "c7697d03.d4e67",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 230.28960418701172,
-    "y": 124.24201414268464,
-    "z": "61d54760.a4d0c8",
+    "x": 209.28960418701172,
+    "y": 121.24201414268464,
+    "z": "fb90012b.616c1",
     "wires": [
       [
-        "7a9c4555.b9551c"
+        "1e04cec3.e58791"
       ]
     ]
   },
   {
-    "id": "7a9c4555.b9551c",
+    "id": "1e04cec3.e58791",
     "type": "method",
     "name": "method sdwan-vnf-topology-operation-wanport-create",
     "xml": "<method rpc='sdwan-vnf-topology-operation-wanport-create' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 254.43252563476562,
-    "y": 213.0039258003235,
-    "z": "61d54760.a4d0c8",
+    "x": 233.43252563476562,
+    "y": 210.0039258003235,
+    "z": "fb90012b.616c1",
     "wires": [
       [
-        "19a1bf06.151541"
+        "415535ab.ee3b9c"
       ]
     ]
   },
   {
-    "id": "19a1bf06.151541",
+    "id": "415535ab.ee3b9c",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 362.6706085205078,
-    "y": 420.67058992385864,
-    "z": "61d54760.a4d0c8",
+    "x": 341.6706085205078,
+    "y": 417.67058992385864,
+    "z": "fb90012b.616c1",
     "wires": [
       [
-        "a1f3b1e9.35545",
-        "f570a4d2.187c18",
-        "90591b72.96d098",
-        "b3840dbc.6104c",
-        "4c4bb443.a3389c",
-        "44f64d1d.aa7064",
-        "5baacb87.e7da64",
-        "f0cbc16c.cad4b",
-        "a062fc34.476f9",
-        "cf3398f4.969708",
-        "b5b128b4.4b50a8",
-        "795a527a.112ffc",
-        "f82a7101.bfc5b"
+        "d5db9f82.a9caa",
+        "105b56f8.ca1c29",
+        "e1b2d352.980df",
+        "5e7b33b7.c9f95c",
+        "1e1b598f.ff6d76",
+        "24d8ed6f.1c08a2",
+        "76af4df6.0affe4",
+        "8d749358.a9898",
+        "a234fc68.a7971",
+        "f1475869.e78fd8",
+        "a35f1e97.dfac6",
+        "788b5a8e.cd86b4",
+        "17c0b4a9.0b865b"
       ]
     ]
   },
   {
-    "id": "a1f3b1e9.35545",
+    "id": "d5db9f82.a9caa",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 652.3375396728516,
-    "y": 872.3377075195312,
-    "z": "61d54760.a4d0c8",
+    "x": 631.3375396728516,
+    "y": 869.3377075195312,
+    "z": "fb90012b.616c1",
     "wires": []
   },
   {
-    "id": "f570a4d2.187c18",
+    "id": "105b56f8.ca1c29",
     "type": "save",
     "name": "save sdwan device port configuration in AAI",
     "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \n      key='wan-port-config.id = $prop.vnf-index' >\n<parameter name=\"id\" value=\"`$prop.vnf-index`\" />\n<parameter name=\"name\" value=\"`$prop.wan.name`\" />\n<parameter name=\"device-id\" value=\"`$prop.wan.deviceName`\" />\n<parameter name='vlan-id' value=\"`$prop.wan.vlanId`\" />\n<parameter name=\"ip-address\" value=\"`$prop.wan.ipAdddress`\" />\n<parameter name=\"provider-ip-address\" value=\"`$prop.wan.providerIpAddress`\" />\n<parameter name=\"input-bandwidth\" value=\"`$prop.wan.inputBandwidth`\" />\n<parameter name=\"output-bandwidth\" value=\"`$prop.wan.outputBandwidth`\" />\n<parameter name=\"description\" value=\"`$prop.wan.description`\" />\n<parameter name=\"port-type\" value=\"`$prop.wan.portType`\" />\n<parameter name=\"port-number\" value=\"`$prop.wan.portNumber`\" />\n<parameter name=\"transport-network-name\" value=\"`$prop.wan.transportNetworkName`\" />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` \" />\n",
     "comments": "",
     "outputs": 1,
-    "x": 739.0042953491211,
-    "y": 779.5599503517151,
-    "z": "61d54760.a4d0c8",
+    "x": 718.0042953491211,
+    "y": 776.5599503517151,
+    "z": "fb90012b.616c1",
     "wires": [
       []
     ]
   },
   {
-    "id": "90591b72.96d098",
+    "id": "e1b2d352.980df",
     "type": "for",
     "name": "for loop idx - VNF input parameters",
     "xml": "<for index=\"idx\" start=\"0\" end=\"`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 717.0043640136719,
-    "y": 446.67932987213135,
-    "z": "61d54760.a4d0c8",
+    "x": 696.0043640136719,
+    "y": 443.67932987213135,
+    "z": "fb90012b.616c1",
     "wires": [
       [
-        "b4473f3b.51629"
+        "971e9894.559198"
       ]
     ]
   },
   {
-    "id": "b4473f3b.51629",
+    "id": "971e9894.559198",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 931.7827072143555,
-    "y": 444.23491382598877,
-    "z": "61d54760.a4d0c8",
+    "x": 910.7827072143555,
+    "y": 441.23491382598877,
+    "z": "fb90012b.616c1",
     "wires": [
       [
-        "3e1cd824.f76ba8",
-        "706d3a5.3e853c4"
+        "5db5d5cb.e3665c",
+        "137642b5.af1c4d"
       ]
     ]
   },
   {
-    "id": "8b4706cb.23dc38",
+    "id": "54f3a8ba.c8c8f8",
     "type": "comment",
     "name": "set input parameters",
     "info": "",
     "comments": "",
-    "x": 935.6775550842285,
-    "y": 572.6009178161621,
-    "z": "61d54760.a4d0c8",
+    "x": 914.6775550842285,
+    "y": 569.6009178161621,
+    "z": "fb90012b.616c1",
     "wires": []
   },
   {
-    "id": "b3840dbc.6104c",
+    "id": "5e7b33b7.c9f95c",
     "type": "switchNode",
     "name": "switch service-data.vnfs.vnf_length",
     "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 727.9937286376953,
-    "y": 143.60080528259277,
-    "z": "61d54760.a4d0c8",
+    "x": 706.9937286376953,
+    "y": 140.60080528259277,
+    "z": "fb90012b.616c1",
     "wires": [
       [
-        "2465f202.f0a9ce",
-        "506845c6.11b4dc"
+        "58cb915c.e63fb",
+        "61229cc4.7e2a84"
       ]
     ]
   },
   {
-    "id": "2465f202.f0a9ce",
+    "id": "58cb915c.e63fb",
     "type": "other",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 964.7079563140869,
-    "y": 133.7436351776123,
-    "z": "61d54760.a4d0c8",
+    "x": 943.7079563140869,
+    "y": 130.7436351776123,
+    "z": "fb90012b.616c1",
     "wires": [
       [
-        "75a2f10a.06bc7"
+        "2a580441.a1df1c"
       ]
     ]
   },
   {
-    "id": "506845c6.11b4dc",
+    "id": "61229cc4.7e2a84",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 960.1366729736328,
-    "y": 172.02948570251465,
-    "z": "61d54760.a4d0c8",
+    "x": 939.1366729736328,
+    "y": 169.02948570251465,
+    "z": "fb90012b.616c1",
     "wires": [
       [
-        "4460ebdc.a1f384"
+        "ea6697cb.65e638"
       ]
     ]
   },
   {
-    "id": "4460ebdc.a1f384",
+    "id": "ea6697cb.65e638",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1092.8508682250977,
-    "y": 177.02942562103271,
-    "z": "61d54760.a4d0c8",
+    "x": 1071.8508682250977,
+    "y": 174.02942562103271,
+    "z": "fb90012b.616c1",
     "wires": [
       [
-        "7e7a019f.eac06",
-        "6d299d3a.328f54"
+        "1f8d31b6.15942e",
+        "3f14ea6e.335126"
       ]
     ]
   },
   {
-    "id": "75a2f10a.06bc7",
+    "id": "2a580441.a1df1c",
     "type": "set",
     "name": "set vnf-index=0",
     "xml": "<set>\n<parameter name='vnf-index' value='0' />\n",
     "comments": "",
-    "x": 1120.9937705993652,
-    "y": 132.74371528625488,
-    "z": "61d54760.a4d0c8",
+    "x": 1099.9937705993652,
+    "y": 129.74371528625488,
+    "z": "fb90012b.616c1",
     "wires": []
   },
   {
-    "id": "7e7a019f.eac06",
+    "id": "1f8d31b6.15942e",
     "type": "set",
     "name": "set vnf-index = vnf_length",
     "xml": "<set>\n<parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\n",
     "comments": "",
-    "x": 1321.993782043457,
-    "y": 149.31512928009033,
-    "z": "61d54760.a4d0c8",
+    "x": 1300.993782043457,
+    "y": 146.31512928009033,
+    "z": "fb90012b.616c1",
     "wires": []
   },
   {
-    "id": "6d299d3a.328f54",
+    "id": "3f14ea6e.335126",
     "type": "for",
     "name": "for each existing VNF",
     "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1304.422248840332,
-    "y": 189.31509113311768,
-    "z": "61d54760.a4d0c8",
+    "x": 1283.422248840332,
+    "y": 186.31509113311768,
+    "z": "fb90012b.616c1",
     "wires": [
       [
-        "984f572c.ac6fc8"
+        "5dff7a8c.9711b4"
       ]
     ]
   },
   {
-    "id": "984f572c.ac6fc8",
+    "id": "5dff7a8c.9711b4",
     "type": "switchNode",
     "name": "switch vnf-information.vnf-id == service-data.vnfs.vnf[].vnf-id",
     "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1662.7080307006836,
-    "y": 188.88659477233887,
-    "z": "61d54760.a4d0c8",
+    "x": 1641.7080307006836,
+    "y": 185.88659477233887,
+    "z": "fb90012b.616c1",
     "wires": [
       [
-        "51f1d598.2ca1cc"
+        "b200b751.6600d8"
       ]
     ]
   },
   {
-    "id": "bbaa30a9.5e134",
+    "id": "5634d26b.2c620c",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id\n      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`\" />\n",
     "comments": "",
-    "x": 2105.5650024414062,
-    "y": 189.4580249786377,
-    "z": "61d54760.a4d0c8",
+    "x": 2084.5650024414062,
+    "y": 186.4580249786377,
+    "z": "fb90012b.616c1",
     "wires": []
   },
   {
-    "id": "51f1d598.2ca1cc",
+    "id": "b200b751.6600d8",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1967.9936714172363,
-    "y": 188.45802116394043,
-    "z": "61d54760.a4d0c8",
+    "x": 1946.9936714172363,
+    "y": 185.45802116394043,
+    "z": "fb90012b.616c1",
     "wires": [
       [
-        "bbaa30a9.5e134"
+        "5634d26b.2c620c"
       ]
     ]
   },
   {
-    "id": "44f64d1d.aa7064",
+    "id": "24d8ed6f.1c08a2",
     "type": "execute",
     "name": "execute generate-vnf-index",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.vnf-index\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 706.9936218261719,
-    "y": 275.60077476501465,
-    "z": "61d54760.a4d0c8",
+    "x": 685.9936218261719,
+    "y": 272.60077476501465,
+    "z": "fb90012b.616c1",
     "wires": [
       []
     ]
   },
   {
-    "id": "4c4bb443.a3389c",
+    "id": "1e1b598f.ff6d76",
     "type": "set",
     "name": "set new vnf_length",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\n",
     "comments": "",
-    "x": 680.9936065673828,
-    "y": 240.60078287124634,
-    "z": "61d54760.a4d0c8",
+    "x": 659.9936065673828,
+    "y": 237.60078287124634,
+    "z": "fb90012b.616c1",
     "wires": []
   },
   {
-    "id": "f0cbc16c.cad4b",
+    "id": "8d749358.a9898",
     "type": "set",
     "name": "set vnf-level-oper-status to Created",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
     "comments": "",
-    "x": 719.9936294555664,
-    "y": 691.6010417938232,
-    "z": "61d54760.a4d0c8",
+    "x": 704.9936981201172,
+    "y": 688.6010332107544,
+    "z": "fb90012b.616c1",
     "wires": []
   },
   {
-    "id": "5baacb87.e7da64",
+    "id": "76af4df6.0affe4",
     "type": "set",
     "name": "copy input data",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\n\n",
     "comments": "",
-    "x": 659.8468208312988,
-    "y": 645.5972957611084,
-    "z": "61d54760.a4d0c8",
+    "x": 638.8468208312988,
+    "y": 642.5972957611084,
+    "z": "fb90012b.616c1",
     "wires": []
   },
   {
-    "id": "a062fc34.476f9",
+    "id": "a234fc68.a7971",
     "type": "save",
     "name": "save service relationship in AAI",
     "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \n      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id \n         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id \n         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"wan-port-config\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/wan-port-configs/wan-port-config/' + $prop.vnf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"wan-port-config.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.vnf-index`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 705.9936294555664,
-    "y": 827.6010503768921,
-    "z": "61d54760.a4d0c8",
+    "x": 688.9936981201172,
+    "y": 824.6011228561401,
+    "z": "fb90012b.616c1",
     "wires": [
       []
     ]
   },
   {
-    "id": "cf3398f4.969708",
+    "id": "f1475869.e78fd8",
     "type": "set",
     "name": "set vnf-index and vnf-object-path",
     "xml": "<set>\n<parameter name='vnfId' value='`$prop.vnf-index`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` \" />",
     "comments": "",
-    "x": 712.9936294555664,
-    "y": 735.601044178009,
-    "z": "61d54760.a4d0c8",
+    "x": 691.9936294555664,
+    "y": 732.601044178009,
+    "z": "fb90012b.616c1",
     "wires": []
   },
   {
-    "id": "b5b128b4.4b50a8",
+    "id": "a35f1e97.dfac6",
     "type": "record",
     "name": "record",
     "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"sdwan-wanport-vnf-topology-operation-create\"/>\n<parameter name=\"field3\" value=\"SDWAN-Config\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 645.0039329528809,
-    "y": 328.0039367675781,
-    "z": "61d54760.a4d0c8",
+    "x": 624.0039329528809,
+    "y": 325.0039367675781,
+    "z": "fb90012b.616c1",
     "wires": [
       []
     ]
   },
   {
-    "id": "e311900d.ece88",
+    "id": "e6a6ec15.a72f5",
     "type": "comment",
     "name": "Take the parameter names by removing prefix",
     "info": "",
     "comments": "",
-    "x": 825.0042266845703,
-    "y": 416.0039920806885,
-    "z": "61d54760.a4d0c8",
+    "x": 804.0042266845703,
+    "y": 413.0039920806885,
+    "z": "fb90012b.616c1",
     "wires": []
   },
   {
-    "id": "3e1cd824.f76ba8",
+    "id": "5db5d5cb.e3665c",
     "type": "execute",
     "name": "execute split parameterName",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1145.038818359375,
-    "y": 394.9830369949341,
-    "z": "61d54760.a4d0c8",
+    "x": 1124.038818359375,
+    "y": 391.9830369949341,
+    "z": "fb90012b.616c1",
     "wires": [
       []
     ]
   },
   {
-    "id": "706d3a5.3e853c4",
+    "id": "137642b5.af1c4d",
     "type": "set",
     "name": "set parameterName",
     "xml": "<set>\n<parameter name=\"`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",
     "comments": "",
-    "x": 1113.4833221435547,
-    "y": 463.98312282562256,
-    "z": "61d54760.a4d0c8",
+    "x": 1092.4833221435547,
+    "y": 460.98312282562256,
+    "z": "fb90012b.616c1",
     "wires": []
   },
   {
-    "id": "795a527a.112ffc",
+    "id": "788b5a8e.cd86b4",
     "type": "call",
     "name": "call sdwan-get-wan-param",
     "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 705.0043487548828,
-    "y": 576.0042514801025,
-    "z": "61d54760.a4d0c8",
+    "x": 669.0043525695801,
+    "y": 574.0043067932129,
+    "z": "fb90012b.616c1",
     "wires": [
       []
     ]
   },
   {
-    "id": "f82a7101.bfc5b",
+    "id": "17c0b4a9.0b865b",
     "type": "set",
     "name": "set vnf-request-input.",
     "xml": "<set>\n<parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />\n",
     "comments": "",
-    "x": 671.0039367675781,
-    "y": 544.004054069519,
-    "z": "61d54760.a4d0c8",
+    "x": 650.0039367675781,
+    "y": 541.004054069519,
+    "z": "fb90012b.616c1",
     "wires": []
   }
 ]
index ca38d84..7d63cbe 100644 (file)
@@ -1,20 +1,20 @@
 [
   {
-    "id": "e612d5f5.8b6538",
+    "id": "7b8cbc85.2da064",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 105.00390625,
+    "x": 100.00390625,
     "y": 55.99999871850014,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "150c6234.3faf1e"
+        "e9b1afb9.5ff99"
       ]
     ]
   },
   {
-    "id": "150c6234.3faf1e",
+    "id": "e9b1afb9.5ff99",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 253.2895965576172,
+    "x": 248.2895965576172,
     "y": 106.23810735344887,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "1b2d2c3d.3c9464"
+        "4b2b7cbd.d36844"
       ]
     ]
   },
   {
-    "id": "1b2d2c3d.3c9464",
+    "id": "4b2b7cbd.d36844",
     "type": "method",
     "name": "method sdwan-vnf-topology-operation-wanport-deactivate",
     "xml": "<method rpc='sdwan-vnf-topology-operation-wanport-deactivate' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 287.4325180053711,
+    "x": 282.4325180053711,
     "y": 190.00001588463783,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "bf701672.487a88"
+        "5407681f.e8b5e8"
       ]
     ]
   },
   {
-    "id": "bf701672.487a88",
+    "id": "5407681f.e8b5e8",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 262.6706123352051,
+    "x": 257.6706123352051,
     "y": 574.6666819155216,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "b889ffd5.0fa63",
-        "f33aa2.256e456",
-        "ca99ad99.37765",
-        "26cf633a.338b9c",
-        "554bc62c.9e5bc8",
-        "ec3af845.5c1818",
-        "5ba1424c.f63d5c",
-        "46594e30.35ca2",
-        "7caacd63.309604",
-        "6bdcf104.b48b8",
-        "13a2d05d.7d396"
+        "df156b9b.893498",
+        "be3201ef.467c4",
+        "860b5ecf.dd7b5",
+        "16992179.73e94f",
+        "98f2142f.e861f8",
+        "d04b477e.b0b688",
+        "873153fb.ad4f6",
+        "104270ca.7ed57f",
+        "e4cc3ba0.aaef78",
+        "8c780213.0f5d9",
+        "a5d33dff.966b"
       ]
     ]
   },
   {
-    "id": "b889ffd5.0fa63",
+    "id": "df156b9b.893498",
     "type": "switchNode",
     "name": "switch service-data.vnfs.vnf_length",
     "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 768.0248603820801,
+    "x": 763.0248603820801,
     "y": 99.02095222473145,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "72446922.dfdc88",
-        "2e454e9c.4de002",
-        "34a36311.6884ac"
+        "cd5b067d.e6ac48",
+        "8805239b.f3949",
+        "b1447a06.d6b6b8"
       ]
     ]
   },
   {
-    "id": "72446922.dfdc88",
+    "id": "cd5b067d.e6ac48",
     "type": "other",
     "name": "Null",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1011.024787902832,
+    "x": 1006.024787902832,
     "y": 124.02103519439697,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "2b15f4dc.0543ec"
+        "e50203dd.f1638"
       ]
     ]
   },
   {
-    "id": "2b15f4dc.0543ec",
+    "id": "e50203dd.f1638",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 1159.8022994995117,
+    "x": 1154.8022994995117,
     "y": 103.9099702835083,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "2e454e9c.4de002",
+    "id": "8805239b.f3949",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1012.0251121520996,
+    "x": 1007.0251121520996,
     "y": 157.02105808258057,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "767b5296.07b42c"
+        "ec39454c.89fad8"
       ]
     ]
   },
   {
-    "id": "767b5296.07b42c",
+    "id": "ec39454c.89fad8",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1159.2948150634766,
+    "x": 1154.2948150634766,
     "y": 146.57558059692383,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "e6f54805.c662c8",
-        "150dec3f.ac66f4"
+        "581f3be0.95f264",
+        "9ccafa3a.a3a8e8"
       ]
     ]
   },
   {
-    "id": "e6f54805.c662c8",
+    "id": "581f3be0.95f264",
     "type": "for",
     "name": "for vidx..service-data.vnfs.vnf_length[]",
     "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1404.310775756836,
+    "x": 1399.310775756836,
     "y": 98.44958019256592,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "62dbeb25.9e1404"
+        "66dc1ec4.8151c"
       ]
     ]
   },
   {
-    "id": "150dec3f.ac66f4",
+    "id": "9ccafa3a.a3a8e8",
     "type": "switchNode",
     "name": "switch tmp.vidx ",
     "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1335.6121292114258,
+    "x": 1330.6121292114258,
     "y": 146.43275928497314,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "7f71feab.68d97"
+        "4834ec00.0aabb4"
       ]
     ]
   },
   {
-    "id": "7f71feab.68d97",
+    "id": "4834ec00.0aabb4",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1489.0407676696777,
+    "x": 1484.0407676696777,
     "y": 145.00417232513428,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "7f6f3eb7.5ba2f"
+        "fddc1ade.282818"
       ]
     ]
   },
   {
-    "id": "9c6aa9a4.753d88",
+    "id": "5b23a76a.488d28",
     "type": "switchNode",
     "name": "switch vnfid found",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1775.739356994629,
+    "x": 1770.739356994629,
     "y": 95.69969272613525,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "414b7f38.5b52"
+        "acf51a78.0a9178"
       ]
     ]
   },
   {
-    "id": "7f6f3eb7.5ba2f",
+    "id": "fddc1ade.282818",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 1625.4691619873047,
+    "x": 1620.4691619873047,
     "y": 144.14703464508057,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "414b7f38.5b52",
+    "id": "acf51a78.0a9178",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1814.691505432129,
+    "x": 1809.691505432129,
     "y": 150.59241199493408,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "de28481b.2e84a8"
+        "4a7918ac.67fac8"
       ]
     ]
   },
   {
-    "id": "34a36311.6884ac",
+    "id": "b1447a06.d6b6b8",
     "type": "outcome",
     "name": "0",
     "xml": "<outcome value='0'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1007.9935340881348,
+    "x": 1002.9935340881348,
     "y": 91.98973083496094,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "2b15f4dc.0543ec"
+        "e50203dd.f1638"
       ]
     ]
   },
   {
-    "id": "62dbeb25.9e1404",
+    "id": "66dc1ec4.8151c",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1623.6604080200195,
+    "x": 1618.6604080200195,
     "y": 97.9896411895752,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "9c6aa9a4.753d88"
+        "5b23a76a.488d28"
       ]
     ]
   },
   {
-    "id": "f33aa2.256e456",
+    "id": "be3201ef.467c4",
     "type": "set",
     "name": "set vnf in service-data",
-    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />\n\n",
+    "xml": "<set>\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />\n\n",
     "comments": "",
-    "x": 723.338077545166,
+    "x": 718.338077545166,
     "y": 747.6668863296509,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "ca99ad99.37765",
+    "id": "860b5ecf.dd7b5",
     "type": "set",
     "name": "set vnfId and vnf-object-path",
     "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",
     "comments": "",
-    "x": 735.8937187194824,
+    "x": 730.8937187194824,
     "y": 804.889181137085,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "26cf633a.338b9c",
+    "id": "16992179.73e94f",
     "type": "set",
     "name": "set vnf-level-oper-status to PendingDelete",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
     "comments": "",
-    "x": 778.3380928039551,
+    "x": 773.3380928039551,
     "y": 839.6670169830322,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "554bc62c.9e5bc8",
+    "id": "98f2142f.e861f8",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 688.6714630126953,
+    "x": 683.6714630126953,
     "y": 928.4448499679565,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "46594e30.35ca2",
+    "id": "873153fb.ad4f6",
     "type": "get-resource",
     "name": "get-resource esr-thirdparty-sdnc",
-    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 748.5042667388916,
+    "x": 743.5042667388916,
     "y": 267.00012239813805,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "d2393044.02c98",
-        "de34f71f.564f78",
-        "165c6807.bce198"
+        "5df9a8e2.afb138",
+        "e0b2bff0.163f1",
+        "a120de42.8cdeb"
       ]
     ]
   },
   {
-    "id": "d2393044.02c98",
+    "id": "5df9a8e2.afb138",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 967.5042362213135,
+    "x": 962.5042362213135,
     "y": 226.00011897087097,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "af0c4e7e.16054"
+        "c101e40a.a37c18"
       ]
     ]
   },
   {
-    "id": "de34f71f.564f78",
+    "id": "e0b2bff0.163f1",
     "type": "not-found",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 970.9952030181885,
+    "x": 965.9952030181885,
     "y": 273.5741546154022,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "46779502.824a2c"
+        "1f1c50e3.e0332f"
       ]
     ]
   },
   {
-    "id": "165c6807.bce198",
+    "id": "a120de42.8cdeb",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 966.3282108306885,
+    "x": 961.3282108306885,
     "y": 314.9074676036835,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "d9434b38.eb9228"
+        "4fef696b.8e5e98"
       ]
     ]
   },
   {
-    "id": "d9434b38.eb9228",
+    "id": "4fef696b.8e5e98",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
     "comments": "",
-    "x": 1154.1007671356201,
+    "x": 1149.1007671356201,
     "y": 310.3466603755951,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "46779502.824a2c",
+    "id": "1f1c50e3.e0332f",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
     "comments": "",
-    "x": 1147.566614151001,
+    "x": 1142.566614151001,
     "y": 261.8598906993866,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "af0c4e7e.16054",
+    "id": "c101e40a.a37c18",
     "type": "set",
     "name": "set controller data",
     "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
     "comments": "",
-    "x": 1148.0043392181396,
+    "x": 1143.0043392181396,
     "y": 220.00015768408775,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "13a2d05d.7d396",
+    "id": "8c780213.0f5d9",
     "type": "execute",
     "name": "execute RestApiCallNode device port delete",
-    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-device-port-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"delete\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-device-port-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 781.0044193267822,
+    "x": 776.0044193267822,
     "y": 642.666867017746,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "d7fb77a3.a86188",
-        "e2af2841.d1f638"
+        "a8a639cc.af8fc8",
+        "b547a1c8.93a66"
       ]
     ]
   },
   {
-    "id": "d7fb77a3.a86188",
+    "id": "a8a639cc.af8fc8",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1027.0044040679932,
+    "x": 1022.0044040679932,
     "y": 680.6669557094574,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "d422494c.56c648"
+        "da37396d.3af718"
       ]
     ]
   },
   {
-    "id": "e2af2841.d1f638",
+    "id": "b547a1c8.93a66",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1023.0044841766357,
+    "x": 1018.0044841766357,
     "y": 634.6668708324432,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "e8bbadbc.9ad4c"
+        "bf4f49a8.2593f8"
       ]
     ]
   },
   {
-    "id": "e8bbadbc.9ad4c",
+    "id": "bf4f49a8.2593f8",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",
     "comments": "",
-    "x": 1164.0045757293701,
+    "x": 1159.0045757293701,
     "y": 634.6668717861176,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "d422494c.56c648",
+    "id": "da37396d.3af718",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "comments": "",
     "outputs": 1,
-    "x": 1171.0042705535889,
+    "x": 1166.0042705535889,
     "y": 678.6668746471405,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       []
     ]
   },
   {
-    "id": "6bdcf104.b48b8",
+    "id": "e4cc3ba0.aaef78",
     "type": "execute",
     "name": "execute RestApiCallNode wan port delete",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-wan-port-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 772.0045871734619,
+    "x": 767.0045871734619,
     "y": 535.666864156723,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "de6f5d9a.00d19",
-        "fe1384f0.e198c8"
+        "456c9aa6.bae384",
+        "c9572446.4deba8"
       ]
     ]
   },
   {
-    "id": "de6f5d9a.00d19",
+    "id": "456c9aa6.bae384",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1005.0046825408936,
+    "x": 1000.0046825408936,
     "y": 568.6668565273285,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "fd275e00.86cf8"
+        "3ae835e7.d94c3a"
       ]
     ]
   },
   {
-    "id": "fe1384f0.e198c8",
+    "id": "c9572446.4deba8",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1009.0047626495361,
+    "x": 1004.0047626495361,
     "y": 504.66693472862244,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "f44e9eb0.30563"
+        "2bd63ac3.ca30f6"
       ]
     ]
   },
   {
-    "id": "f44e9eb0.30563",
+    "id": "2bd63ac3.ca30f6",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",
     "comments": "",
-    "x": 1154.004934310913,
+    "x": 1149.004934310913,
     "y": 506.66693472862244,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "fd275e00.86cf8",
+    "id": "3ae835e7.d94c3a",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "comments": "",
     "outputs": 1,
-    "x": 1161.0045261383057,
+    "x": 1156.0045261383057,
     "y": 566.6668565273285,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       []
     ]
   },
   {
-    "id": "ec3af845.5c1818",
+    "id": "d04b477e.b0b688",
     "type": "execute",
     "name": "execute Properties",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n    <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",
     "comments": "",
     "outputs": 1,
-    "x": 716.0038948059082,
+    "x": 711.0038948059082,
     "y": 142.0000295639038,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       []
     ]
   },
   {
-    "id": "7caacd63.309604",
+    "id": "104270ca.7ed57f",
     "type": "execute",
     "name": "execute RestApiCallNode Get token",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
     "comments": "",
     "outputs": 1,
-    "x": 765.0041751861572,
+    "x": 760.0041751861572,
     "y": 405.66669368743896,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "187682f0.2e0ced",
-        "97689994.fe4b58"
+        "4437f7fc.652918",
+        "1c05902b.92524"
       ]
     ]
   },
   {
-    "id": "187682f0.2e0ced",
+    "id": "4437f7fc.652918",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 999.0042133331299,
+    "x": 994.0042133331299,
     "y": 391.6667184829712,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "dfaa5b94.faad78"
+        "a3e2158c.084138"
       ]
     ]
   },
   {
-    "id": "97689994.fe4b58",
+    "id": "1c05902b.92524",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 992.2541751861572,
+    "x": 987.2541751861572,
     "y": 437.3095769882202,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "3f21f41a.0451bc"
+        "7ff91448.c6f30c"
       ]
     ]
   },
   {
-    "id": "3f21f41a.0451bc",
+    "id": "7ff91448.c6f30c",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",
     "comments": "",
-    "x": 1145.0041751861572,
+    "x": 1140.0041751861572,
     "y": 437.05963802337646,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "dfaa5b94.faad78",
+    "id": "a3e2158c.084138",
     "type": "set",
     "name": "set token-id",
     "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
     "comments": "",
-    "x": 1153.0042133331299,
+    "x": 1148.0042133331299,
     "y": 392.6667184829712,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "de28481b.2e84a8",
+    "id": "4a7918ac.67fac8",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1955.0040168762207,
+    "x": 1950.0040168762207,
     "y": 151.00004482269287,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       [
-        "a23df7c7.a5b718",
-        "c1a4bc96.3c58",
-        "c7716aba.aa75c8"
+        "bb491f3b.31d3b",
+        "af8f15c9.eb4d58",
+        "df2693ee.5beea"
       ]
     ]
   },
   {
-    "id": "5ba1424c.f63d5c",
+    "id": "a5d33dff.966b",
     "type": "update",
     "name": "save SDWAN wan port instance configuration in AAI",
-    "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \n      key='wan-port-config.id = $service-data.vnfs.vnf[$tmp.vidx].vnf-id' >\n<parameter name=\"id\" value=\"`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`\" />\n<parameter name='operational-status' value='PendingDelete' />\n<parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n",
+    "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \n      key='wan-port-config.id = $vnf-topology-operation-input.vnf-information.vnf-id' >\n<parameter name=\"id\" value=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\" />\n<parameter name='operational-status' value='PendingDelete' />\n<parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n",
     "comments": "",
     "outputs": 1,
-    "x": 801.0041923522949,
+    "x": 796.0041923522949,
     "y": 881.0004291534424,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       []
     ]
   },
   {
-    "id": "a23df7c7.a5b718",
+    "id": "bb491f3b.31d3b",
     "type": "set",
     "name": "set tmp.vidx and ctx.vnf-data",
     "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",
     "comments": "",
-    "x": 2205.0352516174316,
+    "x": 2200.0352516174316,
     "y": 102.03129148483276,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "c1a4bc96.3c58",
+    "id": "af8f15c9.eb4d58",
     "type": "set",
     "name": "set vnf-request-input.",
     "xml": "<set>\n<parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\n\n",
     "comments": "",
-    "x": 2177.4815406799316,
+    "x": 2172.4815406799316,
     "y": 148.6889271736145,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": []
   },
   {
-    "id": "c7716aba.aa75c8",
+    "id": "df2693ee.5beea",
     "type": "call",
     "name": "call sdwan-get-wan-param",
     "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 2201.481491088867,
+    "x": 2196.481491088867,
     "y": 198.68891525268555,
-    "z": "f765645f.7b8058",
+    "z": "b1933fd7.45eec",
     "wires": [
       []
     ]
index a6359ac..97bbc00 100644 (file)
@@ -1,37 +1,37 @@
 [
   {
-    "id": "503a78f7.47ca18",
+    "id": "d97ddb0b.9dbae8",
     "type": "switchNode",
     "name": "switch service-data.vnfs.vnf_length",
     "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 657.0634536743164,
-    "y": 392,
-    "z": "944c3ee1.29b9e",
+    "x": 657.5634536743164,
+    "y": 290.26117038726807,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "77aa4ba.68c1bb4",
-        "4952201a.7d4c8"
+        "78101855.a55318",
+        "303c0757.9740d8"
       ]
     ]
   },
   {
-    "id": "1a9196c0.4e6769",
+    "id": "ffc786dd.6d3ce8",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 118.96875,
-    "y": 156.73882961273193,
-    "z": "944c3ee1.29b9e",
+    "x": 119.46875,
+    "y": 55,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "902e1c94.66f24"
+        "19627a0c.fad7f6"
       ]
     ]
   },
   {
-    "id": "902e1c94.66f24",
+    "id": "19627a0c.fad7f6",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 194.25445556640625,
-    "y": 196.9769411087036,
-    "z": "944c3ee1.29b9e",
+    "x": 194.75445556640625,
+    "y": 95.23811149597168,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "a3cff3f0.d5beb"
+        "90edfff9.8d8dc"
       ]
     ]
   },
   {
-    "id": "2648545f.a0239c",
+    "id": "89fc7e96.e130c",
     "type": "comment",
     "name": "wan port-vnf-topology-operation-delete",
     "info": "",
     "comments": "",
-    "x": 568.3136672973633,
-    "y": 230.32522869110107,
-    "z": "944c3ee1.29b9e",
+    "x": 568.8136672973633,
+    "y": 128.58639907836914,
+    "z": "298a9201.dd932e",
     "wires": []
   },
   {
-    "id": "cb66206e.4a85e",
+    "id": "12b8b4a9.73677b",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 195.63541412353516,
-    "y": 458.4055013656616,
-    "z": "944c3ee1.29b9e",
+    "x": 196.13541412353516,
+    "y": 356.6666717529297,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "99c3b58a.28fe68",
-        "41864004.a59f8",
-        "7d0a1f82.5f016",
-        "60ff59e4.f2b988",
-        "335cedb5.736ac2",
-        "503a78f7.47ca18",
-        "ee257c77.ce85f",
-        "b68bb604.af2598",
-        "55b1fa8a.f95f74"
+        "79e6b6ed.e79cf8",
+        "a877fa3c.5b8268",
+        "86a0bf6e.0b80b",
+        "d97ddb0b.9dbae8",
+        "c603984a.796d78",
+        "b1f3fdb5.343c9",
+        "c5c45c6b.923e9",
+        "96916512.691c98",
+        "f2a5223f.497fa",
+        "14bdc57f.29da0b",
+        "9171f0e2.d13bf"
       ]
     ]
   },
   {
-    "id": "77aa4ba.68c1bb4",
+    "id": "78101855.a55318",
     "type": "other",
     "name": "outcome Null",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 921.7857666015625,
-    "y": 374.5556221008301,
-    "z": "944c3ee1.29b9e",
+    "x": 922.2857666015625,
+    "y": 272.81679248809814,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "5f41004a.301df"
+        "74e8241b.eea89c"
       ]
     ]
   },
   {
-    "id": "5f41004a.301df",
+    "id": "74e8241b.eea89c",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 1102.7856369018555,
-    "y": 369.5555000305176,
-    "z": "944c3ee1.29b9e",
+    "x": 1103.2856369018555,
+    "y": 267.81667041778564,
+    "z": "298a9201.dd932e",
     "wires": []
   },
   {
-    "id": "4952201a.7d4c8",
+    "id": "303c0757.9740d8",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 907.2857666015625,
-    "y": 426.55558490753174,
-    "z": "944c3ee1.29b9e",
+    "x": 907.7857666015625,
+    "y": 324.8167552947998,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "dcbc4218.194a6"
+        "1483b08f.bc2c8f"
       ]
     ]
   },
   {
-    "id": "dcbc4218.194a6",
+    "id": "1483b08f.bc2c8f",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1079.285472869873,
-    "y": 426.5555830001831,
-    "z": "944c3ee1.29b9e",
+    "x": 1079.785472869873,
+    "y": 324.8167533874512,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "b8b4f7cf.20f728",
-        "f6b988cf.3ccc88",
-        "a936ae5c.480e"
+        "e9c362d9.eda3b",
+        "c7e2b23c.082b2"
       ]
     ]
   },
   {
-    "id": "f6b988cf.3ccc88",
+    "id": "c7e2b23c.082b2",
     "type": "switchNode",
     "name": "switch tmp.vidx ",
     "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1254.28564453125,
-    "y": 445.55550479888916,
-    "z": "944c3ee1.29b9e",
+    "x": 1254.78564453125,
+    "y": 343.8166751861572,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "2be170a7.d1fc4"
+        "b277af35.24bde"
       ]
     ]
   },
   {
-    "id": "335cedb5.736ac2",
+    "id": "86a0bf6e.0b80b",
     "type": "switchNode",
     "name": "switch vnf-level-oper-status",
     "xml": "<switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 627.4524536132812,
-    "y": 466.4444637298584,
-    "z": "944c3ee1.29b9e",
+    "x": 627.9524536132812,
+    "y": 364.70563411712646,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "2a3d41e1.8aa8ce",
-        "c521841a.091868"
+        "bebaa9f9.5133d8",
+        "de5a57a9.6e5c38"
       ]
     ]
   },
   {
-    "id": "2a3d41e1.8aa8ce",
+    "id": "bebaa9f9.5133d8",
     "type": "outcome",
     "name": "outcome PendingDelete",
     "xml": "<outcome value='PendingDelete'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 918.2857208251953,
-    "y": 470.55558681488037,
-    "z": "944c3ee1.29b9e",
+    "x": 918.7857208251953,
+    "y": 368.81675720214844,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "edb94879.c47ed8"
+        "a8bce4a2.2db818"
       ]
     ]
   },
   {
-    "id": "c521841a.091868",
+    "id": "de5a57a9.6e5c38",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 864.2857818603516,
-    "y": 517.5555906295776,
-    "z": "944c3ee1.29b9e",
+    "x": 864.7857818603516,
+    "y": 415.8167610168457,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "8d57a7f4.cb78b8"
+        "c9cdcb18.116a68"
       ]
     ]
   },
   {
-    "id": "8d57a7f4.cb78b8",
+    "id": "c9cdcb18.116a68",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`\" />",
     "comments": "",
-    "x": 1023.7855491638184,
-    "y": 520.5555896759033,
-    "z": "944c3ee1.29b9e",
+    "x": 1024.2855491638184,
+    "y": 418.8167600631714,
+    "z": "298a9201.dd932e",
     "wires": []
   },
   {
-    "id": "ee257c77.ce85f",
+    "id": "c603984a.796d78",
     "type": "switchNode",
     "name": "switch vnf-id",
     "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 593.2857704162598,
-    "y": 347.5555934906006,
-    "z": "944c3ee1.29b9e",
+    "x": 593.7857704162598,
+    "y": 245.81676387786865,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "d82c9312.151d9"
+        "9c65cfbe.e7f66"
       ]
     ]
   },
   {
-    "id": "d82c9312.151d9",
+    "id": "9c65cfbe.e7f66",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>",
     "comments": "",
     "outputs": 1,
-    "x": 791.2858352661133,
-    "y": 337.5556058883667,
-    "z": "944c3ee1.29b9e",
+    "x": 791.7858352661133,
+    "y": 235.81677627563477,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "a3bf6d80.2d0f6"
+        "16c05e83.252251"
       ]
     ]
   },
   {
-    "id": "a3bf6d80.2d0f6",
+    "id": "16c05e83.252251",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-request-input.vnf-input-parameters.name is a required input\" />\n",
     "comments": "",
-    "x": 957.7857208251953,
-    "y": 334.5556001663208,
-    "z": "944c3ee1.29b9e",
+    "x": 958.2857208251953,
+    "y": 232.81677055358887,
+    "z": "298a9201.dd932e",
     "wires": []
   },
   {
-    "id": "b8b4f7cf.20f728",
+    "id": "e9c362d9.eda3b",
     "type": "for",
     "name": "for vidx..service-data.vnfs.vnf[]",
     "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1314.7856483459473,
-    "y": 381.5555009841919,
-    "z": "944c3ee1.29b9e",
+    "x": 1315.2856483459473,
+    "y": 279.81667137145996,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "ba14948d.015c78"
+        "76ffd99.2cf1928"
       ]
     ]
   },
   {
-    "id": "ba14948d.015c78",
+    "id": "76ffd99.2cf1928",
     "type": "switchNode",
     "name": "switch vnf-id found",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1570.7856674194336,
-    "y": 381.5555009841919,
-    "z": "944c3ee1.29b9e",
+    "x": 1571.2856674194336,
+    "y": 279.81667137145996,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "b53ab16b.22442"
+        "157a2e27.614112"
       ]
     ]
   },
   {
-    "id": "b53ab16b.22442",
+    "id": "157a2e27.614112",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1747.2857208251953,
-    "y": 384.5555009841919,
-    "z": "944c3ee1.29b9e",
+    "x": 1747.7857208251953,
+    "y": 282.81667137145996,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "c9311851.f90738"
+        "9ee7d32a.eb396"
       ]
     ]
   },
   {
-    "id": "c9311851.f90738",
+    "id": "9ee7d32a.eb396",
     "type": "set",
     "name": "set tmp.vidx and ctx.vnf-data",
     "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].vnf-data.`' />\n",
     "comments": "",
-    "x": 1914.2857360839844,
-    "y": 445.5555009841919,
-    "z": "944c3ee1.29b9e",
+    "x": 1914.7857360839844,
+    "y": 343.81667137145996,
+    "z": "298a9201.dd932e",
     "wires": []
   },
   {
-    "id": "6ec9cdbe.844104",
+    "id": "b167d24d.6ae55",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 1559.785659790039,
-    "y": 445.55550479888916,
-    "z": "944c3ee1.29b9e",
+    "x": 1560.285659790039,
+    "y": 343.8166751861572,
+    "z": "298a9201.dd932e",
     "wires": []
   },
   {
-    "id": "2be170a7.d1fc4",
+    "id": "b277af35.24bde",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1422.285659790039,
-    "y": 445.55550479888916,
-    "z": "944c3ee1.29b9e",
+    "x": 1422.785659790039,
+    "y": 343.8166751861572,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "6ec9cdbe.844104"
+        "b167d24d.6ae55"
       ]
     ]
   },
   {
-    "id": "7d0a1f82.5f016",
+    "id": "79e6b6ed.e79cf8",
     "type": "set",
     "name": "set vnfId and vnf-object-path",
     "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='vnf-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vnf-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'` \" />",
     "comments": "",
-    "x": 605.3021850585938,
-    "y": 642.0722465515137,
-    "z": "944c3ee1.29b9e",
+    "x": 599.8022537231445,
+    "y": 647.3334503173828,
+    "z": "298a9201.dd932e",
     "wires": []
   },
   {
-    "id": "60ff59e4.f2b988",
+    "id": "a877fa3c.5b8268",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 554.4133453369141,
-    "y": 767.6276769638062,
-    "z": "944c3ee1.29b9e",
+    "x": 572.913516998291,
+    "y": 772.8888854980469,
+    "z": "298a9201.dd932e",
     "wires": []
   },
   {
-    "id": "99c3b58a.28fe68",
+    "id": "c5c45c6b.923e9",
     "type": "set",
     "name": "set new vnf length",
-    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf_length\" value=\"`$service-data.vnfs.vnf_length - 1`\"/>\n\n\t\n",
+    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",
     "comments": "",
-    "x": 585.9347686767578,
-    "y": 539.5431041717529,
-    "z": "944c3ee1.29b9e",
+    "x": 577.4347686767578,
+    "y": 555.8044013977051,
+    "z": "298a9201.dd932e",
     "wires": []
   },
   {
-    "id": "41864004.a59f8",
-    "type": "set",
-    "name": "Remove vnf from ServiceData",
-    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$tmp.vidx].\" value=\"\"/>\n\n",
-    "comments": "",
-    "x": 621.5589599609375,
-    "y": 583.5110712051392,
-    "z": "944c3ee1.29b9e",
-    "wires": []
-  },
-  {
-    "id": "edb94879.c47ed8",
+    "id": "a8bce4a2.2db818",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1115.5921211242676,
-    "y": 480.88074111938477,
-    "z": "944c3ee1.29b9e",
+    "x": 1116.0921211242676,
+    "y": 379.14191150665283,
+    "z": "298a9201.dd932e",
     "wires": [
       []
     ]
   },
   {
-    "id": "a3cff3f0.d5beb",
+    "id": "90edfff9.8d8dc",
     "type": "method",
     "name": "method sdwan-vnf-topology-operation-wanport-delete",
     "xml": "<method rpc='sdwan-vnf-topology-operation-wanport-delete' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 199.5,
-    "y": 313,
-    "z": "944c3ee1.29b9e",
+    "x": 200,
+    "y": 211.26117038726807,
+    "z": "298a9201.dd932e",
     "wires": [
       [
-        "cb66206e.4a85e"
+        "12b8b4a9.73677b"
       ]
     ]
   },
   {
-    "id": "b68bb604.af2598",
+    "id": "b1f3fdb5.343c9",
     "type": "execute",
     "name": "execute requiredParameters",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"vnf-topology-operation-input.vnf-information.vnf-id\" value=\"$vnf-topology-operation-input.vnf-information.vnf-id\"/>\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 650.7858276367188,
-    "y": 287.55559253692627,
-    "z": "944c3ee1.29b9e",
+    "x": 651.2858276367188,
+    "y": 185.81676292419434,
+    "z": "298a9201.dd932e",
     "wires": [
       []
     ]
   },
   {
-    "id": "55b1fa8a.f95f74",
+    "id": "96916512.691c98",
     "type": "delete",
     "name": "delete wan port instance configuration in AAI",
     "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='wan-port-config' \n        key='wan-port-config.id = $vnf-topology-operation-input.vnf-information.vnf-id'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 657.5,
-    "y": 704,
-    "z": "944c3ee1.29b9e",
+    "x": 649.0001983642578,
+    "y": 685.2611904144287,
+    "z": "298a9201.dd932e",
     "wires": [
       []
     ]
   },
   {
-    "id": "a936ae5c.480e",
-    "type": "record",
-    "name": "record",
-    "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"tmp.vidx1234555\"/>\n<parameter name=\"field3\" value='`$tmp.vidx`'/>\n",
+    "id": "f2a5223f.497fa",
+    "type": "for",
+    "name": "for lidx..service-data.vnfs.vnf[]",
+    "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1303.5001373291016,
-    "y": 500.0000123977661,
-    "z": "944c3ee1.29b9e",
+    "x": 611.3333854675293,
+    "y": 505.0001096725464,
+    "z": "298a9201.dd932e",
     "wires": [
-      []
+      [
+        "53b23540.75768c"
+      ]
+    ]
+  },
+  {
+    "id": "53b23540.75768c",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 855.333366394043,
+    "y": 531.0000691413879,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "52fdf367.fb37ac"
+      ]
+    ]
+  },
+  {
+    "id": "52fdf367.fb37ac",
+    "type": "switchNode",
+    "name": "switch vnf-id found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$lidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1047.3333129882812,
+    "y": 540.0001134872437,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "ae48a2e3.38f76"
+      ]
     ]
+  },
+  {
+    "id": "ae48a2e3.38f76",
+    "type": "outcomeFalse",
+    "name": "false",
+    "xml": "<outcome value='false'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1233.3333282470703,
+    "y": 524,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "617570c9.1b48"
+      ]
+    ]
+  },
+  {
+    "id": "8341b52b.a87b88",
+    "type": "set",
+    "name": "set  vnf data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$lidx].vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$lidx].vnf-data.`' />\n",
+    "comments": "",
+    "x": 1549.3333473205566,
+    "y": 500.0001916885376,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "14bdc57f.29da0b",
+    "type": "set",
+    "name": "set prop.vnfNewidx",
+    "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",
+    "comments": "",
+    "x": 576.3333892822266,
+    "y": 469.0000686645508,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "45e47923.545468",
+    "type": "set",
+    "name": "set prop.vnfNewidx",
+    "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",
+    "comments": "",
+    "x": 1571.3333473205566,
+    "y": 556.0001554489136,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "617570c9.1b48",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1384.333251953125,
+    "y": 525.000036239624,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "8341b52b.a87b88",
+        "45e47923.545468"
+      ]
+    ]
+  },
+  {
+    "id": "9171f0e2.d13bf",
+    "type": "set",
+    "name": "Remove vnf from ServiceData",
+    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$prop.vnfidxLen].\" value=\"\"/>\n\n",
+    "comments": "",
+    "x": 613.0000534057617,
+    "y": 598.0000357627869,
+    "z": "298a9201.dd932e",
+    "wires": []
   }
 ]
index a0a0fa2..ad15140 100644 (file)
@@ -1,20 +1,20 @@
 [
   {
-    "id": "b5ebbde.e59a04",
+    "id": "acaf9f12.dd321",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 109,
-    "y": 43,
-    "z": "33eaf422.44290c",
+    "x": 119.00390625,
+    "y": 52.00390625,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "a87f9663.877998"
+        "9e7830e2.084e3"
       ]
     ]
   },
   {
-    "id": "a87f9663.877998",
+    "id": "9e7830e2.084e3",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 225.2856903076172,
-    "y": 94.23810768127441,
-    "z": "33eaf422.44290c",
+    "x": 235.2895965576172,
+    "y": 103.24201393127441,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "8c1b6d3.067719"
+        "b00ec17b.44975"
       ]
     ]
   },
   {
-    "id": "8c1b6d3.067719",
+    "id": "b00ec17b.44975",
     "type": "method",
     "name": "method sdwan-wanport-vnf-topology-operation-underlay",
     "xml": "<method rpc='sdwan-wanport-vnf-topology-operation-underlay' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 228.42861938476562,
-    "y": 179.00003147125244,
-    "z": "33eaf422.44290c",
+    "x": 238.43252563476562,
+    "y": 188.00393772125244,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "3cd9be6d.873c82"
+        "2452d404.5dd7bc"
       ]
     ]
   },
   {
-    "id": "3cd9be6d.873c82",
+    "id": "2452d404.5dd7bc",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 160.66668701171875,
-    "y": 287.66673278808594,
-    "z": "33eaf422.44290c",
+    "x": 170.67059326171875,
+    "y": 296.67063903808594,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "2d7b33ef.a2d9ac",
-        "383a5f3d.e4cb2",
-        "70ceaafc.e0d3f4",
-        "c880f4e9.6d6098"
+        "74620ff1.b94be",
+        "e68f1fae.052f",
+        "18ea4160.5b97af",
+        "84666856.592818",
+        "f80aa612.1d1cd8"
       ]
     ]
   },
   {
-    "id": "2d7b33ef.a2d9ac",
+    "id": "74620ff1.b94be",
     "type": "for",
     "name": "for cidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]",
     "xml": "<for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 598.0004119873047,
-    "y": 398.66683769226074,
-    "z": "33eaf422.44290c",
+    "x": 605.004337310791,
+    "y": 435.6707601547241,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "e9598182.81589"
+        "89904125.f9c2d"
       ]
     ]
   },
   {
-    "id": "be430b5e.14a828",
+    "id": "f587f945.9668c8",
     "type": "set",
     "name": "set prop.ar.allotted-resource-id",
     "xml": "<set>\n<parameter name='prop.ar.allotted-resource-id' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id`' />\n",
     "comments": "",
-    "x": 1385.0013427734375,
-    "y": 115.96877861022949,
-    "z": "33eaf422.44290c",
+    "x": 1395.0052490234375,
+    "y": 124.97268486022949,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "423b3b97.a50914",
+    "id": "7103c5d5.4c730c",
     "type": "comment",
     "name": "Query MDSAL for AR",
     "info": "",
     "comments": "",
-    "x": 1710.3340148925781,
-    "y": 139.96864795684814,
-    "z": "33eaf422.44290c",
+    "x": 1720.3379211425781,
+    "y": 148.97255420684814,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "dab21607.3703b8",
+    "id": "95a2de04.a237b",
     "type": "comment",
     "name": "Query MDSAL to get parent service based on service instance id from AR",
     "info": "",
     "comments": "",
-    "x": 2180.334873199463,
-    "y": 158.96862697601318,
-    "z": "33eaf422.44290c",
+    "x": 2190.338779449463,
+    "y": 167.97253322601318,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "90cd3398.44586",
+    "id": "4d085fb4.7bdbe",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1959.66841506958,
-    "y": 194.63526725769043,
-    "z": "33eaf422.44290c",
+    "x": 1969.67232131958,
+    "y": 203.63917350769043,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "1d70b537.cd409b"
+        "6619fa96.9e1c44"
       ]
     ]
   },
   {
-    "id": "1d70b537.cd409b",
+    "id": "6619fa96.9e1c44",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2114.668254852295,
-    "y": 194.13510036468506,
-    "z": "33eaf422.44290c",
+    "x": 2124.672161102295,
+    "y": 203.13900661468506,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "d282839d.a628"
+        "65302594.0054ec"
       ]
     ]
   },
   {
-    "id": "bce07922.8c4f98",
+    "id": "33787bc7.0b4834",
     "type": "other",
     "name": "outcome 1",
     "xml": "<outcome value='1'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2438.3587913513184,
-    "y": 190.75424098968506,
-    "z": "33eaf422.44290c",
+    "x": 2448.3626976013184,
+    "y": 199.75814723968506,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "3b07cad3.619296"
+        "545b3871.7610f8"
       ]
     ]
   },
   {
-    "id": "ee52805a.8bd8",
+    "id": "17a34962.7bafd7",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"Error: Connection attachement resource not found\" />\n    \n",
     "comments": "",
-    "x": 2584.1275672912598,
-    "y": 230.20122909545898,
-    "z": "33eaf422.44290c",
+    "x": 2594.1314735412598,
+    "y": 239.20513534545898,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "259f1fc9.28f91",
+    "id": "60f770e5.3c645",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1952.5201416015625,
-    "y": 241.70127391815186,
-    "z": "33eaf422.44290c",
+    "x": 1962.5240478515625,
+    "y": 250.70518016815186,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "b7b7bf01.123cf"
+        "a69f2107.3bfff"
       ]
     ]
   },
   {
-    "id": "b7b7bf01.123cf",
+    "id": "a69f2107.3bfff",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2102.5199851989746,
-    "y": 242.36782932281494,
-    "z": "33eaf422.44290c",
+    "x": 2112.5238914489746,
+    "y": 251.37173557281494,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "7cd11e1b.bfaf1"
+        "48f1dbd9.82eaf4"
       ]
     ]
   },
   {
-    "id": "7c51c058.0306e",
+    "id": "3677d240.46bcee",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2426.6867446899414,
-    "y": 228.03460121154785,
-    "z": "33eaf422.44290c",
+    "x": 2436.6906509399414,
+    "y": 237.03850746154785,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "ee52805a.8bd8"
+        "17a34962.7bafd7"
       ]
     ]
   },
   {
-    "id": "d282839d.a628",
+    "id": "65302594.0054ec",
     "type": "switchNode",
     "name": "switch cr length",
     "xml": "<switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2278.668430328369,
-    "y": 194.6352834701538,
-    "z": "33eaf422.44290c",
+    "x": 2288.672336578369,
+    "y": 203.6391897201538,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "bce07922.8c4f98",
-        "7c51c058.0306e"
+        "33787bc7.0b4834",
+        "3677d240.46bcee"
       ]
     ]
   },
   {
-    "id": "91cc0551.bc01e8",
+    "id": "f2c93863.974c98",
     "type": "set",
     "name": "set parent-service-instance-id",
     "xml": "<set>\n<parameter name='prop.parent-service-instance-id' value='`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id`' />\n\n",
     "comments": "",
-    "x": 2834.0020294189453,
-    "y": 191.63526439666748,
-    "z": "33eaf422.44290c",
+    "x": 2844.0059356689453,
+    "y": 200.63917064666748,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "3b07cad3.619296",
+    "id": "545b3871.7610f8",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic='true'>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2588.4778213500977,
-    "y": 190.80180072784424,
-    "z": "33eaf422.44290c",
+    "x": 2598.4817276000977,
+    "y": 199.80570697784424,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "91cc0551.bc01e8",
-        "dc60366a.2e9048"
+        "f2c93863.974c98",
+        "c4ef0618.a01ef8"
       ]
     ]
   },
   {
-    "id": "7cd11e1b.bfaf1",
+    "id": "48f1dbd9.82eaf4",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"Error: Connection attachement resource not found\" />\n    \n",
     "comments": "",
-    "x": 2270.001438140869,
-    "y": 240.63520526885986,
-    "z": "33eaf422.44290c",
+    "x": 2280.005344390869,
+    "y": 249.63911151885986,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "dab3ccab.cce12",
+    "id": "3af4c28.a27653e",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2057.303554534912,
-    "y": 512.7709312438965,
-    "z": "33eaf422.44290c",
+    "x": 2067.307460784912,
+    "y": 521.7748374938965,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "d5fc5211.c019"
+        "29090a88.41c1f6"
       ]
     ]
   },
   {
-    "id": "4c1ffccd.7a1ed4",
+    "id": "b8d8640d.13eac8",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2049.15535736084,
-    "y": 547.8370161056519,
-    "z": "33eaf422.44290c",
+    "x": 2059.15926361084,
+    "y": 556.8409223556519,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "4fdb783b.5926a8"
+        "bda3efcf.89dfe"
       ]
     ]
   },
   {
-    "id": "4fdb783b.5926a8",
+    "id": "bda3efcf.89dfe",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"Error: SOTN resource not found\" />\n    \n",
     "comments": "",
-    "x": 2195.304130554199,
-    "y": 548.1045122146606,
-    "z": "33eaf422.44290c",
+    "x": 2205.308036804199,
+    "y": 557.1084184646606,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "d5fc5211.c019",
+    "id": "29090a88.41c1f6",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2177.3038024902344,
-    "y": 512.771014213562,
-    "z": "33eaf422.44290c",
+    "x": 2187.3077087402344,
+    "y": 521.774920463562,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "c5126628.a1afc8",
+    "id": "c548252d.342ee8",
     "type": "for",
     "name": "for pnidx.. mdsal-psd.networks.network_length[]",
     "xml": "<for index='pnidx' start='0' end='`$mdsal-psd.service-data.networks.network_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1740.6683502197266,
-    "y": 612.3028893470764,
-    "z": "33eaf422.44290c",
+    "x": 1750.6722564697266,
+    "y": 621.3067955970764,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "84a7b7df.1615b8"
+        "e621a712.c02488"
       ]
     ]
   },
   {
-    "id": "c8ac708.b0a709",
+    "id": "4d2b2a60.5a15c4",
     "type": "switchNode",
     "name": "switch ActivateSDWANConnectivityInstance",
     "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$pnidx].network-data.request-information.request-action == 'ActivateSDWANConnectivityInstance'`\">\n    \n    \n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2277.3349990844727,
-    "y": 583.3028283119202,
-    "z": "33eaf422.44290c",
+    "x": 2280.3388900756836,
+    "y": 590.3067970275879,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "af2e2a1f.e9aba8"
+        "eff7a2d.680436"
       ]
     ]
   },
   {
-    "id": "af2e2a1f.e9aba8",
+    "id": "eff7a2d.680436",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2522.334518432617,
-    "y": 582.3028283119202,
-    "z": "33eaf422.44290c",
+    "x": 2532.338424682617,
+    "y": 591.3067345619202,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "64a2447b.58478c"
+        "b41985de.5559e8"
       ]
     ]
   },
   {
-    "id": "64a2447b.58478c",
+    "id": "b41985de.5559e8",
     "type": "set",
     "name": "set tmp.pnidx ",
     "xml": "<set>\n<parameter name='tmp.pnidx' value='`$pnidx`' />\n\n",
     "comments": "",
-    "x": 2678.3342056274414,
-    "y": 582.3028283119202,
-    "z": "33eaf422.44290c",
+    "x": 2688.3381118774414,
+    "y": 591.3067345619202,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "cf236aa.4478b98",
+    "id": "2eff9ba0.ecf354",
     "type": "for",
     "name": "for loop paramidx - Get topology from servicedata",
     "xml": "<for index=\"paramidx\" start=\"0\" end=\"`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 1746.3349304199219,
-    "y": 662.3024039268494,
-    "z": "33eaf422.44290c",
+    "x": 1682.3390655517578,
+    "y": 706.3064250946045,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "8e2c0789.42db78"
+        "f3cef2f6.2a146"
       ]
     ]
   },
   {
-    "id": "5a69b1be.1055d",
+    "id": "482a4c29.31cfa4",
     "type": "switchNode",
     "name": "switch topology",
     "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'topology'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2178.335252761841,
-    "y": 660.3024020195007,
-    "z": "33eaf422.44290c",
+    "x": 2134.339157104492,
+    "y": 685.3063306808472,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "333e463b.eac74a"
+        "65d66991.892e68"
       ]
     ]
   },
   {
-    "id": "333e463b.eac74a",
+    "id": "65d66991.892e68",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2329.3352642059326,
-    "y": 658.3024439811707,
-    "z": "33eaf422.44290c",
+    "x": 2285.339168548584,
+    "y": 683.3063726425171,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "3622de43.1881c2"
+        "1a0e340c.b9591c"
       ]
     ]
   },
   {
-    "id": "3622de43.1881c2",
+    "id": "1a0e340c.b9591c",
     "type": "set",
     "name": "set topology",
     "xml": "<set>\n<parameter name='prop.topology' value='`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
     "comments": "",
-    "x": 2470.3349933624268,
-    "y": 657.9023776054382,
-    "z": "33eaf422.44290c",
+    "x": 2426.338897705078,
+    "y": 682.9063062667847,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "b9ac21ad.456c9",
+    "id": "8b82943e.e37978",
     "type": "switchNode",
     "name": "switch tmp.pnidx ",
     "xml": "<switch test=\"`$tmp.pnidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2184.3346939086914,
-    "y": 622.9690413475037,
-    "z": "33eaf422.44290c",
+    "x": 1653.338882446289,
+    "y": 665.9729976654053,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "14fa21e1.174cde"
+        "6c46e25f.8ffa9c"
       ]
     ]
   },
   {
-    "id": "14fa21e1.174cde",
+    "id": "6c46e25f.8ffa9c",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2331.7633361816406,
-    "y": 622.5404515266418,
-    "z": "33eaf422.44290c",
+    "x": 1808.7675552368164,
+    "y": 664.5443773269653,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "aa33b299.d2b4d"
+        "7abaa33.8b7355c"
       ]
     ]
   },
   {
-    "id": "aa33b299.d2b4d",
+    "id": "7abaa33.8b7355c",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 2475.1921920776367,
-    "y": 622.6835255622864,
-    "z": "33eaf422.44290c",
+    "x": 1949.1961784362793,
+    "y": 665.6874666213989,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "f19570ac.55187",
+    "id": "f3550d2c.724f9",
     "type": "switchNode",
     "name": "switch topology hub-spoke",
     "xml": "<switch test=\"`$prop.topology == 'hub-spoke'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1551.3348426818848,
-    "y": 759.3023405075073,
-    "z": "33eaf422.44290c",
+    "x": 1561.3387489318848,
+    "y": 768.3062467575073,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "aa80dabf.aca3c8",
-        "4031750f.9789cc"
+        "ab080c7a.92d5",
+        "3d04ef10.4ea32"
       ]
     ]
   },
   {
-    "id": "aa80dabf.aca3c8",
+    "id": "ab080c7a.92d5",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1741.334529876709,
-    "y": 784.3028259277344,
-    "z": "33eaf422.44290c",
+    "x": 1751.338436126709,
+    "y": 793.3067321777344,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "768ac816.c95648"
+        "8abbeb7b.b004e8"
       ]
     ]
   },
   {
-    "id": "4031750f.9789cc",
+    "id": "3d04ef10.4ea32",
     "type": "outcomeTrue",
     "name": "false",
     "xml": "<outcome value='false'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1742.3353233337402,
-    "y": 712.3024568557739,
-    "z": "33eaf422.44290c",
+    "x": 1745.3393630981445,
+    "y": 754.3063945770264,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "bcb708b4.4756f8"
+        "86771426.4b32c8"
       ]
     ]
   },
   {
-    "id": "bcb708b4.4756f8",
+    "id": "86771426.4b32c8",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1872.3353271484375,
-    "y": 711.3024568557739,
-    "z": "33eaf422.44290c",
+    "x": 1881.3393669128418,
+    "y": 754.3063335418701,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "768ac816.c95648",
+    "id": "8abbeb7b.b004e8",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1746.66748046875,
-    "y": 852.3020601272583,
-    "z": "33eaf422.44290c",
+    "x": 1756.67138671875,
+    "y": 861.3059663772583,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "37a8a2fc.2a711e"
+        "aa63c4ce.dcdf88"
       ]
     ]
   },
   {
-    "id": "37a8a2fc.2a711e",
+    "id": "aa63c4ce.dcdf88",
     "type": "for",
     "name": "for ppidx.. mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[]",
     "xml": "<for index='ppidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 2154.000732421875,
-    "y": 852.6356782913208,
-    "z": "33eaf422.44290c",
+    "x": 2164.004638671875,
+    "y": 861.6395845413208,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "2c05f76b.7d8c98"
+        "db34806a.eb197"
       ]
     ]
   },
   {
-    "id": "27aa5d13.3e58c2",
+    "id": "a12ec2fd.fe008",
     "type": "set",
     "name": "set prop.ar.provided-allotted-resource-id",
     "xml": "<set>\n<parameter name='prop.ar.provided-allotted-resource-id' value='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$ppidx].allotted-resource-id`' />\n\n",
     "comments": "",
-    "x": 2245.0018463134766,
-    "y": 930.6359763145447,
-    "z": "33eaf422.44290c",
+    "x": 2255.0057525634766,
+    "y": 939.6398825645447,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "2e8e3485.54a23c",
+    "id": "48c0bc5c.016e84",
     "type": "for",
     "name": "for loop aridx - Get role from allotted resource",
     "xml": "<for index=\"aridx\" start=\"0\" end=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 2263.0025482177734,
-    "y": 1041.302767753601,
-    "z": "33eaf422.44290c",
+    "x": 2273.0064544677734,
+    "y": 1050.306674003601,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "1e03ba47.0fb3f6"
+        "6e2c1efa.030fd"
       ]
     ]
   },
   {
-    "id": "a525e63a.cc2b38",
+    "id": "d87f1462.94a148",
     "type": "switchNode",
     "name": "switch Role",
     "xml": "<switch test=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'Role'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2672.002658843994,
-    "y": 1044.3028545379639,
-    "z": "33eaf422.44290c",
+    "x": 2682.006565093994,
+    "y": 1053.3067607879639,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "3f99d6d3.e0611a"
+        "8902bff0.b993a"
       ]
     ]
   },
   {
-    "id": "3f99d6d3.e0611a",
+    "id": "8902bff0.b993a",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2813.0029907226562,
-    "y": 1043.3028535842896,
-    "z": "33eaf422.44290c",
+    "x": 2823.0068969726562,
+    "y": 1052.3067598342896,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "7bec0d2f.0381d4"
+        "d0dace3e.a4044"
       ]
     ]
   },
   {
-    "id": "7bec0d2f.0381d4",
+    "id": "d0dace3e.a4044",
     "type": "set",
     "name": "set prop.role",
     "xml": "<set>\n<parameter name='prop.role' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />\n",
     "comments": "",
-    "x": 2954.0030250549316,
-    "y": 1044.9027452468872,
-    "z": "33eaf422.44290c",
+    "x": 2964.0069313049316,
+    "y": 1053.9066514968872,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "8fa9655b.7c6ef8",
+    "id": "a56e979.94c4668",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2749.0020446777344,
-    "y": 947.969269990921,
-    "z": "33eaf422.44290c",
+    "x": 2759.0059509277344,
+    "y": 956.973176240921,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "788b9cb8.8b37d4"
+        "5e3a3525.ed601c"
       ]
     ]
   },
   {
-    "id": "3a2551b1.4f0ace",
+    "id": "36ee87ff.edcc88",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2745.8537673950195,
-    "y": 1002.0353531837463,
-    "z": "33eaf422.44290c",
+    "x": 2755.8576736450195,
+    "y": 1011.0392594337463,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "5672e76f.825118"
+        "61955a75.34d004"
       ]
     ]
   },
   {
-    "id": "5672e76f.825118",
-    "type": "returnFailure",
-    "name": "return failure",
-    "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"Error: SOTN resource not found\" />\n    \n",
-    "comments": "",
-    "x": 2891.002540588379,
-    "y": 999.3028502464294,
-    "z": "33eaf422.44290c",
-    "wires": []
-  },
-  {
-    "id": "788b9cb8.8b37d4",
-    "type": "block",
-    "name": "block",
-    "xml": "<block>\n",
-    "atomic": "false",
-    "comments": "",
-    "outputs": 1,
-    "x": 2877.0020484924316,
-    "y": 947.9692711830139,
-    "z": "33eaf422.44290c",
-    "wires": [
-      []
-    ]
-  },
-  {
-    "id": "f102bda6.18929",
+    "id": "1dae6147.4a990f",
     "type": "switchNode",
     "name": "switch role hub",
     "xml": "<switch test=\"`$prop.role == hub`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2129.3351821899414,
-    "y": 1106.6358079910278,
-    "z": "33eaf422.44290c",
+    "x": 2139.3390884399414,
+    "y": 1115.6397142410278,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "145fa94e.f27887",
-        "f3be5614.599b68"
+        "918c56f9.c83968",
+        "c6d12fe7.97792"
       ]
     ]
   },
   {
-    "id": "da4408c3.f5c0d8",
+    "id": "f44852b5.87cbc",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2445.3345680236816,
-    "y": 1082.6354112625122,
-    "z": "33eaf422.44290c",
+    "x": 2455.3384742736816,
+    "y": 1091.6393175125122,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "77da5adf.834034",
+    "id": "b92c0442.b0f838",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2855.3042030334473,
-    "y": 1178.1045179367065,
-    "z": "33eaf422.44290c",
+    "x": 2865.3081092834473,
+    "y": 1187.1084241867065,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "8a4c0c4d.62361"
+        "c83cb2fc.e107f"
       ]
     ]
   },
   {
-    "id": "8429ea0a.844dc8",
+    "id": "3638a6d7.49015a",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2857.155773162842,
-    "y": 1238.170599937439,
-    "z": "33eaf422.44290c",
+    "x": 2867.159679412842,
+    "y": 1247.174506187439,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "e9382022.a0267"
+        "7e0afffe.3838d"
       ]
     ]
   },
   {
-    "id": "e9382022.a0267",
+    "id": "7e0afffe.3838d",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"Error: SDWAN service-data not found\" />\n    \n",
     "comments": "",
-    "x": 3001.304546356201,
-    "y": 1200.4380140304565,
-    "z": "33eaf422.44290c",
+    "x": 3011.308452606201,
+    "y": 1209.4419202804565,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "8a4c0c4d.62361",
+    "id": "c83cb2fc.e107f",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2985.3042221069336,
-    "y": 1167.1046781539917,
-    "z": "33eaf422.44290c",
+    "x": 2995.3081283569336,
+    "y": 1176.1085844039917,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "cf6c45e0.a382b8",
+    "id": "f6606352.8ce6f",
     "type": "set",
     "name": "set prop.ar-service-instance-id",
     "xml": "<set>\n<parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id`' />\n",
     "comments": "",
-    "x": 2457.3356018066406,
-    "y": 1166.6360107660294,
-    "z": "33eaf422.44290c",
+    "x": 2467.3395080566406,
+    "y": 1175.6399170160294,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "57a73c1e.aeb484",
+    "id": "5ea29b9f.be4264",
     "type": "for",
     "name": "for arvidx.. mdsal-arsd.service-data.vnfs.vnf_length[]",
     "xml": "<for index='arvidx' start='0' end='`$mdsal-arsd.service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 2501.0020751953125,
-    "y": 1288.6358003616333,
-    "z": "33eaf422.44290c",
+    "x": 2511.0059814453125,
+    "y": 1297.6397066116333,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "c345e276.9551d"
+        "4d51cabb.29bdd4"
       ]
     ]
   },
   {
-    "id": "c345e276.9551d",
+    "id": "4d51cabb.29bdd4",
     "type": "block",
     "name": "block atmoic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2847.6683959960938,
-    "y": 1278.6357765197754,
-    "z": "33eaf422.44290c",
+    "x": 2857.6723022460938,
+    "y": 1287.6396827697754,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "568b8936.7e3108",
-        "39f7ac2d.b359d4",
-        "5ab57864.07d758"
+        "d3ef4c0.e5881b8",
+        "6e60b7ca.332018",
+        "a1284f22.c1dd1"
       ]
     ]
   },
   {
-    "id": "568b8936.7e3108",
+    "id": "d3ef4c0.e5881b8",
     "type": "switchNode",
     "name": "switch ActivateSDWANPortInstance",
     "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSDWANPortInstance'`\">\n    \n\n",
     "comments": "",
     "outputs": 1,
-    "x": 3105.6684799194336,
-    "y": 1233.636646270752,
-    "z": "33eaf422.44290c",
+    "x": 3119.672410964966,
+    "y": 1258.6406421661377,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "61fa4242.861d3c"
+        "bf3a29ae.d2e8a8"
       ]
     ]
   },
   {
-    "id": "cb874e53.482c8",
+    "id": "5fa744b7.80a78c",
     "type": "switchNode",
     "name": "switch tmp.portvidx ",
     "xml": "<switch test=\"`$tmp.portvidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2582.668212890625,
-    "y": 1333.3024454116821,
-    "z": "33eaf422.44290c",
+    "x": 2592.672119140625,
+    "y": 1342.3063516616821,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "6aed06ab.403dd8"
+        "72b9c858.12ec88"
       ]
     ]
   },
   {
-    "id": "815939d8.db2788",
+    "id": "15f5118.456cfef",
     "type": "for",
     "name": "for loop wportidx - Get wan port ID from servicedata",
     "xml": "<for index=\"wportidx\" start=\"0\" end=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 2507.6688232421875,
-    "y": 1488.6367044448853,
-    "z": "33eaf422.44290c",
+    "x": 2517.6727294921875,
+    "y": 1497.6406106948853,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "233ccbaa.09c2a4"
+        "b2e9e931.6800c8"
       ]
     ]
   },
   {
-    "id": "6aed06ab.403dd8",
+    "id": "72b9c858.12ec88",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2743.0966777801514,
-    "y": 1332.8739652633667,
-    "z": "33eaf422.44290c",
+    "x": 2753.1005840301514,
+    "y": 1341.8778715133667,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "ed789211.6aa24"
+        "f81f5327.8ee49"
       ]
     ]
   },
   {
-    "id": "ed789211.6aa24",
+    "id": "f81f5327.8ee49",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id (port) not found in service-data\" />\n",
     "comments": "",
-    "x": 2880.525634765625,
-    "y": 1333.0173768997192,
-    "z": "33eaf422.44290c",
+    "x": 2890.529541015625,
+    "y": 1342.0212831497192,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "61fa4242.861d3c",
+    "id": "bf3a29ae.d2e8a8",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3333.668167114258,
-    "y": 1231.6366472244263,
-    "z": "33eaf422.44290c",
+    "x": 3347.67209815979,
+    "y": 1256.640643119812,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "8dcdd808.562708"
+        "2e9dbb2.cfc4c44"
       ]
     ]
   },
   {
-    "id": "233ccbaa.09c2a4",
+    "id": "b2e9e931.6800c8",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2850.669807434082,
-    "y": 1491.6369543075562,
-    "z": "33eaf422.44290c",
+    "x": 2860.673713684082,
+    "y": 1500.6408605575562,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "a50a8ecc.70146",
-        "c6553e69.23e06",
-        "a6ca66b6.132b88",
-        "f8ad0824.756498"
+        "948d8437.e73248",
+        "89e2b91a.b2d6b8",
+        "18165b60.a7ba85",
+        "ccf6624c.26897"
       ]
     ]
   },
   {
-    "id": "a50a8ecc.70146",
+    "id": "948d8437.e73248",
     "type": "switchNode",
     "name": "switch transportNetworkName",
     "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].name == 'transportNetworkName'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3145.670757293701,
-    "y": 1430.6374912261963,
-    "z": "33eaf422.44290c",
+    "x": 3155.674663543701,
+    "y": 1439.6413974761963,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "1b0657c2.3d75f8"
+        "cfc84538.b28318"
       ]
     ]
   },
   {
-    "id": "8dcdd808.562708",
+    "id": "2e9dbb2.cfc4c44",
     "type": "set",
     "name": "set tmp.portvidx ",
     "xml": "<set>\n<parameter name='tmp.portvidx' value='`$arvidx`' />\n\n",
     "comments": "",
-    "x": 3488.6678504943848,
-    "y": 1231.636646270752,
-    "z": "33eaf422.44290c",
+    "x": 3502.671781539917,
+    "y": 1256.6406421661377,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "1b0657c2.3d75f8",
+    "id": "cfc84538.b28318",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3338.6707725524902,
-    "y": 1430.63765335083,
-    "z": "33eaf422.44290c",
+    "x": 3348.6746788024902,
+    "y": 1439.64155960083,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "b34f100.12863f"
+        "cb06aff7.fe992"
       ]
     ]
   },
   {
-    "id": "b34f100.12863f",
+    "id": "cb06aff7.fe992",
     "type": "set",
     "name": "set prop.hub.transportNetworkName",
     "xml": "<set>\n<parameter name='prop.hub.transportNetworkName' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].value`' />\n",
     "comments": "",
-    "x": 3556.6707801818848,
-    "y": 1429.23823928833,
-    "z": "33eaf422.44290c",
+    "x": 3566.6746864318848,
+    "y": 1438.24214553833,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "c6553e69.23e06",
+    "id": "89e2b91a.b2d6b8",
     "type": "switchNode",
     "name": "switch wanPortId",
     "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].name == 'wanPortId'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3107.003490447998,
-    "y": 1464.6371002197266,
-    "z": "33eaf422.44290c",
+    "x": 3117.007396697998,
+    "y": 1473.6410064697266,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "2bec9518.ec7c8a"
+        "c1169dfe.4c65a"
       ]
     ]
   },
   {
-    "id": "2bec9518.ec7c8a",
+    "id": "c1169dfe.4c65a",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3268.003818511963,
-    "y": 1465.6371803283691,
-    "z": "33eaf422.44290c",
+    "x": 3278.007724761963,
+    "y": 1474.6410865783691,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "37425798.ff2018"
+        "6fd3807f.bc967"
       ]
     ]
   },
   {
-    "id": "37425798.ff2018",
+    "id": "6fd3807f.bc967",
     "type": "set",
     "name": "set prop.hub.wanPortId",
     "xml": "<set>\n<parameter name='prop.hub.wanPortId' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].value`' />\n",
     "comments": "",
-    "x": 3458.004280090332,
-    "y": 1465.2374563217163,
-    "z": "33eaf422.44290c",
+    "x": 3468.008186340332,
+    "y": 1474.2413625717163,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "d298818e.120b",
+    "id": "2d5b2f06.016de",
     "type": "switchNode",
     "name": "switch  prop.hub.transportNetworkName==prop.spoke.transportNetworkName",
     "xml": "<switch test=\"`$prop.hub.transportNetworkName == $prop.spoke.transportNetworkName`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2585.004150390625,
-    "y": 1591.304440498352,
-    "z": "33eaf422.44290c",
+    "x": 2595.008056640625,
+    "y": 1600.308346748352,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "7a56c9bb.004ba8",
-        "6f7c3402.62f4ac"
+        "336fdae9.175cb6",
+        "1f1ba045.97a09"
       ]
     ]
   },
   {
-    "id": "7a56c9bb.004ba8",
+    "id": "336fdae9.175cb6",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2931.0036811828613,
-    "y": 1628.3045144081116,
-    "z": "33eaf422.44290c",
+    "x": 2941.0075874328613,
+    "y": 1637.3084206581116,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "3d53e5a5.8f912a"
+        "4f105ce1.5af714"
       ]
     ]
   },
   {
-    "id": "6f7c3402.62f4ac",
+    "id": "1f1ba045.97a09",
     "type": "outcomeTrue",
     "name": "false",
     "xml": "<outcome value='false'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2935.0041694641113,
-    "y": 1563.3041467666626,
-    "z": "33eaf422.44290c",
+    "x": 2945.0080757141113,
+    "y": 1572.3080530166626,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "67b638dd.ee4608"
+        "5909586.22baea8"
       ]
     ]
   },
   {
-    "id": "67b638dd.ee4608",
+    "id": "5909586.22baea8",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 3075.0040969848633,
-    "y": 1591.304271697998,
-    "z": "33eaf422.44290c",
+    "x": 3085.0080032348633,
+    "y": 1600.308177947998,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "2c05f76b.7d8c98",
+    "id": "db34806a.eb197",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1896.0322265625,
-    "y": 961.8333101272583,
-    "z": "33eaf422.44290c",
+    "x": 1906.0361328125,
+    "y": 970.8372163772583,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "27aa5d13.3e58c2",
-        "2e8e3485.54a23c",
-        "f102bda6.18929",
-        "74cd5045.40831",
-        "447d9e5f.d5a82"
+        "a12ec2fd.fe008",
+        "7504b3dc.db15fc",
+        "28b961ad.bfb2de",
+        "1dae6147.4a990f",
+        "48c0bc5c.016e84"
       ]
     ]
   },
   {
-    "id": "e66f705e.b1887",
+    "id": "3b80b5a9.9770ba",
     "type": "switchNode",
     "name": "switch vpnId",
     "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'vpnId'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2168.001268386841,
-    "y": 704.6354126930237,
-    "z": "33eaf422.44290c",
+    "x": 2124.005172729492,
+    "y": 729.6393413543701,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "3f0e1104.f843be"
+        "c6514d30.77c24"
       ]
     ]
   },
   {
-    "id": "3f0e1104.f843be",
+    "id": "c6514d30.77c24",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2312.0012798309326,
-    "y": 704.6354537010193,
-    "z": "33eaf422.44290c",
+    "x": 2268.005184173584,
+    "y": 729.6393823623657,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "ca8d4515.16e2d8"
+        "777a9029.320d4"
       ]
     ]
   },
   {
-    "id": "ca8d4515.16e2d8",
+    "id": "777a9029.320d4",
     "type": "set",
     "name": "set prop.vpnId",
     "xml": "<set>\n<parameter name='prop.vpnId' value='`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
     "comments": "",
-    "x": 2470.001001358032,
-    "y": 703.2353882789612,
-    "z": "33eaf422.44290c",
+    "x": 2426.0049057006836,
+    "y": 728.2393169403076,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "49f7ab80.b2f444",
+    "id": "772df895.4e43b8",
     "type": "set",
     "name": "Set prop.hubTnpId",
     "xml": "<set>\n<parameter name='prop.hubTnpId' value='$prop.hub.wanPortId' />\n\n",
     "comments": "",
-    "x": 2622.336555480957,
-    "y": 1717.6363048553467,
-    "z": "33eaf422.44290c",
+    "x": 2632.340461730957,
+    "y": 1726.6402111053467,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "e429ce4e.ff4d3",
+    "id": "32021f5a.688fc",
     "type": "execute",
     "name": "execute RestApiCallNode underlay route",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-underlay.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/routing-protocol/static/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"underlayHubResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 3483.335531234741,
-    "y": 2176.970527648926,
-    "z": "33eaf422.44290c",
+    "x": 3461.3399982452393,
+    "y": 2412.9747483730316,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "ec4a9fe3.5d773",
-        "c11c5434.daa9b8"
+        "dd81b865.bfe928",
+        "b6ee17f7.b3f2b8"
       ]
     ]
   },
   {
-    "id": "c11c5434.daa9b8",
+    "id": "b6ee17f7.b3f2b8",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3730.3355026245117,
-    "y": 2161.970682144165,
-    "z": "33eaf422.44290c",
+    "x": 3728.339906692505,
+    "y": 2440.9747779369354,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "ec4a9fe3.5d773",
+    "id": "dd81b865.bfe928",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3728.3351821899414,
-    "y": 2117.970672607422,
-    "z": "33eaf422.44290c",
+    "x": 3726.3395862579346,
+    "y": 2396.9747684001923,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "dfdd1a66.f211b8"
+        "5f5cdc8d.3e29c4"
       ]
     ]
   },
   {
-    "id": "dfdd1a66.f211b8",
+    "id": "5f5cdc8d.3e29c4",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing sdwan hub route underlay rest api\" />\n",
     "comments": "",
-    "x": 3870.335868835449,
-    "y": 2115.9707555770874,
-    "z": "33eaf422.44290c",
+    "x": 3868.3402729034424,
+    "y": 2394.974851369858,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "f88633ef.4a895",
+    "id": "ae46a29e.f97e3",
     "type": "set",
     "name": "Add prop.hub.route",
-    "xml": "<set>\n<parameter name='prop.route.id' value='`$prop.hubRouteId`' />\n<parameter name='prop.route.vpnId' value='`$prop.vpnId`' />\n<parameter name='prop.route.siteId' value='`$prop.hub.siteId`' />\n<parameter name='prop.route.deviceId' value='`$prop.hub.deviceId`' />\n<parameter name='prop.route.providerIpAddress' value='`$prop.hub.providerIpAddress`' />\n<parameter name='prop.route.wanportId' value='`$prop.spoke.wanportId`' />\n<parameter name='prop.route.ipAddress' value='`$prop.hub.ipAddress`' />\n\n\n",
+    "xml": "<set>\n<parameter name='prop.route.id' value='`$prop.hubRouteId`' />\n<parameter name='prop.route.vpnId' value='`$prop.vpnId`' />\n<parameter name='prop.route.siteId' value='`$prop.hub.siteId`' />\n<parameter name='prop.route.deviceId' value='`$prop.hub.deviceId`' />\n<parameter name='prop.route.providerIpAddress' value='`$prop.hub.providerIpAddress`' />\n<parameter name='prop.route.wanportId' value='`$prop.spoke.wanPortId`' />\n<parameter name='prop.route.ipAddress' value='`$prop.hub.ipAddress`' />\n\n\n",
     "comments": "",
-    "x": 3414.669235229492,
-    "y": 2140.6372261047363,
-    "z": "33eaf422.44290c",
+    "x": 3405.6733779907227,
+    "y": 2369.6412563323975,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "9c47cd10.cba71",
+    "id": "6c422db5.5ce744",
     "type": "execute",
     "name": "execute RestApiCallNode underlay route",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-underlay.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/routing-protocol/static/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"underlayspokeResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 3489.669235229492,
-    "y": 2282.637691259384,
-    "z": "33eaf422.44290c",
+    "x": 3480.6733779907227,
+    "y": 2511.6417214870453,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "97c364c.1574998",
-        "46a68448.91960c"
+        "911061e0.d1dd4",
+        "f999921.375d37"
       ]
     ]
   },
   {
-    "id": "46a68448.91960c",
+    "id": "f999921.375d37",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3734.669120788574,
-    "y": 2261.6379222869873,
-    "z": "33eaf422.44290c",
+    "x": 3732.6735248565674,
+    "y": 2540.6420180797577,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "97c364c.1574998",
+    "id": "911061e0.d1dd4",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3732.668800354004,
-    "y": 2217.637912750244,
-    "z": "33eaf422.44290c",
+    "x": 3730.673204421997,
+    "y": 2496.6420085430145,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "32d31d6b.e39f42"
+        "98292650.e96428"
       ]
     ]
   },
   {
-    "id": "32d31d6b.e39f42",
+    "id": "98292650.e96428",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing sdwan spoke route underlay rest api\" />\n",
     "comments": "",
-    "x": 3874.6694869995117,
-    "y": 2215.6379957199097,
-    "z": "33eaf422.44290c",
+    "x": 3872.673891067505,
+    "y": 2494.64209151268,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "39f7ac2d.b359d4",
+    "id": "6e60b7ca.332018",
     "type": "switchNode",
     "name": "switch ActivateSDWANDeviceInstance",
     "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\">\n    \n    \n\n",
     "comments": "",
     "outputs": 1,
-    "x": 3116.5320568084717,
-    "y": 1266.833604812622,
-    "z": "33eaf422.44290c",
+    "x": 3130.535987854004,
+    "y": 1291.8376007080078,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "f872eafd.ca0638"
+        "8aedc456.2f7ae8"
       ]
     ]
   },
   {
-    "id": "50e86192.f47ba",
+    "id": "ae09c3af.7e2b1",
     "type": "switchNode",
     "name": "switch tmp.devicevidx ",
     "xml": "<switch test=\"`$tmp.devicevidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2588.5316314697266,
-    "y": 1375.4999265670776,
-    "z": "33eaf422.44290c",
+    "x": 2598.5355377197266,
+    "y": 1384.5038328170776,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "e276c36a.0c845"
+        "250b22bf.a152be"
       ]
     ]
   },
   {
-    "id": "e276c36a.0c845",
+    "id": "250b22bf.a152be",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2754.9600677490234,
-    "y": 1375.0714597702026,
-    "z": "33eaf422.44290c",
+    "x": 2764.9639739990234,
+    "y": 1384.0753660202026,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "58c8206f.bb829"
+        "923c6659.234fb8"
       ]
     ]
   },
   {
-    "id": "58c8206f.bb829",
+    "id": "923c6659.234fb8",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id (device) not found in service-data\" />\n",
     "comments": "",
-    "x": 2895.388999938965,
-    "y": 1377.2144346237183,
-    "z": "33eaf422.44290c",
+    "x": 2905.392906188965,
+    "y": 1386.2183408737183,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "f872eafd.ca0638",
+    "id": "8aedc456.2f7ae8",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3344.531744003296,
-    "y": 1264.8336057662964,
-    "z": "33eaf422.44290c",
+    "x": 3358.535675048828,
+    "y": 1289.8376016616821,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "9b7f11e8.f156f"
+        "bd37a285.897b2"
       ]
     ]
   },
   {
-    "id": "9b7f11e8.f156f",
+    "id": "bd37a285.897b2",
     "type": "set",
     "name": "set tmp.devicevidx ",
     "xml": "<set>\n<parameter name='tmp.devicevidx' value='`$arvidx`' />\n\n",
     "comments": "",
-    "x": 3499.531427383423,
-    "y": 1264.833604812622,
-    "z": "33eaf422.44290c",
+    "x": 3513.535358428955,
+    "y": 1289.8376007080078,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "5ab57864.07d758",
+    "id": "a1284f22.c1dd1",
     "type": "switchNode",
     "name": "switch ActivateSiteInstance",
     "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`\">\n    \n    \n\n",
     "comments": "",
     "outputs": 1,
-    "x": 3079.532127380371,
-    "y": 1300.8336687088013,
-    "z": "33eaf422.44290c",
+    "x": 3093.5360584259033,
+    "y": 1325.837664604187,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "c3a08b58.d519a8"
+        "b05e575a.27f578"
       ]
     ]
   },
   {
-    "id": "971c87ae.5fde98",
+    "id": "3739eed6.72baf2",
     "type": "switchNode",
     "name": "switch tmp.sitevidx ",
     "xml": "<switch test=\"`$tmp.sitevidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2587.5315017700195,
-    "y": 1413.4998044967651,
-    "z": "33eaf422.44290c",
+    "x": 2597.5354080200195,
+    "y": 1422.5037107467651,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "9fcf4fcb.f5c0f"
+        "3396efac.e6fa3"
       ]
     ]
   },
   {
-    "id": "9fcf4fcb.f5c0f",
+    "id": "3396efac.e6fa3",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2747.959966659546,
-    "y": 1413.0713243484497,
-    "z": "33eaf422.44290c",
+    "x": 2757.963872909546,
+    "y": 1422.0752305984497,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "2e7d1637.59ed7a"
+        "35fde04d.b7b7a"
       ]
     ]
   },
   {
-    "id": "2e7d1637.59ed7a",
+    "id": "35fde04d.b7b7a",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id (site) not found in service-data\" />\n",
     "comments": "",
-    "x": 2896.388921737671,
-    "y": 1415.2143306732178,
-    "z": "33eaf422.44290c",
+    "x": 2906.392827987671,
+    "y": 1424.2182369232178,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "c3a08b58.d519a8",
+    "id": "b05e575a.27f578",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3267.531692504883,
-    "y": 1300.8338346481323,
-    "z": "33eaf422.44290c",
+    "x": 3281.535623550415,
+    "y": 1325.837830543518,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "90c635f1.794b58"
+        "18980fd.036c1f"
       ]
     ]
   },
   {
-    "id": "90c635f1.794b58",
+    "id": "18980fd.036c1f",
     "type": "set",
     "name": "set tmp.sitevidx ",
     "xml": "<set>\n<parameter name='tmp.sitevidx' value='`$arvidx`' />\n\n",
     "comments": "",
-    "x": 3422.5313758850098,
-    "y": 1300.833833694458,
-    "z": "33eaf422.44290c",
+    "x": 3436.535306930542,
+    "y": 1325.8378295898438,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "d7805819.9cd108",
+    "id": "5b475dee.c12664",
     "type": "for",
     "name": "for loop deviceidx - Get wan port ID from servicedata",
     "xml": "<for index=\"deviceidx\" start=\"0\" end=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.devicevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 2719.5331497192383,
-    "y": 1753.834059715271,
-    "z": "33eaf422.44290c",
+    "x": 2729.5370559692383,
+    "y": 1762.837965965271,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "82cf7632.68ed28"
+        "42885256.de226c"
       ]
     ]
   },
   {
-    "id": "2060fdef.b0b7d2",
+    "id": "a3360f10.ddde5",
     "type": "switchNode",
     "name": "switch deviceId",
     "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.devicevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].name == 'deviceId'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3180.5345039367676,
-    "y": 1667.834927558899,
-    "z": "33eaf422.44290c",
+    "x": 3190.5384101867676,
+    "y": 1676.838833808899,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "2cf983c4.8e5dac"
+        "ecee3f37.bc6a5"
       ]
     ]
   },
   {
-    "id": "2cf983c4.8e5dac",
+    "id": "ecee3f37.bc6a5",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3331.5348777770996,
-    "y": 1664.835171699524,
-    "z": "33eaf422.44290c",
+    "x": 3341.5387840270996,
+    "y": 1673.839077949524,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "234f9431.3dcaac"
+        "1f5be2a4.d6905d"
       ]
     ]
   },
   {
-    "id": "234f9431.3dcaac",
+    "id": "1f5be2a4.d6905d",
     "type": "set",
     "name": "set prop.hub.deviceId",
     "xml": "<set>\n<parameter name='prop.hub.deviceId' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.devicevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />\n",
     "comments": "",
-    "x": 3506.535125732422,
-    "y": 1664.4356966018677,
-    "z": "33eaf422.44290c",
+    "x": 3516.539031982422,
+    "y": 1673.4396028518677,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "4ed5eacf.f6a1c4",
+    "id": "4b7a9b51.8c06a4",
     "type": "for",
     "name": "for loop siteidx - Get site ID from servicedata",
     "xml": "<for index=\"siteidx\" start=\"0\" end=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 2694.0330352783203,
-    "y": 1810.83407497406,
-    "z": "33eaf422.44290c",
-    "wires": [
-      [
-        "c6190b7b.0c6f78"
-      ]
-    ]
-  },
-  {
-    "id": "c9e1f848.8aa118",
-    "type": "switchNode",
-    "name": "switch spokeRouteId",
-    "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'spokeRouteId'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 3160.034511566162,
-    "y": 1822.8348779678345,
-    "z": "33eaf422.44290c",
-    "wires": [
-      [
-        "480353b6.36bf3c"
-      ]
-    ]
-  },
-  {
-    "id": "480353b6.36bf3c",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 3323.035057067871,
-    "y": 1820.8351745605469,
-    "z": "33eaf422.44290c",
+    "x": 2704.0369415283203,
+    "y": 1819.83798122406,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "7e8ff406.9f32cc"
+        "48cb425f.55b89c"
       ]
     ]
   },
   {
-    "id": "7e8ff406.9f32cc",
-    "type": "set",
-    "name": "set prop.spokeRouteId",
-    "xml": "<set>\n<parameter name='prop.spokeRouteId' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\n",
-    "comments": "",
-    "x": 3492.0350646972656,
-    "y": 1820.4357604980469,
-    "z": "33eaf422.44290c",
-    "wires": []
-  },
-  {
-    "id": "4f4875cc.67999c",
+    "id": "d000ff03.568cc",
     "type": "comment",
     "name": "Add route src->dst, dst->src",
     "info": "",
     "comments": "",
-    "x": 2910.6687927246094,
-    "y": 1858.6359510421753,
-    "z": "33eaf422.44290c",
+    "x": 2920.6726989746094,
+    "y": 1867.6398572921753,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "2f1d0b59.a2f164",
+    "id": "29f55e34.5e8332",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2132.334228515625,
-    "y": 1238.968747138977,
-    "z": "33eaf422.44290c",
+    "x": 2142.338134765625,
+    "y": 1247.972653388977,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "57a73c1e.aeb484",
-        "815939d8.db2788",
-        "d298818e.120b",
-        "bc0801cd.444e3",
-        "cf6c45e0.a382b8",
-        "380e9d46.aac952",
-        "150f28bb.9cebb7"
+        "5ea29b9f.be4264",
+        "15f5118.456cfef",
+        "2d5b2f06.016de",
+        "e6f50ce2.c15fa",
+        "f6606352.8ce6f",
+        "ed12d667.ce10c8",
+        "bae059eb.7d03c8"
       ]
     ]
   },
   {
-    "id": "bc0801cd.444e3",
+    "id": "e6f50ce2.c15fa",
     "type": "block",
     "name": "block atmoic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2387.333984375,
-    "y": 1375.3021211624146,
-    "z": "33eaf422.44290c",
+    "x": 2397.337890625,
+    "y": 1384.3060274124146,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "cb874e53.482c8",
-        "50e86192.f47ba",
-        "971c87ae.5fde98"
+        "5fa744b7.80a78c",
+        "ae09c3af.7e2b1",
+        "3739eed6.72baf2"
       ]
     ]
   },
   {
-    "id": "3d53e5a5.8f912a",
+    "id": "4f105ce1.5af714",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2381.3349609375,
-    "y": 1747.6356172561646,
-    "z": "33eaf422.44290c",
+    "x": 2417.3389282226562,
+    "y": 1756.639549255371,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "49f7ab80.b2f444",
-        "d7805819.9cd108",
-        "4ed5eacf.f6a1c4",
-        "927db1a6.0967b",
-        "9c607856.359088"
+        "772df895.4e43b8",
+        "5b475dee.c12664",
+        "4b7a9b51.8c06a4",
+        "4ae4f054.fa7eb"
       ]
     ]
   },
   {
-    "id": "a6ca66b6.132b88",
+    "id": "18165b60.a7ba85",
     "type": "switchNode",
     "name": "switch providerIpAddress",
     "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].name == 'providerIpAddress'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3128.5319747924805,
-    "y": 1501.8334050178528,
-    "z": "33eaf422.44290c",
+    "x": 3138.5358810424805,
+    "y": 1510.8373112678528,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "22164d6f.99a622"
+        "547ceb11.0ca1f4"
       ]
     ]
   },
   {
-    "id": "22164d6f.99a622",
+    "id": "547ceb11.0ca1f4",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3304.532958984375,
-    "y": 1501.8335275650024,
-    "z": "33eaf422.44290c",
+    "x": 3314.536865234375,
+    "y": 1510.8374338150024,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "46635360.d5dd9c"
+        "79cc0282.5e8e0c"
       ]
     ]
   },
   {
-    "id": "46635360.d5dd9c",
+    "id": "79cc0282.5e8e0c",
     "type": "set",
     "name": "set prop.hub.providerIpAddress",
     "xml": "<set>\n<parameter name='prop.hub.providerIpAddress' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].value`' />\n",
     "comments": "",
-    "x": 3506.5329971313477,
-    "y": 1502.4334478378296,
-    "z": "33eaf422.44290c",
+    "x": 3516.5369033813477,
+    "y": 1511.4373540878296,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "f8ad0824.756498",
+    "id": "ccf6624c.26897",
     "type": "switchNode",
     "name": "switch ipAddress",
     "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].name == 'ipAddress'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3101.0320568084717,
-    "y": 1539.333490371704,
-    "z": "33eaf422.44290c",
+    "x": 3111.0359630584717,
+    "y": 1548.337396621704,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "ae5c5a08.535ae8"
+        "11581651.226caa"
       ]
     ]
   },
   {
-    "id": "ae5c5a08.535ae8",
+    "id": "11581651.226caa",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3305.0329971313477,
-    "y": 1539.3334422111511,
-    "z": "33eaf422.44290c",
+    "x": 3315.0369033813477,
+    "y": 1548.3373484611511,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "a2ccd569.27b3a8"
+        "4b6a5df1.4c4ce4"
       ]
     ]
   },
   {
-    "id": "a2ccd569.27b3a8",
+    "id": "4b6a5df1.4c4ce4",
     "type": "set",
     "name": "set prop.hub.ipAddress",
     "xml": "<set>\n<parameter name='prop.hub.ipAddress' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].value`' />\n",
     "comments": "",
-    "x": 3500.033000946045,
-    "y": 1538.9334177970886,
-    "z": "33eaf422.44290c",
+    "x": 3510.036907196045,
+    "y": 1547.9373240470886,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "7ec8de50.abc7a",
+    "id": "162bc63c.6a40ba",
     "type": "set",
     "name": "Add prop.spoke.route",
-    "xml": "<set>\n<parameter name='prop.route.id' value='`$prop.spokeRouteId`' />\n<parameter name='prop.route.vpnId' value='`$prop.vpnId`' />\n<parameter name='prop.route.siteId' value='`$prop.spoke.siteId`' />\n<parameter name='prop.route.deviceId' value='`$prop.spoke.deviceId`' />\n<parameter name='prop.route.providerIpAddress' value='`$prop.spoke.providerIpAddress`' />\n<parameter name='prop.route.wanportId' value='`$prop.hub.wanportId`' />\n<parameter name='prop.route.ipAddress' value='`$prop.spoke.ipAddress`' />\n\n\n\n\n",
+    "xml": "<set>\n<parameter name='prop.route.id' value='`$prop.spokeRouteId`' />\n<parameter name='prop.route.vpnId' value='`$prop.vpnId`' />\n<parameter name='prop.route.siteId' value='`$prop.spoke.siteId`' />\n<parameter name='prop.route.deviceId' value='`$prop.spoke.deviceId`' />\n<parameter name='prop.route.providerIpAddress' value='`$prop.spoke.providerIpAddress`' />\n<parameter name='prop.route.wanportId' value='`$prop.hub.wanPortId`' />\n<parameter name='prop.route.ipAddress' value='`$prop.spoke.ipAddress`' />\n\n\n\n\n",
     "comments": "",
-    "x": 3424.533250808716,
-    "y": 2251.334452390671,
-    "z": "33eaf422.44290c",
+    "x": 3415.5373935699463,
+    "y": 2480.338482618332,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "383a5f3d.e4cb2",
+    "id": "e68f1fae.052f",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 357.3343048095703,
-    "y": 1113.3343391418457,
-    "z": "33eaf422.44290c",
+    "x": 367.3382110595703,
+    "y": 1122.3382453918457,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "66dd18ab.e48f08",
+    "id": "20ecb75b.a622b8",
     "type": "execute",
     "name": "generate connection attachment AR url ",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar.allotted-resource-id`\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1406.6672058105469,
-    "y": 175.30183696746826,
-    "z": "33eaf422.44290c",
+    "x": 1416.6711120605469,
+    "y": 184.30574321746826,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "8e4434c9.93e608",
+    "id": "f4ac6977.3d92e8",
     "type": "execute",
     "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1533.667236328125,
-    "y": 223.3018274307251,
-    "z": "33eaf422.44290c",
+    "x": 1543.671142578125,
+    "y": 232.3057336807251,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "90cd3398.44586",
-        "259f1fc9.28f91"
+        "4d085fb4.7bdbe",
+        "60f770e5.3c645"
       ]
     ]
   },
   {
-    "id": "b50f711c.f7671",
+    "id": "e17df7dc.7298b8",
     "type": "execute",
     "name": "execute RestApiCallNode - get parent service data",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-parent-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-psd\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1759.0013122558594,
-    "y": 537.3021445274353,
-    "z": "33eaf422.44290c",
+    "x": 1768.0052947998047,
+    "y": 566.3060474395752,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "dab3ccab.cce12",
-        "4c1ffccd.7a1ed4"
+        "3af4c28.a27653e",
+        "b8d8640d.13eac8"
       ]
     ]
   },
   {
-    "id": "4176c827.c206f8",
+    "id": "496b2343.92811c",
     "type": "execute",
     "name": "generate connection attachment parent url ",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-parent-connection\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.parent-service-instance-id`\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1735.0010375976562,
-    "y": 503.30206871032715,
-    "z": "33eaf422.44290c",
+    "x": 1745.0049438476562,
+    "y": 512.3059749603271,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "38bc1f98.0d705",
+    "id": "de20210d.6ba26",
     "type": "comment",
     "name": "full mesh do nothing",
     "info": "",
     "comments": "",
-    "x": 1569.667839050293,
-    "y": 714.3021068572998,
-    "z": "33eaf422.44290c",
+    "x": 1579.671745300293,
+    "y": 723.3060131072998,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "d2bafee.be2ed",
+    "id": "688e61c6.6ef82",
     "type": "comment",
     "name": "hub-spoke",
     "info": "",
     "comments": "",
-    "x": 2570.6672401428223,
-    "y": 811.3019967079163,
-    "z": "33eaf422.44290c",
+    "x": 2580.6711463928223,
+    "y": 820.3059029579163,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "74cd5045.40831",
+    "id": "7504b3dc.db15fc",
     "type": "execute",
     "name": "generate connection attachment AR url ",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar.provided-allotted-resource-id`\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2243.0003929138184,
-    "y": 962.3019919395447,
-    "z": "33eaf422.44290c",
+    "x": 2253.0042991638184,
+    "y": 971.3058981895447,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "447d9e5f.d5a82",
+    "id": "28b961ad.bfb2de",
     "type": "execute",
     "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-providedAr\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2374.000473022461,
-    "y": 1001.9686217308044,
-    "z": "33eaf422.44290c",
+    "x": 2384.004379272461,
+    "y": 1010.9725279808044,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "8fa9655b.7c6ef8",
-        "3a2551b1.4f0ace"
+        "a56e979.94c4668",
+        "36ee87ff.edcc88"
       ]
     ]
   },
   {
-    "id": "380e9d46.aac952",
+    "id": "ed12d667.ce10c8",
     "type": "execute",
     "name": "generate service data url",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar-service-instance-id`\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2424.504367828369,
-    "y": 1203.3058919906616,
-    "z": "33eaf422.44290c",
+    "x": 2434.508274078369,
+    "y": 1212.3097982406616,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "150f28bb.9cebb7",
+    "id": "bae059eb.7d03c8",
     "type": "execute",
     "name": "execute RestApiCallNode - get service data of allotted resource",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-arsd\" />\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2540.5045013427734,
-    "y": 1240.3057832717896,
-    "z": "33eaf422.44290c",
+    "x": 2550.5084075927734,
+    "y": 1249.3096895217896,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "77da5adf.834034",
-        "8429ea0a.844dc8"
+        "b92c0442.b0f838",
+        "3638a6d7.49015a"
       ]
     ]
   },
   {
-    "id": "f3be5614.599b68",
+    "id": "c6d12fe7.97792",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2304.5000648498535,
-    "y": 1125.8018560409546,
-    "z": "33eaf422.44290c",
+    "x": 2314.5039710998535,
+    "y": 1134.8057622909546,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "2f1d0b59.a2f164"
+        "29f55e34.5e8332"
       ]
     ]
   },
   {
-    "id": "145fa94e.f27887",
+    "id": "918c56f9.c83968",
     "type": "outcomeFalse",
     "name": "false",
     "xml": "<outcome value='false'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2310.500312805176,
-    "y": 1082.801947593689,
-    "z": "33eaf422.44290c",
+    "x": 2320.504219055176,
+    "y": 1091.805853843689,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "da4408c3.f5c0d8"
+        "f44852b5.87cbc"
       ]
     ]
   },
   {
-    "id": "dc60366a.2e9048",
+    "id": "c4ef0618.a01ef8",
     "type": "for",
     "name": "for loop roleidx - Get role from allotted resource",
     "xml": "<for index=\"roleidx\" start=\"0\" end=\"`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 2885.5008697509766,
-    "y": 230.30177307128906,
-    "z": "33eaf422.44290c",
+    "x": 2895.5047760009766,
+    "y": 239.30567932128906,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "b2e56fad.1ec69"
+        "67fa3697.488778"
       ]
     ]
   },
   {
-    "id": "b2e56fad.1ec69",
+    "id": "67fa3697.488778",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 3144.5011825561523,
-    "y": 229.3020887374878,
-    "z": "33eaf422.44290c",
+    "x": 3154.5050888061523,
+    "y": 238.3059949874878,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "694d9509.75a9ec"
+        "907c7650.cad4a8"
       ]
     ]
   },
   {
-    "id": "694d9509.75a9ec",
+    "id": "907c7650.cad4a8",
     "type": "switchNode",
     "name": "switch Role",
-    "xml": "<switch test=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$roleidx].name == 'role'`\">\n",
+    "xml": "<switch test=\"`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$roleidx].name == 'role'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3293.501194000244,
-    "y": 230.3019256591797,
-    "z": "33eaf422.44290c",
+    "x": 3303.505100250244,
+    "y": 239.3058319091797,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "7d090fc5.01ae4"
+        "d808a0cf.f074f"
       ]
     ]
   },
   {
-    "id": "c3f6a3e4.765a9",
+    "id": "d539825b.12e92",
     "type": "set",
     "name": "set prop.spoke.role",
-    "xml": "<set>\n<parameter name='prop.spoke.role' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$roleidx].value`' />\n",
+    "xml": "<set>\n<parameter name='prop.spoke.role' value='`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$roleidx].value`' />\n",
     "comments": "",
-    "x": 3598.501754760742,
-    "y": 227.90183353424072,
-    "z": "33eaf422.44290c",
+    "x": 3608.505661010742,
+    "y": 236.90573978424072,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "7d090fc5.01ae4",
+    "id": "d808a0cf.f074f",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3429.00101852417,
-    "y": 227.30176544189453,
-    "z": "33eaf422.44290c",
+    "x": 3439.00492477417,
+    "y": 236.30567169189453,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "c3f6a3e4.765a9"
+        "d539825b.12e92"
       ]
     ]
   },
   {
-    "id": "64901ca2.c8fd44",
+    "id": "5d0ffac5.1d4814",
     "type": "switchNode",
     "name": "switch spoke",
     "xml": "<switch test=\"`$prop.spoke.role == 'spoke'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1321.000373840332,
-    "y": 374.301700592041,
-    "z": "33eaf422.44290c",
+    "x": 1331.004280090332,
+    "y": 383.305606842041,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "3df0d9b2.5cda06"
+        "d39c2ae1.e3a298"
       ]
     ]
   },
   {
-    "id": "3df0d9b2.5cda06",
+    "id": "d39c2ae1.e3a298",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1462.000129699707,
-    "y": 375.30173778533936,
-    "z": "33eaf422.44290c",
+    "x": 1472.004035949707,
+    "y": 384.30564403533936,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "e7d060c2.d5397"
+        "401953e4.0343fc"
       ]
     ]
   },
   {
-    "id": "51f4030a.ed3f5c",
+    "id": "3b2ee77e.0ad758",
     "type": "for",
     "name": "for i.. service-data.vnfs.vnf_length[]",
     "xml": "<for index='i' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1734.5006561279297,
-    "y": 429.3017330169678,
-    "z": "33eaf422.44290c",
+    "x": 1744.5045623779297,
+    "y": 438.3056392669678,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "62a2db1c.5168f4"
+        "847bf9c5.b5b848"
       ]
     ]
   },
   {
-    "id": "62a2db1c.5168f4",
+    "id": "847bf9c5.b5b848",
     "type": "block",
     "name": "block atmoic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2068.166847229004,
-    "y": 373.3016633987427,
-    "z": "33eaf422.44290c",
+    "x": 2078.170753479004,
+    "y": 382.3055696487427,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "5123e57d.8bae0c",
-        "23b51d10.325942",
-        "e569fce4.0fcf9"
+        "7d9b7d9a.b8ca74",
+        "6a3836f9.009c38",
+        "55c5f84e.24eae8"
       ]
     ]
   },
   {
-    "id": "5123e57d.8bae0c",
+    "id": "7d9b7d9a.b8ca74",
     "type": "switchNode",
     "name": "switch ActivateSDWANPortInstance",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSDWANPortInstance'`\">\n    \n    \n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2339.1668853759766,
-    "y": 319.3025498390198,
-    "z": "33eaf422.44290c",
+    "x": 2349.1707916259766,
+    "y": 328.3064560890198,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "6db9ff05.77666"
+        "5b0d5f1.e72d3a"
       ]
     ]
   },
   {
-    "id": "6db9ff05.77666",
+    "id": "5b0d5f1.e72d3a",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2552.166648864746,
-    "y": 320.3025527000427,
-    "z": "33eaf422.44290c",
+    "x": 2562.170555114746,
+    "y": 329.3064589500427,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "277a3bfe.22cd04"
+        "2bd1babe.4be726"
       ]
     ]
   },
   {
-    "id": "277a3bfe.22cd04",
+    "id": "2bd1babe.4be726",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2701.0003929138184,
-    "y": 322.3017420768738,
-    "z": "33eaf422.44290c",
+    "x": 2711.0042991638184,
+    "y": 331.3056483268738,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "342216f2.a96c5a"
+        "5b294f75.d92f3"
       ]
     ]
   },
   {
-    "id": "342216f2.a96c5a",
+    "id": "5b294f75.d92f3",
     "type": "for",
     "name": "for loop widx - Get wan port ID from servicedata",
     "xml": "<for index=\"widx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 2974.000343322754,
-    "y": 320.6689600944519,
-    "z": "33eaf422.44290c",
+    "x": 2984.004249572754,
+    "y": 329.6728663444519,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "bd426655.141608"
+        "32cc5203.15e8fe"
       ]
     ]
   },
   {
-    "id": "bd426655.141608",
+    "id": "32cc5203.15e8fe",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 3243.0012702941895,
-    "y": 319.66920614242554,
-    "z": "33eaf422.44290c",
+    "x": 3253.0051765441895,
+    "y": 328.67311239242554,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "d3ada690.01d678",
-        "daf81956.349368",
-        "5bef4443.c838fc",
-        "a4bd0e48.6d82f"
+        "2831a4a1.42336c",
+        "8813fbf3.259e18",
+        "c11e3914.922088",
+        "5141e407.34b3cc"
       ]
     ]
   },
   {
-    "id": "d3ada690.01d678",
+    "id": "2831a4a1.42336c",
     "type": "switchNode",
     "name": "switch transportNetworkName",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].name == 'transportNetworkName'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3486.0023040771484,
-    "y": 274.6697793006897,
-    "z": "33eaf422.44290c",
+    "x": 3496.0062103271484,
+    "y": 283.6736855506897,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "894b8be3.a2d3b8"
+        "2a15c273.32ab0e"
       ]
     ]
   },
   {
-    "id": "894b8be3.a2d3b8",
+    "id": "2a15c273.32ab0e",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3686.0020790100098,
-    "y": 274.6699414253235,
-    "z": "33eaf422.44290c",
+    "x": 3696.0059852600098,
+    "y": 283.6738476753235,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "4cf3ccb2.4c44b4"
+        "5b3ec893.cb96e8"
       ]
     ]
   },
   {
-    "id": "4cf3ccb2.4c44b4",
+    "id": "5b3ec893.cb96e8",
     "type": "set",
     "name": "set prop.spoke.transportNetworkName",
     "xml": "<set>\n<parameter name='prop.spoke.transportNetworkName' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].value`' />\n",
     "comments": "",
-    "x": 3913.002815246582,
-    "y": 276.2705235481262,
-    "z": "33eaf422.44290c",
+    "x": 3923.006721496582,
+    "y": 285.2744297981262,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "e7d060c2.d5397",
+    "id": "401953e4.0343fc",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1214.9694213867188,
-    "y": 685.2706489562988,
-    "z": "33eaf422.44290c",
+    "x": 1224.9733276367188,
+    "y": 694.2745552062988,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "51f4030a.ed3f5c",
-        "4176c827.c206f8",
-        "b50f711c.f7671",
-        "c5126628.a1afc8",
-        "cf236aa.4478b98",
-        "f19570ac.55187"
+        "3b2ee77e.0ad758",
+        "496b2343.92811c",
+        "e17df7dc.7298b8",
+        "c548252d.342ee8",
+        "2eff9ba0.ecf354",
+        "f3550d2c.724f9",
+        "8b82943e.e37978",
+        "7fba3a52.cfca64"
       ]
     ]
   },
   {
-    "id": "23b51d10.325942",
+    "id": "6a3836f9.009c38",
     "type": "switchNode",
     "name": "switch ActivateSDWANDeviceInstance",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\">\n    \n    \n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2331.5003204345703,
-    "y": 393.3017544746399,
-    "z": "33eaf422.44290c",
+    "x": 2341.5042266845703,
+    "y": 402.3056607246399,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "14d0bfc7.55b7a"
+        "7c4ac4a1.4747bc"
       ]
     ]
   },
   {
-    "id": "14d0bfc7.55b7a",
+    "id": "7c4ac4a1.4747bc",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2550.5000705718994,
-    "y": 394.30173921585083,
-    "z": "33eaf422.44290c",
+    "x": 2560.5039768218994,
+    "y": 403.30564546585083,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "da1c13db.62f86"
+        "f4aa9e41.b53e5"
       ]
     ]
   },
   {
-    "id": "da1c13db.62f86",
+    "id": "f4aa9e41.b53e5",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2701.3340606689453,
-    "y": 400.3009305000305,
-    "z": "33eaf422.44290c",
+    "x": 2711.3379669189453,
+    "y": 409.3048367500305,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "e71b7f46.84637"
+        "82e0fc37.26ed9"
       ]
     ]
   },
   {
-    "id": "e71b7f46.84637",
+    "id": "82e0fc37.26ed9",
     "type": "for",
     "name": "for loop didx - Get device ID from servicedata",
     "xml": "<for index=\"didx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 2960.334312438965,
-    "y": 402.66822576522827,
-    "z": "33eaf422.44290c",
+    "x": 2970.338218688965,
+    "y": 411.67213201522827,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "ae18d850.3d05e8"
+        "c5f6af8d.43acf"
       ]
     ]
   },
   {
-    "id": "ae18d850.3d05e8",
+    "id": "c5f6af8d.43acf",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 3246.334819793701,
-    "y": 435.66841077804565,
-    "z": "33eaf422.44290c",
+    "x": 3256.338726043701,
+    "y": 444.67231702804565,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "1383d6a4.a044c9"
+        "eb564ac9.966e08"
       ]
     ]
   },
   {
-    "id": "1383d6a4.a044c9",
+    "id": "eb564ac9.966e08",
     "type": "switchNode",
     "name": "switch deviceId",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].name == 'deviceId'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3429.3357315063477,
-    "y": 435.66902112960815,
-    "z": "33eaf422.44290c",
+    "x": 3439.3396377563477,
+    "y": 444.67292737960815,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "cbbd7b54.04add8"
+        "f15b5da7.6e6af"
       ]
     ]
   },
   {
-    "id": "cbbd7b54.04add8",
+    "id": "f15b5da7.6e6af",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3629.335506439209,
-    "y": 435.66918325424194,
-    "z": "33eaf422.44290c",
+    "x": 3639.339412689209,
+    "y": 444.67308950424194,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "2002292c.f851e6"
+        "24ab8642.92a16a"
       ]
     ]
   },
   {
-    "id": "2002292c.f851e6",
+    "id": "24ab8642.92a16a",
     "type": "set",
     "name": "set prop.spoke.deviceId",
     "xml": "<set>\n<parameter name='prop.spoke.deviceId' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].value`' />\n",
     "comments": "",
-    "x": 3824.3361892700195,
-    "y": 432.26976442337036,
-    "z": "33eaf422.44290c",
+    "x": 3834.3400955200195,
+    "y": 441.27367067337036,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "e569fce4.0fcf9",
+    "id": "55c5f84e.24eae8",
     "type": "switchNode",
     "name": "switch ActivateSiteInstance",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSiteInstance'`\">\n    \n    \n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2310.5004348754883,
-    "y": 454.30178594589233,
-    "z": "33eaf422.44290c",
+    "x": 2320.5043411254883,
+    "y": 463.30569219589233,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "2c51cabd.1c1bf6"
+        "7ebe3d6.3c123c4"
       ]
     ]
   },
   {
-    "id": "2c51cabd.1c1bf6",
+    "id": "7ebe3d6.3c123c4",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2544.500072479248,
-    "y": 455.3017258644104,
-    "z": "33eaf422.44290c",
+    "x": 2554.503978729248,
+    "y": 464.3056321144104,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "4b1a4a05.7589d4"
+        "eaa83766.f196c8"
       ]
     ]
   },
   {
-    "id": "4b1a4a05.7589d4",
+    "id": "eaa83766.f196c8",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2696.3340606689453,
-    "y": 477.30096197128296,
-    "z": "33eaf422.44290c",
+    "x": 2706.3379669189453,
+    "y": 486.30486822128296,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "bfdd7dbc.be644"
+        "d0b475ec.f63c48",
+        "3857554a.ced0aa"
       ]
     ]
   },
   {
-    "id": "bfdd7dbc.be644",
+    "id": "d0b475ec.f63c48",
     "type": "for",
     "name": "for loop widx - Get wan site ID from servicedata",
     "xml": "<for index=\"sidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
     "comments": "",
     "outputs": 1,
-    "x": 2977.3338928222656,
-    "y": 476.668164730072,
-    "z": "33eaf422.44290c",
+    "x": 2987.3377990722656,
+    "y": 485.672070980072,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "86ec8da.eb7757"
+        "d6950beb.98c1a8"
       ]
     ]
   },
   {
-    "id": "86ec8da.eb7757",
+    "id": "d6950beb.98c1a8",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 3246.334819793701,
-    "y": 475.66841077804565,
-    "z": "33eaf422.44290c",
+    "x": 3256.338726043701,
+    "y": 484.67231702804565,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "ea6a5ab7.abd8e8",
-        "b2aac804.e6f348"
+        "f84a2fdd.ca38",
+        "8488fc33.1f86c",
+        "4d409006.b4615"
       ]
     ]
   },
   {
-    "id": "ea6a5ab7.abd8e8",
+    "id": "f84a2fdd.ca38",
     "type": "switchNode",
-    "name": "switch name",
+    "name": "switch siteId",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'siteId'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3435.335723876953,
-    "y": 513.6690349578857,
-    "z": "33eaf422.44290c",
+    "x": 3445.33992767334,
+    "y": 534.6729888916016,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "46e734ca.67fa0c"
+        "785cdd27.fd93c4"
       ]
     ]
   },
   {
-    "id": "46e734ca.67fa0c",
+    "id": "785cdd27.fd93c4",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3635.3354988098145,
-    "y": 513.6691970825195,
-    "z": "33eaf422.44290c",
+    "x": 3645.3394050598145,
+    "y": 522.6731033325195,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "f2397edb.062c5"
+        "5c156f9.fbc869"
       ]
     ]
   },
   {
-    "id": "f2397edb.062c5",
+    "id": "5c156f9.fbc869",
     "type": "set",
     "name": "set prop.spoke.siteId",
     "xml": "<set>\n<parameter name='prop.spoke.siteId' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />\n",
     "comments": "",
-    "x": 3823.3363037109375,
-    "y": 512.2698106765747,
-    "z": "33eaf422.44290c",
+    "x": 3838.340358734131,
+    "y": 529.2737336158752,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "daf81956.349368",
+    "id": "8813fbf3.259e18",
     "type": "switchNode",
     "name": "switch wanPortId",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].name == 'wanPortId'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3459.5,
-    "y": 311.3018355369568,
-    "z": "33eaf422.44290c",
+    "x": 3469.50390625,
+    "y": 320.3057417869568,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "34972355.9c297c"
+        "d0babd8f.c557b"
       ]
     ]
   },
   {
-    "id": "34972355.9c297c",
+    "id": "d0babd8f.c557b",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3689.5000038146973,
-    "y": 311.3019471168518,
-    "z": "33eaf422.44290c",
+    "x": 3699.5039100646973,
+    "y": 320.3058533668518,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "6f9ff7e2.2957f8"
+        "e2b46cce.ea19d"
       ]
     ]
   },
   {
-    "id": "6f9ff7e2.2957f8",
+    "id": "e2b46cce.ea19d",
     "type": "set",
     "name": "set prop.spoke.wanPortId",
     "xml": "<set>\n<parameter name='prop.spoke.wanPortId' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].value`' />\n",
     "comments": "",
-    "x": 3916.5007400512695,
-    "y": 312.90252923965454,
-    "z": "33eaf422.44290c",
+    "x": 3926.5046463012695,
+    "y": 321.90643548965454,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "5bef4443.c838fc",
+    "id": "c11e3914.922088",
     "type": "switchNode",
     "name": "switch providerIpAddress",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].name == 'providerIpAddress'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3477.500160217285,
-    "y": 355.30178594589233,
-    "z": "33eaf422.44290c",
+    "x": 3487.504066467285,
+    "y": 364.30569219589233,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "9220a2ce.263ec"
+        "c0d01537.19ceb8"
       ]
     ]
   },
   {
-    "id": "9220a2ce.263ec",
+    "id": "c0d01537.19ceb8",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3677.4999351501465,
-    "y": 355.3019480705261,
-    "z": "33eaf422.44290c",
+    "x": 3687.5038414001465,
+    "y": 364.3058543205261,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "95bab342.b39b3"
+        "6ecb9e8.25b2b6"
       ]
     ]
   },
   {
-    "id": "95bab342.b39b3",
+    "id": "6ecb9e8.25b2b6",
     "type": "set",
     "name": "set prop.spoke.providerIpAddress",
     "xml": "<set>\n<parameter name='prop.spoke.providerIpAddress' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].value`' />\n",
     "comments": "",
-    "x": 3904.5006713867188,
-    "y": 356.90253019332886,
-    "z": "33eaf422.44290c",
+    "x": 3914.5045776367188,
+    "y": 365.90643644332886,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "a4bd0e48.6d82f",
+    "id": "5141e407.34b3cc",
     "type": "switchNode",
     "name": "switch ipAddress",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].name == 'ipAddress'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3457.499988555908,
-    "y": 394.30182218551636,
-    "z": "33eaf422.44290c",
+    "x": 3467.503894805908,
+    "y": 403.30572843551636,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "511d5688.773858"
+        "f9d0d35c.eced2"
       ]
     ]
   },
   {
-    "id": "511d5688.773858",
+    "id": "f9d0d35c.eced2",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3681.4998168945312,
-    "y": 394.3019394874573,
-    "z": "33eaf422.44290c",
+    "x": 3691.5037231445312,
+    "y": 403.3058457374573,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "fc2e69a1.2d4298"
+        "b1e06d93.e9e08"
       ]
     ]
   },
   {
-    "id": "fc2e69a1.2d4298",
+    "id": "b1e06d93.e9e08",
     "type": "set",
     "name": "set prop.spoke.ipAddress",
     "xml": "<set>\n<parameter name='prop.spoke.ipAddress' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].value`' />\n",
     "comments": "",
-    "x": 3908.5005531311035,
-    "y": 395.90252161026,
-    "z": "33eaf422.44290c",
+    "x": 3918.5044593811035,
+    "y": 404.90642786026,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "e9598182.81589",
+    "id": "89904125.f9c2d",
     "type": "block",
     "name": "block: atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1024.999900817871,
-    "y": 253.50004196166992,
-    "z": "33eaf422.44290c",
+    "x": 1035.003807067871,
+    "y": 262.5039482116699,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "be430b5e.14a828",
-        "66dd18ab.e48f08",
-        "8e4434c9.93e608",
-        "64901ca2.c8fd44"
+        "f587f945.9668c8",
+        "20ecb75b.a622b8",
+        "f4ac6977.3d92e8",
+        "5d0ffac5.1d4814"
       ]
     ]
   },
   {
-    "id": "813e415f.e07c",
+    "id": "26a7429c.87187e",
     "type": "comment",
     "name": "get spoke device,site,wanport info",
     "info": "",
     "comments": "",
-    "x": 1781.96875,
-    "y": 376.96874713897705,
-    "z": "33eaf422.44290c",
+    "x": 1791.97265625,
+    "y": 385.97265338897705,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "2db9ead7.c2b4b6",
+    "id": "be393db5.b2c4b",
     "type": "comment",
     "name": "Add routes only on activation of spoke Attach site",
     "info": "",
     "comments": "",
-    "x": 1418.4998245239258,
-    "y": 336.0000162124634,
-    "z": "33eaf422.44290c",
+    "x": 1452.5038223266602,
+    "y": 329.00396728515625,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "2dcb0ef7.828042",
+    "id": "3b335da8.075402",
     "type": "comment",
     "name": "Loop for all the hub allotted resources, get respective service data and get vnfs info",
     "info": "",
     "comments": "",
-    "x": 2198.5,
-    "y": 815.500057220459,
-    "z": "33eaf422.44290c",
+    "x": 2208.50390625,
+    "y": 824.503963470459,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "c6190b7b.0c6f78",
+    "id": "48cb425f.55b89c",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2954.4997177124023,
-    "y": 1796.9999589920044,
-    "z": "33eaf422.44290c",
+    "x": 2964.5036239624023,
+    "y": 1806.0038652420044,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "c9e1f848.8aa118",
-        "f616545c.e692d8",
-        "dcfe4dc9.3d83d",
-        "edcfc449.815b98"
+        "6735788d.2eda88",
+        "25ec0b7b.fede14"
       ]
     ]
   },
   {
-    "id": "82cf7632.68ed28",
+    "id": "42885256.de226c",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 3004.4997749328613,
-    "y": 1669.999843597412,
-    "z": "33eaf422.44290c",
-    "wires": [
-      [
-        "2060fdef.b0b7d2"
-      ]
-    ]
-  },
-  {
-    "id": "dcfe4dc9.3d83d",
-    "type": "switchNode",
-    "name": "switch hubRouteId",
-    "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'hubRouteId'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 3159.4996376037598,
-    "y": 1784.9998378753662,
-    "z": "33eaf422.44290c",
-    "wires": [
-      [
-        "4b1456a4.ed61c8"
-      ]
-    ]
-  },
-  {
-    "id": "4b1456a4.ed61c8",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 3322.5000228881836,
-    "y": 1784.000150680542,
-    "z": "33eaf422.44290c",
+    "x": 3014.5036811828613,
+    "y": 1679.003749847412,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "71be6aaa.93fe04"
+        "a3360f10.ddde5"
       ]
     ]
   },
   {
-    "id": "71be6aaa.93fe04",
-    "type": "set",
-    "name": "set prop.hubRouteId",
-    "xml": "<set>\n<parameter name='prop.hubRouteId' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\n",
-    "comments": "",
-    "x": 3482.500015258789,
-    "y": 1781.6005897521973,
-    "z": "33eaf422.44290c",
-    "wires": []
-  },
-  {
-    "id": "f616545c.e692d8",
+    "id": "6735788d.2eda88",
     "type": "switchNode",
     "name": "switch siteId",
     "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3141.4996185302734,
-    "y": 1749.9998207092285,
-    "z": "33eaf422.44290c",
+    "x": 3149.503547668457,
+    "y": 1817.0037078857422,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "3ef84487.f4b53c"
+        "b824c970.9e9c08"
       ]
     ]
   },
   {
-    "id": "3ef84487.f4b53c",
+    "id": "b824c970.9e9c08",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3292.499988555908,
-    "y": 1749.0000038146973,
-    "z": "33eaf422.44290c",
+    "x": 3300.503917694092,
+    "y": 1816.003890991211,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "97d8673.5139598"
+        "1ab1bd98.e41432"
       ]
     ]
   },
   {
-    "id": "97d8673.5139598",
+    "id": "1ab1bd98.e41432",
     "type": "set",
     "name": "set prop.hub.siteId",
     "xml": "<set>\n<parameter name='prop.hub.siteId' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\n",
     "comments": "",
-    "x": 3464.4999961853027,
-    "y": 1746.6005725860596,
-    "z": "33eaf422.44290c",
+    "x": 3472.5039253234863,
+    "y": 1813.6044597625732,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "927db1a6.0967b",
+    "id": "4ae4f054.fa7eb",
     "type": "switchNode",
     "name": "switch request-action",
     "xml": "<switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2619.9996948242188,
-    "y": 2002.0004615783691,
-    "z": "33eaf422.44290c",
+    "x": 2626.0036544799805,
+    "y": 2169.0043516159058,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "1a118523.efe04b",
-        "3baee628.49c52a"
+        "a20f0327.bdb75",
+        "464f548c.98a25c"
       ]
     ]
   },
   {
-    "id": "1a118523.efe04b",
+    "id": "a20f0327.bdb75",
     "type": "outcome",
     "name": "ActivateSDWANAttachmentInstance",
     "xml": "<outcome value='ActivateSDWANAttachmentInstance'>",
     "comments": "",
     "outputs": 1,
-    "x": 2886.0271530151367,
-    "y": 1971.0314779281616,
-    "z": "33eaf422.44290c",
+    "x": 2896.0310592651367,
+    "y": 1980.0353841781616,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "78365f62.f88ae"
+        "3d36ce09.d3a452"
       ]
     ]
   },
   {
-    "id": "d881cca6.da522",
+    "id": "cbad3e92.5f2c5",
     "type": "execute",
     "name": "execute RestApiCallNode underlay route",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-underlay.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/routing-protocol/static'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"underlayHubResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 3480.4997940063477,
-    "y": 1892.000228881836,
-    "z": "33eaf422.44290c",
+    "x": 3485.5039291381836,
+    "y": 1911.0042324066162,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "e1ec68ab.cefaf8",
-        "62d40a0d.8230b4"
+        "4b4ae946.a41e78",
+        "7402b676.36e648"
       ]
     ]
   },
   {
-    "id": "62d40a0d.8230b4",
+    "id": "7402b676.36e648",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3721.499927520752,
-    "y": 1879.0002145767212,
-    "z": "33eaf422.44290c",
+    "x": 3731.503833770752,
+    "y": 1888.0041208267212,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "e1ec68ab.cefaf8",
+    "id": "4b4ae946.a41e78",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3719.4996070861816,
-    "y": 1835.000205039978,
-    "z": "33eaf422.44290c",
+    "x": 3729.5035133361816,
+    "y": 1844.004111289978,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "93f8ad33.2f9f3"
+        "bae0bb4c.569758"
       ]
     ]
   },
   {
-    "id": "93f8ad33.2f9f3",
+    "id": "bae0bb4c.569758",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing sdwan hub route underlay rest api\" />\n",
     "comments": "",
-    "x": 3861.5002937316895,
-    "y": 1833.0002880096436,
-    "z": "33eaf422.44290c",
+    "x": 3871.5041999816895,
+    "y": 1842.0041942596436,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "2cb0acf9.dc8014",
+    "id": "c33f2b8.8f859d8",
     "type": "set",
     "name": "Add prop.hub.route",
-    "xml": "<set>\n<parameter name='prop.route.vpnId' value='`$prop.vpnId`' />\n<parameter name='prop.route.siteId' value='`$prop.hub.siteId`' />\n<parameter name='prop.route.deviceId' value='`$prop.hub.deviceId`' />\n<parameter name='prop.route.providerIpAddress' value='`$prop.hub.providerIpAddress`' />\n<parameter name='prop.route.wanportId' value='`$prop.spoke.wanportId`' />\n<parameter name='prop.route.ipAddress' value='`$prop.hub.ipAddress`' />\n\n\n",
+    "xml": "<set>\n<parameter name='prop.route.vpnId' value='`$prop.vpnId`' />\n<parameter name='prop.route.siteId' value='`$prop.hub.siteId`' />\n<parameter name='prop.route.deviceId' value='`$prop.hub.deviceId`' />\n<parameter name='prop.route.providerIpAddress' value='`$prop.hub.providerIpAddress`' />\n<parameter name='prop.route.wanportId' value='`$prop.spoke.wanPortId`' />\n<parameter name='prop.route.ipAddress' value='`$prop.hub.ipAddress`' />\n\n\n",
     "comments": "",
-    "x": 3411.8334980010986,
-    "y": 1855.6669273376465,
-    "z": "33eaf422.44290c",
+    "x": 3421.8374042510986,
+    "y": 1864.6708335876465,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "a3cb5620.778698",
+    "id": "d88550f2.429ff",
     "type": "execute",
     "name": "execute RestApiCallNode underlay route",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-underlay.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/routing-protocol/static'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"underlayspokeResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 3486.8334980010986,
-    "y": 1997.6673924922943,
-    "z": "33eaf422.44290c",
+    "x": 3490.837547302246,
+    "y": 2012.671347618103,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "da8f9dd5.0d7f2",
-        "54a9a5c9.a84bec"
+        "dc754a4a.149ee8",
+        "9860dbdc.fb5c78"
       ]
     ]
   },
   {
-    "id": "54a9a5c9.a84bec",
+    "id": "9860dbdc.fb5c78",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3732.833745956421,
-    "y": 1991.6674008369446,
-    "z": "33eaf422.44290c",
+    "x": 3742.837652206421,
+    "y": 2000.6713070869446,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "da8f9dd5.0d7f2",
+    "id": "dc754a4a.149ee8",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3730.8334255218506,
-    "y": 1947.6673913002014,
-    "z": "33eaf422.44290c",
+    "x": 3740.8373317718506,
+    "y": 1956.6712975502014,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "405d037f.766c0c"
+        "1b7c78ed.47ac47"
       ]
     ]
   },
   {
-    "id": "405d037f.766c0c",
+    "id": "1b7c78ed.47ac47",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing sdwan spoke route underlay rest api\" />\n",
     "comments": "",
-    "x": 3872.8341121673584,
-    "y": 1945.667474269867,
-    "z": "33eaf422.44290c",
+    "x": 3882.8380184173584,
+    "y": 1954.671380519867,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "cf64a525.59cc78",
+    "id": "abc725a.b5905d8",
     "type": "set",
     "name": "Add prop.spoke.route",
-    "xml": "<set>\n<parameter name='prop.route.vpnId' value='`$prop.vpnId`' />\n<parameter name='prop.route.siteId' value='`$prop.spoke.siteId`' />\n<parameter name='prop.route.deviceId' value='`$prop.spoke.deviceId`' />\n<parameter name='prop.route.providerIpAddress' value='`$prop.spoke.providerIpAddress`' />\n<parameter name='prop.route.wanportId' value='`$prop.hub.wanportId`' />\n<parameter name='prop.route.ipAddress' value='`$prop.spoke.ipAddress`' />\n\n\n",
+    "xml": "<set>\n<parameter name='prop.route.vpnId' value='`$prop.vpnId`' />\n<parameter name='prop.route.siteId' value='`$prop.spoke.siteId`' />\n<parameter name='prop.route.deviceId' value='`$prop.spoke.deviceId`' />\n<parameter name='prop.route.providerIpAddress' value='`$prop.spoke.providerIpAddress`' />\n<parameter name='prop.route.wanportId' value='`$prop.hub.wanPortId`' />                                                \n<parameter name='prop.route.ipAddress' value='`$prop.spoke.ipAddress`' />\n\n\n",
     "comments": "",
-    "x": 3421.6975135803223,
-    "y": 1966.364153623581,
-    "z": "33eaf422.44290c",
+    "x": 3431.7014198303223,
+    "y": 1975.368059873581,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "986185e9.8eec08",
+    "id": "4460a0d6.c4761",
     "type": "set",
-    "name": "set route Id's in site parameters",
-    "xml": "<set>\n<parameter name='mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='hubRouteId' />\n<parameter name='mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$underlayHubResp[0].id`' />\n<parameter name='mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1].name' value='spokeRouteId' />\n<parameter name='mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1].value' value='`$underlayspokeResp[0].id`' />\n<parameter name='mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 2`' />\n\n\n\n\n",
+    "name": "set  prop.underlay.routeIds",
+    "xml": "<set>\n<parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubSiteId' value='`$prop.hub.siteId`' />\n<!--parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].spokeSiteId' value='`$prop.spoke.siteId`' /-->\n<parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubRouteId' value='`$underlayHubResp.success[0].id`' />\n<parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].spokeRouteId' value='`$underlayspokeResp.success[0].id`' />\n\n\n\n",
     "comments": "",
-    "x": 3446.6644744873047,
-    "y": 2054.0307354927063,
-    "z": "33eaf422.44290c",
+    "x": 3442.6688232421875,
+    "y": 2060.034790992737,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "78365f62.f88ae",
+    "id": "3d36ce09.d3a452",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 3121.999671936035,
-    "y": 1968.4999113082886,
-    "z": "33eaf422.44290c",
+    "x": 3132.003578186035,
+    "y": 1977.5038175582886,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "2cb0acf9.dc8014",
-        "cf64a525.59cc78",
-        "986185e9.8eec08",
-        "a3cb5620.778698",
-        "d881cca6.da522"
+        "c33f2b8.8f859d8",
+        "abc725a.b5905d8",
+        "4460a0d6.c4761",
+        "d88550f2.429ff",
+        "cbad3e92.5f2c5",
+        "f03bf85a.59ad68",
+        "6591e05b.5ae5",
+        "ab6e34c5.6a48d8"
       ]
     ]
   },
   {
-    "id": "105d9963.f193b7",
+    "id": "50a88f49.37ad4",
     "type": "block",
     "name": "block atomic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 3142.999668121338,
-    "y": 2046.5001020431519,
-    "z": "33eaf422.44290c",
+    "x": 3161.0035285949707,
+    "y": 2434.504150390625,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "f88633ef.4a895",
-        "7ec8de50.abc7a",
-        "e429ce4e.ff4d3",
-        "9c47cd10.cba71"
+        "ae46a29e.f97e3",
+        "162bc63c.6a40ba",
+        "32021f5a.688fc",
+        "6c422db5.5ce744",
+        "74f4468a.192018"
       ]
     ]
   },
   {
-    "id": "3baee628.49c52a",
+    "id": "464f548c.98a25c",
     "type": "outcome",
     "name": "DeactivateSDWANAttachmentInstance",
     "xml": "<outcome value='DeactivateSDWANAttachmentInstance'>",
     "comments": "",
     "outputs": 1,
-    "x": 2891.499725341797,
-    "y": 2040.4999132156372,
-    "z": "33eaf422.44290c",
+    "x": 2909.5035858154297,
+    "y": 2428.5039615631104,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "105d9963.f193b7"
+        "50a88f49.37ad4"
       ]
     ]
   },
   {
-    "id": "9c607856.359088",
+    "id": "6591e05b.5ae5",
     "type": "set",
     "name": "Add sites to list and update length",
-    "xml": "<set>\n<parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].hubSiteName' value='`$prop.hub.siteName`' />\n<parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].hubSiteId' value='`$prop.hub.siteId`' />\n<parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].spokeSiteName' value='`$prop.spoke.siteName`' />\n<parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].spokeSiteId' value='`$prop.spoke.siteId`' />\n<parameter name='prop.provision.siteIds_length' value='`$prop.provision.siteIds_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n",
+    "xml": "<set>\n<parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].hubSiteName' value='`$prop.hub.siteName`' />\n<parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].hubSiteId' value='`$prop.hub.siteId`' />\n<parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].spokeSiteName' value='`$prop.spoke.siteName`' />\n<parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].spokeSiteId' value='`$prop.spoke.siteId`' />\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
     "comments": "",
-    "x": 2636.030891418457,
-    "y": 2295.031482696533,
-    "z": "33eaf422.44290c",
+    "x": 3447.035110473633,
+    "y": 2185.035671234131,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "5323bc16.bbf554",
+    "id": "d686d76a.66e9d8",
     "type": "comment",
     "name": "save hubsiteIds and spoke siteIds for provision",
     "info": "",
     "comments": "",
-    "x": 2668.031265258789,
-    "y": 2251.0313568115234,
-    "z": "33eaf422.44290c",
+    "x": 3479.035484313965,
+    "y": 2141.035545349121,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "b2aac804.e6f348",
+    "id": "8488fc33.1f86c",
     "type": "switchNode",
     "name": "switch name",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'name'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3436.031005859375,
-    "y": 475.03125,
-    "z": "33eaf422.44290c",
+    "x": 3446.034912109375,
+    "y": 484.03515625,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "2e9ab920.c2df16"
+        "a468bfef.f0d69"
       ]
     ]
   },
   {
-    "id": "2e9ab920.c2df16",
+    "id": "a468bfef.f0d69",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3636.0307807922363,
-    "y": 475.0314121246338,
-    "z": "33eaf422.44290c",
+    "x": 3646.0346870422363,
+    "y": 484.0353183746338,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "3bc80b86.299434"
+        "861bdc8.697e72"
       ]
     ]
   },
   {
-    "id": "3bc80b86.299434",
+    "id": "861bdc8.697e72",
     "type": "set",
     "name": "set prop.spoke.siteName",
     "xml": "<set>\n<parameter name='prop.spoke.siteName' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />\n",
     "comments": "",
-    "x": 3824.0315856933594,
-    "y": 473.63202571868896,
-    "z": "33eaf422.44290c",
+    "x": 3834.0354919433594,
+    "y": 482.63593196868896,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "edcfc449.815b98",
+    "id": "25ec0b7b.fede14",
     "type": "switchNode",
     "name": "switch name",
     "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'name'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 3140.031005859375,
-    "y": 1716.5311279296875,
-    "z": "33eaf422.44290c",
+    "x": 3148.0349349975586,
+    "y": 1783.5350151062012,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "47785d0f.321164"
+        "38461c3f.4e0404"
       ]
     ]
   },
   {
-    "id": "47785d0f.321164",
+    "id": "38461c3f.4e0404",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 3291.0313758850098,
-    "y": 1715.5313110351562,
-    "z": "33eaf422.44290c",
+    "x": 3299.0353050231934,
+    "y": 1782.53519821167,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "36650635.dab3aa"
+        "1ccd9e7.6905962"
       ]
     ]
   },
   {
-    "id": "36650635.dab3aa",
+    "id": "1ccd9e7.6905962",
     "type": "set",
     "name": "set prop.hub.siteName",
     "xml": "<set>\n<parameter name='prop.hub.siteName' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\n",
     "comments": "",
-    "x": 3463.0313835144043,
-    "y": 1713.1318798065186,
-    "z": "33eaf422.44290c",
+    "x": 3471.035312652588,
+    "y": 1780.1357669830322,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "70ceaafc.e0d3f4",
+    "id": "18ea4160.5b97af",
     "type": "set",
     "name": "set prop.provision.siteIds_length=0",
     "xml": "<set>\n<parameter name='prop.provision.siteIds_length' value='0' />\n\n\n\n",
     "comments": "",
-    "x": 461.03126525878906,
-    "y": 361.0312547683716,
-    "z": "33eaf422.44290c",
+    "x": 471.03517150878906,
+    "y": 370.0351610183716,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "2ebcd1d4.0c3f8e",
+    "id": "2ccd4dc3.00e152",
     "type": "execute",
     "name": "execute RestApiCallNode site provision urls",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-site-provision.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/sites/provision-urls'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"provisionUrlRsp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 813.0312957763672,
-    "y": 793.0314712524414,
-    "z": "33eaf422.44290c",
+    "x": 823.0352020263672,
+    "y": 802.0353775024414,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "ad0b5373.47c4b",
-        "2423f336.bee55c"
+        "bbd8ad8.5648f5",
+        "8ff338f4.67b7f8"
       ]
     ]
   },
   {
-    "id": "2423f336.bee55c",
+    "id": "8ff338f4.67b7f8",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1077.0315551757812,
-    "y": 815.0315160751343,
-    "z": "33eaf422.44290c",
+    "x": 1087.0354614257812,
+    "y": 824.0354223251343,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "ad0b5373.47c4b",
+    "id": "bbd8ad8.5648f5",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1078.0313415527344,
-    "y": 772.0314540863037,
-    "z": "33eaf422.44290c",
+    "x": 1088.0352478027344,
+    "y": 781.0353603363037,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "21440771.f9b178"
+        "bb20e181.d535d"
       ]
     ]
   },
   {
-    "id": "21440771.f9b178",
+    "id": "bb20e181.d535d",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing provision url rest api\" />\n",
     "comments": "",
-    "x": 1257.0318984985352,
-    "y": 770.0315053462982,
-    "z": "33eaf422.44290c",
+    "x": 1267.0358047485352,
+    "y": 779.0354115962982,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "c880f4e9.6d6098",
+    "id": "84666856.592818",
     "type": "for",
     "name": "for providx..prop.provision.siteIds[]",
     "xml": "<for index='providx' start='0' end='`$prop.provision.siteIds_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 454.0312957763672,
-    "y": 565.0312948226929,
-    "z": "33eaf422.44290c",
+    "x": 464.0352020263672,
+    "y": 574.0352010726929,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "6ab9e97f.2340e8"
+        "e0c31833.56f938"
       ]
     ]
   },
   {
-    "id": "6ab9e97f.2340e8",
+    "id": "e0c31833.56f938",
     "type": "block",
     "name": "block atmoic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 478.0313377380371,
-    "y": 775.031268119812,
-    "z": "33eaf422.44290c",
+    "x": 488.0352439880371,
+    "y": 784.035174369812,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "5392610f.9b85f",
-        "2ebcd1d4.0c3f8e",
-        "e83cbadb.6b3148"
+        "14ab7296.d70c4d",
+        "2ccd4dc3.00e152",
+        "28a5422.99608be"
       ]
     ]
   },
   {
-    "id": "5392610f.9b85f",
+    "id": "14ab7296.d70c4d",
     "type": "set",
     "name": "set prop.spoke.hubSiteId, spokeSiteId",
     "xml": "<set>\n<parameter name='prop.provision.hubSitename' value='`$prop.provision.siteIds[$providx].hubSiteName`' />\n<parameter name='prop.provision.spokeSitename' value='`$prop.provision.siteIds[$providx].spokeSiteName`' />\n<parameter name='prop.provision.hubspokesite[0]' value='`$prop.provision.siteIds[$providx].hubSiteId`' />\n<parameter name='prop.provision.hubspokesite[1]' value='`$prop.provision.siteIds[$providx].spokeSiteId`' />\n<parameter name='prop.provision.hubspokesite_length' value='2' />\n",
     "comments": "",
-    "x": 789.0339965820312,
-    "y": 651.6329832077026,
-    "z": "33eaf422.44290c",
+    "x": 799.0379028320312,
+    "y": 660.6368894577026,
+    "z": "816d5e60.eba45",
     "wires": []
   },
   {
-    "id": "e83cbadb.6b3148",
+    "id": "28a5422.99608be",
     "type": "record",
     "name": "record provision url response to the file",
-    "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"`'/opt/opendaylight/current/data/log/' + 'HUB-' + $prop.provision.hubSitename + '-SPOKE-' + $prop.provision.spokeSitename + '-provisionUrl'`\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value='`$provisionUrlRsp`'/>\n\n",
+    "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"`'/opt/opendaylight/current/data/log/' + 'HUB-' + $prop.provision.hubSitename + '-SPOKE-' + $prop.provision.spokeSitename + '-provisionUrl'`\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value='`$provisionUrlRsp.success[0].url`'/>\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 785.0313720703125,
-    "y": 887.0313358306885,
-    "z": "33eaf422.44290c",
+    "x": 795.0352783203125,
+    "y": 896.0352420806885,
+    "z": "816d5e60.eba45",
     "wires": [
       []
     ]
   },
   {
-    "id": "1e03ba47.0fb3f6",
+    "id": "6e2c1efa.030fd",
     "type": "block",
     "name": "block atmoic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2527.031482696533,
-    "y": 1042.0313262939453,
-    "z": "33eaf422.44290c",
+    "x": 2537.035388946533,
+    "y": 1051.0352325439453,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "a525e63a.cc2b38"
+        "d87f1462.94a148"
       ]
     ]
   },
   {
-    "id": "84a7b7df.1615b8",
+    "id": "e621a712.c02488",
     "type": "block",
     "name": "block atmoic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2007.0311584472656,
-    "y": 605.0313091278076,
-    "z": "33eaf422.44290c",
+    "x": 2017.0350646972656,
+    "y": 614.0352153778076,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "c8ac708.b0a709",
-        "b9ac21ad.456c9"
+        "4d2b2a60.5a15c4"
       ]
     ]
   },
   {
-    "id": "8e2c0789.42db78",
+    "id": "f3cef2f6.2a146",
     "type": "block",
     "name": "block atmoic",
     "xml": "<block atomic=\"true\">\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2014.0312194824219,
-    "y": 680.0311765670776,
-    "z": "33eaf422.44290c",
+    "x": 1961.0352325439453,
+    "y": 705.0351238250732,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "482a4c29.31cfa4",
+        "3b80b5a9.9770ba"
+      ]
+    ]
+  },
+  {
+    "id": "f03bf85a.59ad68",
+    "type": "set",
+    "name": "set prop.underlay.routeIds_length++",
+    "xml": "<set>\n<parameter name='prop.underlay.routeIds_length' value='`$prop.underlay.routeIds_length + 1`' />\n\n\n\n\n",
+    "comments": "",
+    "x": 3472.004440307617,
+    "y": 2096.2538681030273,
+    "z": "816d5e60.eba45",
+    "wires": []
+  },
+  {
+    "id": "ab6e34c5.6a48d8",
+    "type": "set",
+    "name": "Update prop.provision.siteIds_length",
+    "xml": "<set>\n<parameter name='prop.provision.siteIds_length' value='`$prop.provision.siteIds_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n",
+    "comments": "",
+    "x": 3455.504180908203,
+    "y": 2220.253963470459,
+    "z": "816d5e60.eba45",
+    "wires": []
+  },
+  {
+    "id": "3857554a.ced0aa",
+    "type": "set",
+    "name": "set prop.spoke.siteidx",
+    "xml": "<set>\n<parameter name='prop.spoke.siteidx' value='`$i`' />\n\n",
+    "comments": "",
+    "x": 2905.7540969848633,
+    "y": 450.0039348602295,
+    "z": "816d5e60.eba45",
+    "wires": []
+  },
+  {
+    "id": "2ce54718.3d9808",
+    "type": "set",
+    "name": "set  underlay route ids to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value=\"underlayRouteIds\" />\n<parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$tmp.routeString`' />\n\n\n",
+    "comments": "",
+    "x": 1928.0045471191406,
+    "y": 1937.0043048858643,
+    "z": "816d5e60.eba45",
+    "wires": []
+  },
+  {
+    "id": "f80aa612.1d1cd8",
+    "type": "set",
+    "name": "set prop.underlay.routeIds_length=0",
+    "xml": "<set>\n<parameter name='prop.underlay.routeIds_length' value='0' />\n\n\n\n",
+    "comments": "",
+    "x": 476.0000305175781,
+    "y": 322.0000190734863,
+    "z": "816d5e60.eba45",
+    "wires": []
+  },
+  {
+    "id": "74f4468a.192018",
+    "type": "for",
+    "name": "for loop uidx - Get route Id from prop.underlay.routeIds",
+    "xml": "<for index=\"uidx\" start=\"0\" end=\"`$prop.underlay.routeIds_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3516.6667861938477,
+    "y": 2307.3333892822266,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "2f560e9d.06e792"
+      ]
+    ]
+  },
+  {
+    "id": "2f560e9d.06e792",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3808.333480834961,
+    "y": 2307.3333892822266,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "dbb8a9cb.01e2a8"
+      ]
+    ]
+  },
+  {
+    "id": "dbb8a9cb.01e2a8",
+    "type": "switchNode",
+    "name": "switch prop.hub.siteId",
+    "xml": "<switch test=\"`$prop.underlay.routeIds[$uidx].hubSiteId == $prop.hub.siteId`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3997.33349609375,
+    "y": 2307.3335523605347,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "4aa46b8.0419394"
+      ]
+    ]
+  },
+  {
+    "id": "4aa46b8.0419394",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4168.332931518555,
+    "y": 2307.3335514068604,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "74eb4369.b3544c"
+      ]
+    ]
+  },
+  {
+    "id": "74eb4369.b3544c",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 4322.332931518555,
+    "y": 2311.333559036255,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "86900a6.74da6f8"
+      ]
+    ]
+  },
+  {
+    "id": "86900a6.74da6f8",
+    "type": "set",
+    "name": "set prop.hubRouteId prop.spokeRouteId",
+    "xml": "<set>\n<parameter name='prop.hubRouteId' value='`$prop.underlay.routeIds[$uidx].hubRouteId`' />\n<parameter name='prop.spokeRouteId' value='`$prop.underlay.routeIds[$uidx].spokeRouteId`' />\n",
+    "comments": "",
+    "x": 4408.332939147949,
+    "y": 2383.333562850952,
+    "z": "816d5e60.eba45",
+    "wires": []
+  },
+  {
+    "id": "4d409006.b4615",
+    "type": "switchNode",
+    "name": "switch underlayRouteIds",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'underlayRouteIds'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3451,
+    "y": 588.6666259765625,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "c14c6f3d.397e6"
+      ]
+    ]
+  },
+  {
+    "id": "c14c6f3d.397e6",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3650.9994773864746,
+    "y": 576.6667404174805,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "b91a3e00.56049"
+      ]
+    ]
+  },
+  {
+    "id": "e6b57715.d86fd8",
+    "type": "set",
+    "name": "set prop.underlay.routeIds",
+    "xml": "<set>\n<parameter name='prop.underlay.routeIdsString' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />\n",
+    "comments": "",
+    "x": 4022.000877380371,
+    "y": 576.2674503326416,
+    "z": "816d5e60.eba45",
+    "wires": []
+  },
+  {
+    "id": "7fba3a52.cfca64",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1138.0002899169922,
+    "y": 2028.333535194397,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "6d3232d8.e0205c",
+        "394f9ac2.7c54d6"
+      ]
+    ]
+  },
+  {
+    "id": "6d3232d8.e0205c",
+    "type": "outcome",
+    "name": "ActivateSDWANAttachmentInstance",
+    "xml": "<outcome value='ActivateSDWANAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1402.0003356933594,
+    "y": 1983.333532333374,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "cc4350b5.e04f4"
+      ]
+    ]
+  },
+  {
+    "id": "cc4350b5.e04f4",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1643.9728469848633,
+    "y": 1979.8022832870483,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "2ce54718.3d9808",
+        "c043509c.599d6",
+        "af0af852.8614c8",
+        "879d0a95.c86bf8"
+      ]
+    ]
+  },
+  {
+    "id": "a489ec70.35a57",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1647.9728355407715,
+    "y": 2063.8024520874023,
+    "z": "816d5e60.eba45",
     "wires": [
       [
-        "5a69b1be.1055d",
-        "e66f705e.b1887"
+        "f104a03c.3d9ea"
       ]
     ]
+  },
+  {
+    "id": "394f9ac2.7c54d6",
+    "type": "outcome",
+    "name": "DeactivateSDWANAttachmentInstance",
+    "xml": "<outcome value='DeactivateSDWANAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1399.4729766845703,
+    "y": 2065.8022890090942,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "a489ec70.35a57"
+      ]
+    ]
+  },
+  {
+    "id": "f104a03c.3d9ea",
+    "type": "set",
+    "name": "set input parameter length -1",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length - 1`' />\n\n\n\n\n",
+    "comments": "",
+    "x": 1876.6665344238281,
+    "y": 2062.33353805542,
+    "z": "816d5e60.eba45",
+    "wires": []
+  },
+  {
+    "id": "f8e23d7f.b3d02",
+    "type": "comment",
+    "name": "Get route routes IDs",
+    "info": "",
+    "comments": "",
+    "x": 3416.333251953125,
+    "y": 2268.6666259765625,
+    "z": "816d5e60.eba45",
+    "wires": []
+  },
+  {
+    "id": "c043509c.599d6",
+    "type": "set",
+    "name": "set  underlay route ids to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\n\n\n\n\n",
+    "comments": "",
+    "x": 1917.333480834961,
+    "y": 2011.666579246521,
+    "z": "816d5e60.eba45",
+    "wires": []
+  },
+  {
+    "id": "af0af852.8614c8",
+    "type": "for",
+    "name": "for jidx paramidx - Get topology from servicedata",
+    "xml": "<for index=\"jidx\" start=\"0\" end=\"`$prop.underlay.routeIds_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2006.3334045410156,
+    "y": 1558.333351135254,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "96c0f1e3.46564"
+      ]
+    ]
+  },
+  {
+    "id": "71e83fcd.3926a",
+    "type": "execute",
+    "name": "execute concat",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\n    <parameter name=\"source\" value='`$tmp.concat`'/>\n    <parameter name=\"outputPath\" value=\"tmp.concat1\"/>\n    <parameter name=\"target\" value='`$prop.underlay.routeIds[$jidx].hubRouteId`'/>\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2190.333740234375,
+    "y": 1692.0005540847778,
+    "z": "816d5e60.eba45",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "5b1d10b7.e85ce",
+    "type": "execute",
+    "name": "execute concat",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\n    <parameter name=\"source\" value='`$prop.underlay.routeIds[$jidx].hubSiteId`'/>\n    <parameter name=\"outputPath\" value=\"tmp.concat\"/>\n    <parameter name=\"target\" value=\",\"/>\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2200.3337326049805,
+    "y": 1644.6668920516968,
+    "z": "816d5e60.eba45",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "96c0f1e3.46564",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1913.333423614502,
+    "y": 1743.6666812896729,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "5b1d10b7.e85ce",
+        "71e83fcd.3926a",
+        "4f918e1e.65c27",
+        "743189f.b107678",
+        "a740f981.130cb8",
+        "7f673568.55d36c"
+      ]
+    ]
+  },
+  {
+    "id": "4f918e1e.65c27",
+    "type": "execute",
+    "name": "execute concat",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\n    <parameter name=\"source\" value='`$tmp.concat1`'/>\n    <parameter name=\"outputPath\" value=\"tmp.concat2\"/>\n    <parameter name=\"target\" value=\",\"/>\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2197.3334426879883,
+    "y": 1731.6667852401733,
+    "z": "816d5e60.eba45",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "743189f.b107678",
+    "type": "execute",
+    "name": "execute concat",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\n    <parameter name=\"source\" value='`$tmp.concat2`'/>\n    <parameter name=\"outputPath\" value=\"tmp.concat3\"/>\n    <parameter name=\"target\" value='`$prop.underlay.routeIds[$jidx].spokeRouteId`'/>\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2197.3334426879883,
+    "y": 1767.6667852401733,
+    "z": "816d5e60.eba45",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a740f981.130cb8",
+    "type": "execute",
+    "name": "execute concat",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\n    <parameter name=\"source\" value='`$tmp.concat3`'/>\n    <parameter name=\"outputPath\" value=\"tmp.concat4\"/>\n    <parameter name=\"target\" value=\" | \"/>\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2190.3334426879883,
+    "y": 1808.0001592636108,
+    "z": "816d5e60.eba45",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "7f673568.55d36c",
+    "type": "execute",
+    "name": "execute concat",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\n    <parameter name=\"source\" value='`$tmp.routeString`'/>\n    <parameter name=\"outputPath\" value=\"tmp.routeString\"/>\n    <parameter name=\"target\" value='`$tmp.concat4`'/>\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2193.333381652832,
+    "y": 1862.6666984558105,
+    "z": "816d5e60.eba45",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "879d0a95.c86bf8",
+    "type": "set",
+    "name": "Set tmp.routeString",
+    "xml": "<set>\n<parameter name='tmp.routeString' value=\"\" />\n\n",
+    "comments": "",
+    "x": 1910.3334045410156,
+    "y": 1499.6666822433472,
+    "z": "816d5e60.eba45",
+    "wires": []
+  },
+  {
+    "id": "b91a3e00.56049",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3799.0002250671387,
+    "y": 623.0000381469727,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "e6b57715.d86fd8",
+        "4cfad752.b82ab8"
+      ]
+    ]
+  },
+  {
+    "id": "4cfad752.b82ab8",
+    "type": "execute",
+    "name": "execute split |",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.underlay.routeIdsString`'/>\n<parameter name=\"regex\" value=\" | \"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.underlay.routeIdsValue\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3977.0002365112305,
+    "y": 643.0000381469727,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "18dab504.682e9b",
+        "e6713c9a.ccf4e"
+      ]
+    ]
+  },
+  {
+    "id": "e6713c9a.ccf4e",
+    "type": "failure",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4154.0002517700195,
+    "y": 624.0000371932983,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "f6d503b7.ca422"
+      ]
+    ]
+  },
+  {
+    "id": "18dab504.682e9b",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4143.0002517700195,
+    "y": 672.000039100647,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "24d2d870.cadd68"
+      ]
+    ]
+  },
+  {
+    "id": "a99b2248.b5ad4",
+    "type": "set",
+    "name": "set ipAddress prefixLength",
+    "xml": "<set>\n<parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubSiteId' value='`$prop.underlay.routeIdsValues[0]`' />\n<parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubRouteId' value='`$prop.underlay.routeIdsValues[1]`' />\n<parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].spokeRouteId' value='`$prop.underlay.routeIdsValues[2]`' />",
+    "comments": "",
+    "x": 5340.001117706299,
+    "y": 558.0002794265747,
+    "z": "816d5e60.eba45",
+    "wires": []
+  },
+  {
+    "id": "24d2d870.cadd68",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 4273.000255584717,
+    "y": 672.000039100647,
+    "z": "816d5e60.eba45",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "f6d503b7.ca422",
+    "type": "for",
+    "name": "for loop ridx ",
+    "xml": "<for index=\"ridx\" start=\"0\" end=\"`$prop.underlay.routeIdsValue_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4299.999938964844,
+    "y": 622.0000371932983,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "d316c9fd.2bfac8"
+      ]
+    ]
+  },
+  {
+    "id": "d316c9fd.2bfac8",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 4478.332950592041,
+    "y": 619.0000381469727,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "cc212d5d.4ecc7"
+      ]
+    ]
+  },
+  {
+    "id": "cc212d5d.4ecc7",
+    "type": "execute",
+    "name": "execute split ,",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.underlay.routeIdsValue[$ridx]`'/>\n<parameter name=\"regex\" value=\",\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.underlay.routeIdsValues\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4653.332962036133,
+    "y": 618.000036239624,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "a41a70c9.992e7",
+        "4e196c9a.1ec4e4"
+      ]
+    ]
+  },
+  {
+    "id": "a41a70c9.992e7",
+    "type": "failure",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4810.33296585083,
+    "y": 595.0000438690186,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "29342783.705ee8"
+      ]
+    ]
+  },
+  {
+    "id": "4e196c9a.1ec4e4",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4799.33296585083,
+    "y": 643.0000457763672,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "31dadcd0.9c88f4"
+      ]
+    ]
+  },
+  {
+    "id": "31dadcd0.9c88f4",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 4929.332969665527,
+    "y": 643.0000457763672,
+    "z": "816d5e60.eba45",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "c309d201.f689a",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 5132.665496826172,
+    "y": 574.0001978874207,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "a99b2248.b5ad4",
+        "d11539fc.77a698"
+      ]
+    ]
+  },
+  {
+    "id": "d11539fc.77a698",
+    "type": "set",
+    "name": "set ipAddress prefixLength",
+    "xml": "<set>\n<parameter name='prop.underlay.routeIds_length' value='`$prop.underlay.routeIds_length + 1`' />\n",
+    "comments": "",
+    "x": 5332.333156585693,
+    "y": 600.000075340271,
+    "z": "816d5e60.eba45",
+    "wires": []
+  },
+  {
+    "id": "29342783.705ee8",
+    "type": "switchNode",
+    "name": "switch prop.underlay.routeIdsValues_length",
+    "xml": "<switch test='`$prop.underlay.routeIdsValues_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 5008.667121887207,
+    "y": 476.0000686645508,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "4afb066.ff7c6f8",
+        "6e26a8d2.50c7d8"
+      ]
+    ]
+  },
+  {
+    "id": "4afb066.ff7c6f8",
+    "type": "outcome",
+    "name": "3",
+    "xml": "<outcome value='3'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 5243.636054992676,
+    "y": 512.9687957763672,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "c309d201.f689a"
+      ]
+    ]
+  },
+  {
+    "id": "6e26a8d2.50c7d8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 5260.666980743408,
+    "y": 395.00000953674316,
+    "z": "816d5e60.eba45",
+    "wires": [
+      [
+        "cde0413a.7980f"
+      ]
+    ]
+  },
+  {
+    "id": "cde0413a.7980f",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 5421.66650390625,
+    "y": 435,
+    "z": "816d5e60.eba45",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "61955a75.34d004",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"Error: SOTN resource not found\" />\n    \n",
+    "comments": "",
+    "x": 2901.006446838379,
+    "y": 1008.3067564964294,
+    "z": "816d5e60.eba45",
+    "wires": []
+  },
+  {
+    "id": "5e3a3525.ed601c",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2887.0059547424316,
+    "y": 956.9731774330139,
+    "z": "816d5e60.eba45",
+    "wires": [
+      []
+    ]
   }
 ]
index b750acf..4f087f5 100644 (file)
@@ -1,20 +1,20 @@
 [
   {
-    "id": "c9dff872.319c28",
+    "id": "365b721f.7a253e",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 182.03125,
-    "y": 193.0103907585144,
-    "z": "8546294e.bbf628",
+    "x": 142.00390625,
+    "y": 164.01038789749146,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "f599176a.0162d8"
+        "4883cd2c.e8add4"
       ]
     ]
   },
   {
-    "id": "f599176a.0162d8",
+    "id": "4883cd2c.e8add4",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 257.31695556640625,
-    "y": 233.24850225448608,
-    "z": "8546294e.bbf628",
+    "x": 217.28961181640625,
+    "y": 204.24849939346313,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "6ef8717d.0a89a"
+        "3fd0f9a0.bfb166"
       ]
     ]
   },
   {
-    "id": "6ef8717d.0a89a",
+    "id": "3fd0f9a0.bfb166",
     "type": "method",
     "name": "method site-vnf-topology-operation-activate",
     "xml": "<method rpc='site-vnf-topology-operation-activate' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 278.4598693847656,
-    "y": 323.0103907585144,
-    "z": "8546294e.bbf628",
+    "x": 238.43252563476562,
+    "y": 294.01038789749146,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "e4c81f6e.49ef7"
+        "a41ebaac.ea0658"
       ]
     ]
   },
   {
-    "id": "e4c81f6e.49ef7",
+    "id": "a41ebaac.ea0658",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 266.69798278808594,
-    "y": 512.6771693229675,
-    "z": "8546294e.bbf628",
+    "x": 226.67063903808594,
+    "y": 483.6771664619446,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "cd35c02d.85245",
-        "cbc96af.e7a6b98",
-        "f380f867.7d6998",
-        "be9b1521.3244d8",
-        "8699a911.00b498",
-        "640f5d20.cfa064",
-        "e28c053e.d4c358",
-        "c2b356f7.cb66f8",
-        "cfdaefb3.97c88",
-        "de98d30f.d2fa5"
+        "d76422f.52b80e",
+        "221a8fd1.b8b2f",
+        "faa004c7.5a25c8",
+        "5f14f4d2.549ccc",
+        "3c340ff6.924a4",
+        "3edd9e9f.d604f2",
+        "dd9550a6.ba9af",
+        "ead8f54d.0eecc8",
+        "90854244.d2678",
+        "78b0ee0f.0865f"
       ]
     ]
   },
   {
-    "id": "cd35c02d.85245",
+    "id": "d76422f.52b80e",
     "type": "switchNode",
     "name": "switch service-data.vnfs.vnf_length",
     "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 706.0209121704102,
-    "y": 141.99998569488525,
-    "z": "8546294e.bbf628",
+    "x": 665.9935684204102,
+    "y": 112.9999828338623,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "e72f24a3.7e9cf8",
-        "56a6c4e8.1f860c",
-        "7ce3d5f2.723dec"
+        "3851ce61.8f91c2",
+        "a2f9a6ea.ae2718",
+        "c137a07.e2f1f6"
       ]
     ]
   },
   {
-    "id": "e72f24a3.7e9cf8",
+    "id": "3851ce61.8f91c2",
     "type": "other",
     "name": "Null",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 937.0208892822266,
-    "y": 144.0000491142273,
-    "z": "8546294e.bbf628",
+    "x": 896.9935455322266,
+    "y": 115.00004625320435,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "edb6abe2.7bba78"
+        "4f151038.9977"
       ]
     ]
   },
   {
-    "id": "edb6abe2.7bba78",
+    "id": "4f151038.9977",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 1094.7984046936035,
-    "y": 124.88899755477905,
-    "z": "8546294e.bbf628",
+    "x": 1054.7710609436035,
+    "y": 95.8889946937561,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "56a6c4e8.1f860c",
+    "id": "a2f9a6ea.ae2718",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 929.0213165283203,
-    "y": 179.00007104873657,
-    "z": "8546294e.bbf628",
+    "x": 888.9939727783203,
+    "y": 150.00006818771362,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "28abc688.86ccda"
+        "f0eea43d.80c008"
       ]
     ]
   },
   {
-    "id": "28abc688.86ccda",
+    "id": "f0eea43d.80c008",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1095.290786743164,
-    "y": 170.55460453033447,
-    "z": "8546294e.bbf628",
+    "x": 1055.263442993164,
+    "y": 141.55460166931152,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "13d47e80.4e6022",
-        "5d523d19.4e3534",
-        "63f3d384.29d3ac"
+        "5514a22c.cabcac",
+        "c241356.b2ab4c8",
+        "18332af4.bcb575"
       ]
     ]
   },
   {
-    "id": "13d47e80.4e6022",
+    "id": "5514a22c.cabcac",
     "type": "for",
     "name": "for vidx..service-data.vnfs.vnf_length[]",
     "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1365.3068771362305,
-    "y": 114.42860555648804,
-    "z": "8546294e.bbf628",
+    "x": 1306.2795715332031,
+    "y": 86.42860507965088,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "9845da61.98a1c8"
+        "5665ac79.9c7064"
       ]
     ]
   },
   {
-    "id": "5d523d19.4e3534",
+    "id": "c241356.b2ab4c8",
     "type": "switchNode",
     "name": "switch tmp.vidx ",
     "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1301.6082305908203,
-    "y": 165.41179418563843,
-    "z": "8546294e.bbf628",
+    "x": 1261.5808868408203,
+    "y": 136.41179132461548,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "26cec9c2.9bd426"
+        "19a218fc.ad6fe7"
       ]
     ]
   },
   {
-    "id": "26cec9c2.9bd426",
+    "id": "19a218fc.ad6fe7",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1453.0370330810547,
-    "y": 165.98322439193726,
-    "z": "8546294e.bbf628",
+    "x": 1413.0096893310547,
+    "y": 136.9832215309143,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "a0a7bb4c.608bd8"
+        "87ce1b6f.ea04b8"
       ]
     ]
   },
   {
-    "id": "90e8fa4e.9e0b88",
+    "id": "3d3bb0a2.e8367",
     "type": "switchNode",
     "name": "switch vnfid found",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1762.7356185913086,
-    "y": 74.67872762680054,
-    "z": "8546294e.bbf628",
+    "x": 1722.7082748413086,
+    "y": 45.67872476577759,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "b847bf38.a4e72"
+        "90ad7f4f.37ad5"
       ]
     ]
   },
   {
-    "id": "a0a7bb4c.608bd8",
+    "id": "87ce1b6f.ea04b8",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 1591.465431213379,
-    "y": 167.12604665756226,
-    "z": "8546294e.bbf628",
+    "x": 1551.438087463379,
+    "y": 138.1260437965393,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "b847bf38.a4e72",
+    "id": "90ad7f4f.37ad5",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1936.6880989074707,
-    "y": 74.57144784927368,
-    "z": "8546294e.bbf628",
+    "x": 1896.6607551574707,
+    "y": 45.57144498825073,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "fe37a50e.9b06e8"
+        "edd58360.fef7"
       ]
     ]
   },
   {
-    "id": "7ce3d5f2.723dec",
+    "id": "c137a07.e2f1f6",
     "type": "outcome",
     "name": "0",
     "xml": "<outcome value='0'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 934.9897003173828,
-    "y": 106.96873807907104,
-    "z": "8546294e.bbf628",
+    "x": 894.9623565673828,
+    "y": 77.9687352180481,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "edb6abe2.7bba78"
+        "4f151038.9977"
       ]
     ]
   },
   {
-    "id": "be9b1521.3244d8",
+    "id": "5f14f4d2.549ccc",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 650.3649482727051,
-    "y": 695.344174861908,
-    "z": "8546294e.bbf628",
+    "x": 610.3376045227051,
+    "y": 666.344172000885,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "c2b356f7.cb66f8",
+    "id": "ead8f54d.0eecc8",
     "type": "set",
     "name": "set vnf-level-oper-status to Active",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
     "comments": "",
-    "x": 712.8451385498047,
-    "y": 529.6816143989563,
-    "z": "8546294e.bbf628",
+    "x": 672.8177947998047,
+    "y": 500.68161153793335,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "e28c053e.d4c358",
+    "id": "dd9550a6.ba9af",
     "type": "set",
     "name": "set vnf-index and vnf-object-path",
-    "xml": "<set>\n<parameter name='vnfId' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $service-data.vnfs.vnf[$tmp.vidx].vnf-id  + '/vnf-data/'` \" />",
+    "xml": "<set>\n<parameter name='vnfId' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",
     "comments": "",
-    "x": 712.53173828125,
-    "y": 486.3441491127014,
-    "z": "8546294e.bbf628",
+    "x": 672.50439453125,
+    "y": 457.34414625167847,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "5369a88f.c265a8",
+    "id": "1689d83b.0f3d48",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1570.531826019287,
-    "y": 431.00039863586426,
-    "z": "8546294e.bbf628",
+    "x": 1530.504482269287,
+    "y": 402.0003957748413,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "e11a3e97.9a4cf"
+        "877e79a4.de6e08"
       ]
     ]
   },
   {
-    "id": "e11a3e97.9a4cf",
+    "id": "877e79a4.de6e08",
     "type": "set",
     "name": "set controller data",
     "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
     "comments": "",
-    "x": 1759.0319213867188,
-    "y": 425.0004082918167,
-    "z": "8546294e.bbf628",
+    "x": 1719.0045776367188,
+    "y": 396.00040543079376,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "a5222a28.6f55b8",
+    "id": "e9a64136.0f3a4",
     "type": "not-found",
     "name": "not-found",
     "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1574.022792816162,
-    "y": 478.5744342803955,
-    "z": "8546294e.bbf628",
+    "x": 1533.995449066162,
+    "y": 449.57443141937256,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "ea233a49.a94538"
+        "1ecf5c87.8a1883"
       ]
     ]
   },
   {
-    "id": "ea233a49.a94538",
+    "id": "1ecf5c87.8a1883",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
     "comments": "",
-    "x": 1747.5942039489746,
-    "y": 466.8601703643799,
-    "z": "8546294e.bbf628",
+    "x": 1707.5668601989746,
+    "y": 437.86016750335693,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "42b5e401.e14b8c",
+    "id": "46f84de2.5c2c94",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1566.355800628662,
-    "y": 519.9077472686768,
-    "z": "8546294e.bbf628",
+    "x": 1526.328456878662,
+    "y": 490.9077444076538,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "28e9f15e.a3f2ce"
+        "87e2e13c.489f3"
       ]
     ]
   },
   {
-    "id": "28e9f15e.a3f2ce",
+    "id": "87e2e13c.489f3",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
     "comments": "",
-    "x": 1754.1283569335938,
-    "y": 515.3469400405884,
-    "z": "8546294e.bbf628",
+    "x": 1714.1010131835938,
+    "y": 486.34693717956543,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "e43f8602.8d7af8",
+    "id": "e15f72bc.d37ff",
     "type": "get-resource",
     "name": "get-resource esr-thirdparty-sdnc",
-    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1303.53173828125,
-    "y": 479.00040447711945,
-    "z": "8546294e.bbf628",
+    "x": 1263.50439453125,
+    "y": 450.0004016160965,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "5369a88f.c265a8",
-        "a5222a28.6f55b8",
-        "42b5e401.e14b8c"
+        "1689d83b.0f3d48",
+        "e9a64136.0f3a4",
+        "46f84de2.5c2c94"
       ]
     ]
   },
   {
-    "id": "d2ea4d7a.0f7bc",
+    "id": "8c66a623.b3e238",
     "type": "execute",
     "name": "execute RestApiCallNode Create  SDWAN site",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-site.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/sites'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"site-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 1326.031852722168,
-    "y": 636.0003986358643,
-    "z": "8546294e.bbf628",
+    "x": 1286.004508972168,
+    "y": 607.0003957748413,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "f57bd183.9204c"
+        "9cc77bf6.9a9d78",
+        "2cdd5eb4.cdc7e2"
       ]
     ]
   },
   {
-    "id": "b5c8e88e.b71a98",
+    "id": "45d1f2b.f3e000c",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "comments": "",
     "outputs": 1,
-    "x": 1746.6983757019043,
-    "y": 637.8892993927002,
-    "z": "8546294e.bbf628",
+    "x": 1706.6710319519043,
+    "y": 608.8892965316772,
+    "z": "d540a7b.861cb58",
     "wires": [
       []
     ]
   },
   {
-    "id": "db67aff2.ce7ea",
+    "id": "7a151bff.37aaa4",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",
     "comments": "",
-    "x": 1732.1429595947266,
-    "y": 697.4446468353271,
-    "z": "8546294e.bbf628",
+    "x": 1692.1156158447266,
+    "y": 668.4446439743042,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "8e3552db.71c4c",
+    "id": "2cdd5eb4.cdc7e2",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1587.1429500579834,
-    "y": 694.4446449279785,
-    "z": "8546294e.bbf628",
+    "x": 1547.1156063079834,
+    "y": 665.4446420669556,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "db67aff2.ce7ea"
+        "7a151bff.37aaa4"
       ]
     ]
   },
   {
-    "id": "f57bd183.9204c",
+    "id": "9cc77bf6.9a9d78",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1587.587287902832,
-    "y": 638.1114530563354,
-    "z": "8546294e.bbf628",
+    "x": 1547.559944152832,
+    "y": 609.1114501953125,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "b5c8e88e.b71a98"
+        "45d1f2b.f3e000c"
       ]
     ]
   },
   {
-    "id": "cfdaefb3.97c88",
+    "id": "90854244.d2678",
     "type": "set",
     "name": "copy input data to service data",
-    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />",
+    "xml": "<set>\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />",
     "comments": "",
-    "x": 701.0316848754883,
-    "y": 572.0005831718445,
-    "z": "8546294e.bbf628",
+    "x": 664.0043487548828,
+    "y": 544.0006427764893,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "b24b0990.f29818",
+    "id": "dc8a36b0.c3b358",
     "type": "execute",
     "name": "execute RestApiCallNode Get token",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
     "comments": "",
     "outputs": 1,
-    "x": 1304.7858352661133,
-    "y": 572.0044652223587,
-    "z": "8546294e.bbf628",
+    "x": 1264.7584915161133,
+    "y": 543.0044623613358,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "289de783.f62c58",
-        "794b6e1c.8d635"
+        "b5fd26d4.434e58",
+        "35ebfe16.180562"
       ]
     ]
   },
   {
-    "id": "289de783.f62c58",
+    "id": "b5fd26d4.434e58",
     "type": "success",
     "name": "success",
     "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1569.785717010498,
-    "y": 557.0043603181839,
-    "z": "8546294e.bbf628",
+    "x": 1529.758373260498,
+    "y": 528.004357457161,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "9a259234.042bd"
+        "545e872c.836968"
       ]
     ]
   },
   {
-    "id": "794b6e1c.8d635",
+    "id": "35ebfe16.180562",
     "type": "failure",
     "name": "failure",
     "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1562.035717010498,
-    "y": 598.6472436189651,
-    "z": "8546294e.bbf628",
+    "x": 1522.008373260498,
+    "y": 569.6472407579422,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "abdc5f44.099"
+        "ec823836.0a8798"
       ]
     ]
   },
   {
-    "id": "abdc5f44.099",
+    "id": "ec823836.0a8798",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1688.119213104248,
-    "y": 598.8932763338089,
-    "z": "8546294e.bbf628",
+    "x": 1648.091869354248,
+    "y": 569.893273472786,
+    "z": "d540a7b.861cb58",
     "wires": [
       []
     ]
   },
   {
-    "id": "9a259234.042bd",
+    "id": "545e872c.836968",
     "type": "set",
     "name": "set token-id",
     "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
     "comments": "",
-    "x": 1706.785717010498,
-    "y": 557.0043603181839,
-    "z": "8546294e.bbf628",
+    "x": 1666.758373260498,
+    "y": 528.004357457161,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "6db7dcff.bc7ce4",
+    "id": "48a7bd41.b0ef94",
     "type": "comment",
     "name": "tmp.thirdparty-sdnc-id is hardcoded value?",
     "info": "",
     "comments": "",
-    "x": 1352.0356369018555,
-    "y": 433.004376411438,
-    "z": "8546294e.bbf628",
+    "x": 1312.0082931518555,
+    "y": 404.00437355041504,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "640f5d20.cfa064",
+    "id": "3edd9e9f.d604f2",
     "type": "set",
-    "name": "set vnf-index to service data",
-    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='siteId' />\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$site-result[0].id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\n",
+    "name": "set siteId to service data",
+    "xml": "<set>\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='siteId' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$site-result.success[0].id`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\n",
     "comments": "",
-    "x": 702.0354537963867,
-    "y": 448.00424432754517,
-    "z": "8546294e.bbf628",
+    "x": 654.0081787109375,
+    "y": 419.0042562484741,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "3d75d87b.d2ff28",
+    "id": "5c9c6749.a75a58",
     "type": "switchNode",
     "name": "switch ActivateSDWANDeviceInstance",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\">\n\n    \n    \n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1830.2855911254883,
-    "y": 144.00390481948853,
-    "z": "8546294e.bbf628",
+    "x": 1790.2582473754883,
+    "y": 115.00390195846558,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "628cbd2.1a1aa44"
+        "4e8a745e.fc595c"
       ]
     ]
   },
   {
-    "id": "628cbd2.1a1aa44",
+    "id": "4e8a745e.fc595c",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2057.285446166992,
-    "y": 143.0039038658142,
-    "z": "8546294e.bbf628",
+    "x": 2017.2581024169922,
+    "y": 114.00390100479126,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "b1822ffa.bc97b"
+        "80899e02.b6a68"
       ]
     ]
   },
   {
-    "id": "9845da61.98a1c8",
-    "type": "block",
-    "name": "block",
-    "xml": "<block>\n",
-    "atomic": "false",
-    "comments": "",
-    "outputs": 1,
-    "x": 1600.285415649414,
-    "y": 115.00389051437378,
-    "z": "8546294e.bbf628",
-    "wires": [
-      [
-        "3d75d87b.d2ff28",
-        "90e8fa4e.9e0b88"
-      ]
-    ]
-  },
-  {
-    "id": "fab4e8d5.eaaa38",
+    "id": "f39513a2.e7f31",
     "type": "comment",
     "name": "Get devices",
     "info": "",
     "comments": "",
-    "x": 1864.0356063842773,
-    "y": 164.7539200782776,
-    "z": "8546294e.bbf628",
+    "x": 1824.0082626342773,
+    "y": 135.75391721725464,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "cbc96af.e7a6b98",
+    "id": "221a8fd1.b8b2f",
     "type": "set",
     "name": "set prop.site.sdwan false",
     "xml": "<set>\n<parameter name='prop.site.sdwan' value=\"false\" />\n\n",
     "comments": "",
-    "x": 685.0312652587891,
-    "y": 83.0000352859497,
-    "z": "8546294e.bbf628",
+    "x": 645.0039215087891,
+    "y": 54.00003242492676,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "8699a911.00b498",
+    "id": "3c340ff6.924a4",
     "type": "switchNode",
     "name": "switch prop.site.sdwan",
     "xml": "<switch test=\"`$prop.site.sdwan`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 681.0313720703125,
-    "y": 390.666624546051,
-    "z": "8546294e.bbf628",
+    "x": 641.0040283203125,
+    "y": 361.6666216850281,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "ace66bf6.fc6f18"
+        "3529dc36.6091c4"
       ]
     ]
   },
   {
-    "id": "ace66bf6.fc6f18",
+    "id": "3529dc36.6091c4",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 860.031421661377,
-    "y": 387.666624546051,
-    "z": "8546294e.bbf628",
+    "x": 820.004077911377,
+    "y": 358.6666216850281,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "70ebd8ae.1dd798"
+        "b0a30d5b.6002c"
       ]
     ]
   },
   {
-    "id": "70ebd8ae.1dd798",
+    "id": "b0a30d5b.6002c",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1016.0316467285156,
-    "y": 384.6669464111328,
-    "z": "8546294e.bbf628",
+    "x": 976.0043029785156,
+    "y": 355.66694355010986,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "2f462de2.0453e2",
-        "2f8e9052.03ea2",
-        "d2ea4d7a.0f7bc",
-        "e43f8602.8d7af8",
-        "b24b0990.f29818"
+        "8c7ebff5.e351e",
+        "1aa5ae21.057332",
+        "8c66a623.b3e238",
+        "e15f72bc.d37ff",
+        "dc8a36b0.c3b358"
       ]
     ]
   },
   {
-    "id": "b1822ffa.bc97b",
+    "id": "80899e02.b6a68",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 2010.6982822418213,
-    "y": 212.00003480911255,
-    "z": "8546294e.bbf628",
+    "x": 1972.6710166931152,
+    "y": 176.00004196166992,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "f8a73d95.16c95"
+        "744280bc.85fef"
       ]
     ]
   },
   {
-    "id": "f8a73d95.16c95",
+    "id": "744280bc.85fef",
     "type": "for",
     "name": "for loop deviceidx - Get deviceId from servicedata",
     "xml": "<for index=\"deviceidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">",
     "comments": "",
     "outputs": 1,
-    "x": 2294.0321140289307,
-    "y": 215.00006532669067,
-    "z": "8546294e.bbf628",
+    "x": 2254.0047702789307,
+    "y": 186.00006246566772,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "f4aaaa9b.0e63e8"
+        "e3f03864.75b5b8"
       ]
     ]
   },
   {
-    "id": "f4aaaa9b.0e63e8",
+    "id": "e3f03864.75b5b8",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2410.031898498535,
-    "y": 266.0002508163452,
-    "z": "8546294e.bbf628",
+    "x": 2370.004554748535,
+    "y": 237.00024795532227,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "560efc8.407e904"
+        "271bfd98.e39bf2"
       ]
     ]
   },
   {
-    "id": "560efc8.407e904",
+    "id": "271bfd98.e39bf2",
     "type": "switchNode",
     "name": "switch deviceId",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].name == 'deviceId'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 2570.032154083252,
-    "y": 268.0001039505005,
-    "z": "8546294e.bbf628",
+    "x": 2530.004810333252,
+    "y": 239.00010108947754,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "364ea14b.4737ce"
+        "d2e3890.db58f78"
       ]
     ]
   },
   {
-    "id": "364ea14b.4737ce",
+    "id": "d2e3890.db58f78",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2722.032325744629,
-    "y": 267.0001039505005,
-    "z": "8546294e.bbf628",
+    "x": 2682.004981994629,
+    "y": 238.00010108947754,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "57bae08d.5682f"
+        "a5559674.8a50e8"
       ]
     ]
   },
   {
-    "id": "57bae08d.5682f",
+    "id": "a5559674.8a50e8",
     "type": "set",
     "name": "set deviceId",
-    "xml": "<set>\n<parameter name='prop.site.deviceId[$prop.site.deviceId_length]' value='`$service-data.vnfs.vnf[$tmp.deviceVidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />\n<parameter name='prop.site.deviceId_length' value='`$prop.site.deviceId_length + 1`' />\n",
+    "xml": "<set>\n<parameter name='prop.site.deviceId[$prop.site.deviceId_length]' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />\n<parameter name='prop.site.deviceId_length' value='`$prop.site.deviceId_length + 1`' />\n",
     "comments": "",
-    "x": 2862.032329559326,
-    "y": 266.600058555603,
-    "z": "8546294e.bbf628",
+    "x": 2822.004985809326,
+    "y": 237.60005569458008,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "63f3d384.29d3ac",
+    "id": "18332af4.bcb575",
     "type": "set",
     "name": "set prop.site.deviceId_length",
     "xml": "<set>\n<parameter name='prop.site.deviceId_length' value='0' />\n",
     "comments": "",
-    "x": 1338.031322479248,
-    "y": 69.99999761581421,
-    "z": "8546294e.bbf628",
+    "x": 1298.003978729248,
+    "y": 40.99999475479126,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "de98d30f.d2fa5",
+    "id": "78b0ee0f.0865f",
     "type": "save",
     "name": "update siteInstance configuration in AAI",
-    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \n      key='site-resource.id = $service-data.vnfs.vnf[$tmp.vidx].vnf-id' >\n<parameter name='id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />      \n<parameter name='generated-site-id' value='`$site-result[0].site-id`' /> \n<parameter name='operational-status' value='Active' />\n",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \n      key='site-resource.id = $vnf-topology-operation-input.vnf-information.vnf-id' >\n<parameter name='id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />      \n<parameter name='generated-site-id' value='`$site-result.success[0].id`' /> \n<parameter name='operational-status' value='Active' />\n",
     "comments": "",
     "outputs": 1,
-    "x": 731.0313720703125,
-    "y": 633.0000977516174,
-    "z": "8546294e.bbf628",
+    "x": 694.0040740966797,
+    "y": 605.0001573562622,
+    "z": "d540a7b.861cb58",
     "wires": [
       []
     ]
   },
   {
-    "id": "f380f867.7d6998",
+    "id": "faa004c7.5a25c8",
     "type": "execute",
     "name": "execute Properties",
     "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n    <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",
     "comments": "",
     "outputs": 1,
-    "x": 677.0312881469727,
-    "y": 279.99999952316284,
-    "z": "8546294e.bbf628",
+    "x": 637.0039443969727,
+    "y": 250.9999966621399,
+    "z": "d540a7b.861cb58",
     "wires": [
       []
     ]
   },
   {
-    "id": "2f462de2.0453e2",
+    "id": "8c7ebff5.e351e",
     "type": "set",
     "name": "set siteId",
     "xml": "<set>\n<parameter name='prop.site.siteId' value=\"\" />\n\n",
     "comments": "",
-    "x": 1225.0315856933594,
-    "y": 375.0001050233841,
-    "z": "8546294e.bbf628",
+    "x": 1185.0042419433594,
+    "y": 346.00010216236115,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "e43a0564.6e85b8",
+    "id": "f5d9902.f200f7",
     "type": "comment",
     "name": "should be null in request",
     "info": "",
     "comments": "",
-    "x": 1234.031509399414,
-    "y": 346.0000592470169,
-    "z": "8546294e.bbf628",
+    "x": 1194.004165649414,
+    "y": 317.00005638599396,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "fe37a50e.9b06e8",
+    "id": "edd58360.fef7",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 2107.031394958496,
-    "y": 78.65758323669434,
-    "z": "8546294e.bbf628",
+    "x": 2067.004051208496,
+    "y": 49.65758037567139,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "4bd89f7e.9676d",
-        "9ff83ab.3d923c8",
-        "523d9c1d.3e7a14",
-        "471b0999.b03818"
+        "e434b261.8d553",
+        "2f0be2c.5dcd11e",
+        "eee333df.5a9b6"
       ]
     ]
   },
   {
-    "id": "9ff83ab.3d923c8",
+    "id": "2f0be2c.5dcd11e",
     "type": "set",
     "name": "set vnf-request-input.",
     "xml": "<set>\n<parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\n\n",
     "comments": "",
-    "x": 2359.364402770996,
-    "y": 95.65763854980469,
-    "z": "8546294e.bbf628",
+    "x": 2319.337059020996,
+    "y": 66.65763568878174,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "4bd89f7e.9676d",
+    "id": "e434b261.8d553",
     "type": "set",
     "name": "set tmp.vidx and ctx.vnf-data",
     "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",
     "comments": "",
-    "x": 2386.918113708496,
-    "y": 49.00000286102295,
-    "z": "8546294e.bbf628",
+    "x": 2346.890769958496,
+    "y": 20,
+    "z": "d540a7b.861cb58",
     "wires": []
   },
   {
-    "id": "523d9c1d.3e7a14",
+    "id": "eee333df.5a9b6",
     "type": "call",
     "name": "call sdwan-get-site-param",
     "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-site-param' mode='sync' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 2358.005081176758,
-    "y": 131.10712242126465,
-    "z": "8546294e.bbf628",
+    "x": 2317.977737426758,
+    "y": 102.1071195602417,
+    "z": "d540a7b.861cb58",
     "wires": [
       []
     ]
   },
   {
-    "id": "2f8e9052.03ea2",
+    "id": "1aa5ae21.057332",
     "type": "for",
     "name": "for cpidx..prop.site.controlpoints",
     "xml": "<for index='cpidx' start='0' end='`$prop.site.controlpoints_length`' >\n\t\t\t\t\t\t\t\t\t\n",
     "comments": "",
     "outputs": 1,
-    "x": 1285.0318603515625,
-    "y": 276.0313186645508,
-    "z": "8546294e.bbf628",
+    "x": 1245.0045166015625,
+    "y": 247.03131580352783,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "5d6d521c.a38a7c"
+        "78afb961.5c44f8"
       ]
     ]
   },
   {
-    "id": "5d6d521c.a38a7c",
+    "id": "78afb961.5c44f8",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1528.0313720703125,
-    "y": 274.03125762939453,
-    "z": "8546294e.bbf628",
-    "wires": [
-      [
-        "a5905cec.9f577"
-      ]
-    ]
-  },
-  {
-    "id": "a5905cec.9f577",
-    "type": "for",
-    "name": "for cpvidx..service-data.vnfs.vnf_length[]",
-    "xml": "<for index='cpvidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1777.0313720703125,
-    "y": 272.031289100647,
-    "z": "8546294e.bbf628",
-    "wires": [
-      [
-        "c5914904.7dd248"
-      ]
-    ]
-  },
-  {
-    "id": "c5914904.7dd248",
-    "type": "block",
-    "name": "block",
-    "xml": "<block>\n",
-    "atomic": "false",
-    "comments": "",
-    "outputs": 1,
-    "x": 1630.531322479248,
-    "y": 338.03128933906555,
-    "z": "8546294e.bbf628",
-    "wires": [
-      [
-        "81562a69.669098"
-      ]
-    ]
-  },
-  {
-    "id": "81562a69.669098",
-    "type": "switchNode",
-    "name": "switch ActivateSiteInstance",
-    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`\">\n\n    \n    \n\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1826.5317573547363,
-    "y": 337.0312900543213,
-    "z": "8546294e.bbf628",
-    "wires": [
-      [
-        "4dd0f132.ac22d"
-      ]
-    ]
-  },
-  {
-    "id": "4dd0f132.ac22d",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 2015.5316467285156,
-    "y": 336.031259059906,
-    "z": "8546294e.bbf628",
+    "x": 1488.0040283203125,
+    "y": 245.03125476837158,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "c19716c9.bf16e8"
+        "6cfee007.a751c",
+        "9f90e330.d491e"
       ]
     ]
   },
   {
-    "id": "c19716c9.bf16e8",
+    "id": "5665ac79.9c7064",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 2169.874858856201,
-    "y": 352.1174783706665,
-    "z": "8546294e.bbf628",
-    "wires": [
-      [
-        "b380d74e.7f6938"
-      ]
-    ]
-  },
-  {
-    "id": "b380d74e.7f6938",
-    "type": "for",
-    "name": "for loop sidx - Get siteId from servicedata",
-    "xml": "<for index=\"sidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$cpvidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">",
-    "comments": "",
-    "outputs": 1,
-    "x": 2415.5315895080566,
-    "y": 354.0313606262207,
-    "z": "8546294e.bbf628",
-    "wires": [
-      [
-        "586aef3f.c2594"
-      ]
-    ]
-  },
-  {
-    "id": "586aef3f.c2594",
-    "type": "block",
-    "name": "block",
-    "xml": "<block>\n",
-    "atomic": "false",
-    "comments": "",
-    "outputs": 1,
-    "x": 2141.531894683838,
-    "y": 451.0313949584961,
-    "z": "8546294e.bbf628",
+    "x": 1545.2540493011475,
+    "y": 86.00390911102295,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "6ca3ced4.b496f"
+        "3d3bb0a2.e8367",
+        "5c9c6749.a75a58"
       ]
     ]
   },
   {
-    "id": "6ca3ced4.b496f",
-    "type": "switchNode",
-    "name": "switch name",
-    "xml": "<switch test=\"`$service-data.vnfs.vnf[$cpvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'name'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 2301.5321502685547,
-    "y": 453.03124809265137,
-    "z": "8546294e.bbf628",
-    "wires": [
-      [
-        "e4e196a3.719d08"
-      ]
-    ]
-  },
-  {
-    "id": "e4e196a3.719d08",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
+    "id": "6cfee007.a751c",
+    "type": "get-resource",
+    "name": "get-resource control pts for sideId",
+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"site-resource\" \n\t\tkey=\"site-resource.name = $prop.controlPtId AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.controlPoints' local-only='false' >\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 2453.5323219299316,
-    "y": 452.03124809265137,
-    "z": "8546294e.bbf628",
+    "x": 1711.333595275879,
+    "y": 270.0000762939453,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "79a83f73.ae9af"
+        "80cbc7ba.096f98",
+        "e060fcc5.cef25"
       ]
     ]
   },
   {
-    "id": "9f3ec9f2.b22258",
-    "type": "switchNode",
-    "name": "switch name match with controlPoint",
-    "xml": "<switch test=\"`$service-data.vnfs.vnf[$cpvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value == $prop.site.controlpoints[$cpidx]`\">\n",
+    "id": "44fab179.6e6d3",
+    "type": "set",
+    "name": "set siteId in control point",
+    "xml": "<set>\n<parameter name='prop.site.controlpoints[$cpidx]' value='`$tmp.aai.controlPoints.generated-site-id`' />\n\n",
     "comments": "",
-    "outputs": 1,
-    "x": 2690.0319023132324,
-    "y": 462.031436920166,
-    "z": "8546294e.bbf628",
-    "wires": [
-      [
-        "2d878bd7.4ff264"
-      ]
-    ]
+    "x": 2108.666790008545,
+    "y": 240.00019645690918,
+    "z": "d540a7b.861cb58",
+    "wires": []
   },
   {
-    "id": "2d878bd7.4ff264",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
+    "id": "80cbc7ba.096f98",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2899.031665802002,
-    "y": 455.03130531311035,
-    "z": "8546294e.bbf628",
+    "x": 1930.0004386901855,
+    "y": 239.00007438659668,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "3590859d.52442a"
+        "44fab179.6e6d3"
       ]
     ]
   },
   {
-    "id": "95b453fd.ee43a",
-    "type": "for",
-    "name": "for loop lidx - Get siteId from servicedata",
-    "xml": "<for index=\"lidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$cpvidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">",
+    "id": "e060fcc5.cef25",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 2483.0317192077637,
-    "y": 566.0313177108765,
-    "z": "8546294e.bbf628",
+    "x": 1932.2502822875977,
+    "y": 277.6429605484009,
+    "z": "d540a7b.861cb58",
     "wires": [
       [
-        "29fb7e8d.917742"
+        "a065dfd4.9970f"
       ]
     ]
   },
   {
-    "id": "29fb7e8d.917742",
+    "id": "a065dfd4.9970f",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 2273.0313606262207,
-    "y": 640.0315551757812,
-    "z": "8546294e.bbf628",
-    "wires": [
-      [
-        "43fe6c1f.7a83e4"
-      ]
-    ]
-  },
-  {
-    "id": "43fe6c1f.7a83e4",
-    "type": "switchNode",
-    "name": "switch siteId",
-    "xml": "<switch test=\"`$service-data.vnfs.vnf[$cpvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$lidx].name == 'siteId'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 2419.0316047668457,
-    "y": 643.0313415527344,
-    "z": "8546294e.bbf628",
+    "x": 2072.6666297912598,
+    "y": 276.0000171661377,
+    "z": "d540a7b.861cb58",
     "wires": [
-      [
-        "48abb19b.d8fe"
-      ]
-    ]
-  },
-  {
-    "id": "48abb19b.d8fe",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 2566.031913757324,
-    "y": 641.0313110351562,
-    "z": "8546294e.bbf628",
-    "wires": [
-      [
-        "2780c7bb.98f1c8"
-      ]
+      []
     ]
   },
   {
-    "id": "2780c7bb.98f1c8",
+    "id": "9f90e330.d491e",
     "type": "set",
-    "name": "set siteId in control point",
-    "xml": "<set>\n<parameter name='prop.site.controlpoints[$cpidx]' value='`$service-data.vnfs.vnf[$cpvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$lidx].value`' />\n\n",
+    "name": "set prop.controlPtId",
+    "xml": "<set>\n<parameter name='prop.controlPtId' value='`$prop.site.controlpoints[$cpidx]`' />\n\n",
     "comments": "",
-    "x": 2745.0322227478027,
-    "y": 643.631411075592,
-    "z": "8546294e.bbf628",
+    "x": 1673.000099182129,
+    "y": 210.0000114440918,
+    "z": "d540a7b.861cb58",
     "wires": []
-  },
-  {
-    "id": "3590859d.52442a",
-    "type": "block",
-    "name": "block : atomic",
-    "xml": "<block atomic=\"true\">",
-    "atomic": "true",
-    "outputs": 1,
-    "x": 2227.0316123962402,
-    "y": 566.0313024520874,
-    "z": "8546294e.bbf628",
-    "wires": [
-      [
-        "95b453fd.ee43a"
-      ]
-    ]
-  },
-  {
-    "id": "471b0999.b03818",
-    "type": "record",
-    "name": "record",
-    "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"sdwan-site-activateeeee-delete\"/>\n<parameter name=\"field3\" value='`$prop.site.sdwan`'/>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 2300.0313873291016,
-    "y": 177.03126049041748,
-    "z": "8546294e.bbf628",
-    "wires": [
-      []
-    ]
-  },
-  {
-    "id": "79a83f73.ae9af",
-    "type": "block",
-    "name": "block : atomic",
-    "xml": "<block atomic=\"true\">",
-    "atomic": "true",
-    "outputs": 1,
-    "x": 2720.5314903259277,
-    "y": 401.031286239624,
-    "z": "8546294e.bbf628",
-    "wires": [
-      [
-        "9f3ec9f2.b22258"
-      ]
-    ]
   }
 ]
index 131c2ed..286200c 100644 (file)
@@ -1,20 +1,20 @@
 [
   {
-    "id": "1fe30678.9b6c5a",
+    "id": "d0010b4e.1448a8",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 122.03125,
-    "y": 82.03125,
-    "z": "c632d855.425948",
+    "x": 135.00390625,
+    "y": 59.999999046325684,
+    "z": "32a9459d.29ba0a",
     "wires": [
       [
-        "6f581451.d6d46c"
+        "7fc8b438.987c3c"
       ]
     ]
   },
   {
-    "id": "6f581451.d6d46c",
+    "id": "7fc8b438.987c3c",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 221.31694793701172,
-    "y": 156.26935789268464,
-    "z": "c632d855.425948",
+    "x": 234.28960418701172,
+    "y": 134.23810693901032,
+    "z": "32a9459d.29ba0a",
     "wires": [
       [
-        "ffdaf6e4.8fe2a8"
+        "18f3c53b.5e40fb"
       ]
     ]
   },
   {
-    "id": "ffdaf6e4.8fe2a8",
+    "id": "18f3c53b.5e40fb",
     "type": "method",
     "name": "method site-vnf-topology-operation-create",
     "xml": "<method rpc='site-vnf-topology-operation-create' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 242.4598617553711,
-    "y": 246.03124639671296,
-    "z": "c632d855.425948",
+    "x": 255.4325180053711,
+    "y": 223.99999544303864,
+    "z": "32a9459d.29ba0a",
     "wires": [
       [
-        "4928aa8e.b25464"
+        "286c6526.b613ca"
       ]
     ]
   },
   {
-    "id": "4928aa8e.b25464",
+    "id": "286c6526.b613ca",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 222.69790649414062,
-    "y": 417.69791814964265,
-    "z": "c632d855.425948",
+    "x": 235.67056274414062,
+    "y": 395.66666719596833,
+    "z": "32a9459d.29ba0a",
     "wires": [
       [
-        "290eb35e.b9e26c",
-        "2113cd25.2b0aa2",
-        "1e868a78.080646",
-        "63b1d38d.89ffcc",
-        "c8bfa3ce.63b66",
-        "81b868ec.b075e8",
-        "8129d44e.2d4828",
-        "66b4b0a.218e25",
-        "f33cfcda.f0c5d",
-        "87aab9f9.450f38",
-        "c3c6696a.6ae368",
-        "b6127d24.eca33",
-        "82b5aeb7.909dc"
+        "2a8f2c14.d43db4",
+        "5fbde6da.2bd958",
+        "cc1a93a5.7ab76",
+        "18b24e84.30ff61",
+        "a5742836.13c218",
+        "671e4dac.744e44",
+        "2dfa8b04.f64514",
+        "c4eecb83.953aa8",
+        "ee03e646.5fd808",
+        "d81ebfe3.370b",
+        "d3dc22e.6b5c4e",
+        "4ed7986f.14fb68"
       ]
     ]
   },
   {
-    "id": "2113cd25.2b0aa2",
+    "id": "5fbde6da.2bd958",
     "type": "set",
     "name": "set vnf-level-oper-status to Created",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
     "comments": "",
-    "x": 650.8446578979492,
-    "y": 836.7018160820007,
-    "z": "c632d855.425948",
+    "x": 663.8173141479492,
+    "y": 814.6705651283264,
+    "z": "32a9459d.29ba0a",
     "wires": []
   },
   {
-    "id": "290eb35e.b9e26c",
+    "id": "2a8f2c14.d43db4",
     "type": "set",
     "name": "copy input data to service data",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\n\n",
     "comments": "",
-    "x": 637.6978073120117,
-    "y": 734.6980319023132,
-    "z": "c632d855.425948",
+    "x": 650.6704635620117,
+    "y": 712.6667809486389,
+    "z": "32a9459d.29ba0a",
     "wires": []
   },
   {
-    "id": "81b868ec.b075e8",
+    "id": "a5742836.13c218",
     "type": "execute",
     "name": "execute generate-vnf-index",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.vnf-index\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 622.0313415527344,
-    "y": 661.3647031784058,
-    "z": "c632d855.425948",
+    "x": 635.0039978027344,
+    "y": 639.3334522247314,
+    "z": "32a9459d.29ba0a",
     "wires": [
       []
     ]
   },
   {
-    "id": "1e868a78.080646",
+    "id": "6d87bfd7.c22d1",
     "type": "set",
     "name": "set vnf-index to service data",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.vnf-id' value='`$prop.vnf-index`' />\n",
     "comments": "",
-    "x": 628.0313034057617,
-    "y": 790.3646578788757,
-    "z": "c632d855.425948",
+    "x": 648.0040626525879,
+    "y": 768.3334197998047,
+    "z": "32a9459d.29ba0a",
     "wires": []
   },
   {
-    "id": "63b1d38d.89ffcc",
+    "id": "cc1a93a5.7ab76",
     "type": "switchNode",
     "name": "switch service-data.vnfs.vnf_length",
     "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 652.0312271118164,
-    "y": 296.36460971832275,
-    "z": "c632d855.425948",
+    "x": 665.0038833618164,
+    "y": 274.33335876464844,
+    "z": "32a9459d.29ba0a",
     "wires": [
       [
-        "65a65f43.d7119",
-        "e1777473.61ad38"
+        "6a52e61c.b473b8",
+        "ceafd752.94f398"
       ]
     ]
   },
   {
-    "id": "65a65f43.d7119",
+    "id": "6a52e61c.b473b8",
     "type": "other",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 886.7456130981445,
-    "y": 291.5074300765991,
-    "z": "c632d855.425948",
+    "x": 899.7182693481445,
+    "y": 269.4761791229248,
+    "z": "32a9459d.29ba0a",
     "wires": [
       [
-        "1145bf21.5d5e11"
+        "98d935d6.adba58"
       ]
     ]
   },
   {
-    "id": "1145bf21.5d5e11",
+    "id": "98d935d6.adba58",
     "type": "set",
     "name": "set vnf-index=0",
     "xml": "<set>\n<parameter name='vnf-index' value='0' />\n",
     "comments": "",
-    "x": 1047.0313186645508,
-    "y": 291.5075216293335,
-    "z": "c632d855.425948",
+    "x": 1060.0039749145508,
+    "y": 269.4762706756592,
+    "z": "32a9459d.29ba0a",
     "wires": []
   },
   {
-    "id": "e1777473.61ad38",
+    "id": "ceafd752.94f398",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 883.1741523742676,
-    "y": 324.79326152801514,
-    "z": "c632d855.425948",
+    "x": 896.1468086242676,
+    "y": 302.7620105743408,
+    "z": "32a9459d.29ba0a",
     "wires": [
       [
-        "43f60e81.7293"
+        "2edf4169.726dbe"
       ]
     ]
   },
   {
-    "id": "3c64116d.221f3e",
+    "id": "f2ec0c7c.259ee",
     "type": "set",
     "name": "set vnf-index = vnf_length",
     "xml": "<set>\n<parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\n",
     "comments": "",
-    "x": 1276.031394958496,
-    "y": 303.07898712158203,
-    "z": "c632d855.425948",
+    "x": 1289.004051208496,
+    "y": 281.0477361679077,
+    "z": "32a9459d.29ba0a",
     "wires": []
   },
   {
-    "id": "2bf3f4e0.d3268c",
+    "id": "728dfb90.8e3944",
     "type": "for",
     "name": "for each existing VNF",
     "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1264.4600143432617,
-    "y": 338.0789589881897,
-    "z": "c632d855.425948",
+    "x": 1277.4326705932617,
+    "y": 316.0477080345154,
+    "z": "32a9459d.29ba0a",
     "wires": [
       [
-        "8fa582ed.781d1"
+        "f1186372.a0982"
       ]
     ]
   },
   {
-    "id": "43f60e81.7293",
+    "id": "2edf4169.726dbe",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1017.8884353637695,
-    "y": 326.793231010437,
-    "z": "c632d855.425948",
+    "x": 1030.8610916137695,
+    "y": 304.7619800567627,
+    "z": "32a9459d.29ba0a",
     "wires": [
       [
-        "3c64116d.221f3e",
-        "2bf3f4e0.d3268c"
+        "f2ec0c7c.259ee",
+        "728dfb90.8e3944"
       ]
     ]
   },
   {
-    "id": "8fa582ed.781d1",
+    "id": "f1186372.a0982",
     "type": "switchNode",
     "name": "switch vnf-information.vnf-id == service-data.vnfs.vnf[].vnf-id",
     "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1657.745750427246,
-    "y": 338.6504430770874,
-    "z": "c632d855.425948",
+    "x": 1670.718406677246,
+    "y": 316.6191921234131,
+    "z": "32a9459d.29ba0a",
     "wires": [
       [
-        "d1ebb0ef.628be"
+        "32b0d35f.e4b42c"
       ]
     ]
   },
   {
-    "id": "d1ebb0ef.628be",
+    "id": "32b0d35f.e4b42c",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1939.031452178955,
-    "y": 337.221848487854,
-    "z": "c632d855.425948",
+    "x": 1952.004108428955,
+    "y": 315.1905975341797,
+    "z": "32a9459d.29ba0a",
     "wires": [
       [
-        "43f17df2.e71f94"
+        "c7f17107.aecae"
       ]
     ]
   },
   {
-    "id": "25d81b97.ed5734",
+    "id": "8ccad497.cccb38",
     "type": "comment",
     "name": "make sure this vnf-id doesn't exist already",
     "info": "",
     "comments": "",
-    "x": 1626.8883666992188,
-    "y": 302.2218351364136,
-    "z": "c632d855.425948",
+    "x": 1639.8610229492188,
+    "y": 280.19058418273926,
+    "z": "32a9459d.29ba0a",
     "wires": []
   },
   {
-    "id": "c8bfa3ce.63b66",
+    "id": "18b24e84.30ff61",
     "type": "set",
     "name": "set new vnf_length",
     "xml": "<set>\n<parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\n",
     "comments": "",
-    "x": 604.0313034057617,
-    "y": 628.3646578788757,
-    "z": "c632d855.425948",
+    "x": 617.0039596557617,
+    "y": 606.3334069252014,
+    "z": "32a9459d.29ba0a",
     "wires": []
   },
   {
-    "id": "f33cfcda.f0c5d",
+    "id": "c4eecb83.953aa8",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 606.0313301086426,
-    "y": 1059.6282849311829,
-    "z": "c632d855.425948",
+    "x": 619.0039863586426,
+    "y": 1037.5970339775085,
+    "z": "32a9459d.29ba0a",
     "wires": []
   },
   {
-    "id": "8129d44e.2d4828",
+    "id": "671e4dac.744e44",
     "type": "save",
     "name": "save siteInstance configuration in AAI",
     "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \n      key='site-resource.id = $prop.vnf-index' >\n<parameter name='id' value='`$prop.vnf-index`' />      \n<parameter name='name' value='`$prop.site.name`' />\n<parameter name='description' value='`$prop.site.description`' />\n<parameter name='type' value='prop.site.type' />\n<parameter name='role' value='prop.site.role' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` \" />\n",
     "comments": "",
     "outputs": 1,
-    "x": 654.6980743408203,
-    "y": 931.8503160476685,
-    "z": "c632d855.425948",
+    "x": 667.6707305908203,
+    "y": 909.8190650939941,
+    "z": "32a9459d.29ba0a",
     "wires": [
       []
     ]
   },
   {
-    "id": "66b4b0a.218e25",
+    "id": "2dfa8b04.f64514",
     "type": "save",
     "name": "save service relationship in AAI",
     "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \n      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id \n         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id \n         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"site-resource\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/site-resources/site-resource/' + $prop.vnf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"site-resource.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.vnf-index`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 643.6980781555176,
-    "y": 994.6281986236572,
-    "z": "c632d855.425948",
+    "x": 656.6707344055176,
+    "y": 972.5969476699829,
+    "z": "32a9459d.29ba0a",
     "wires": [
       []
     ]
   },
   {
-    "id": "87aab9f9.450f38",
+    "id": "ee03e646.5fd808",
     "type": "set",
     "name": "set vnf-index and vnf-object-path",
     "xml": "<set>\n<parameter name='vnfId' value='`$prop.vnf-index`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` \" />",
     "comments": "",
-    "x": 645.0313262939453,
-    "y": 880.6280870437622,
-    "z": "c632d855.425948",
+    "x": 658.0039825439453,
+    "y": 858.5968360900879,
+    "z": "32a9459d.29ba0a",
     "wires": []
   },
   {
-    "id": "c3c6696a.6ae368",
+    "id": "d81ebfe3.370b",
     "type": "for",
     "name": "for loop idx - VNF input parameters",
     "xml": "<for index=\"idx\" start=\"0\" end=\"`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 638.0313415527344,
-    "y": 435.0313129425049,
-    "z": "c632d855.425948",
+    "x": 651.0039978027344,
+    "y": 413.00006198883057,
+    "z": "32a9459d.29ba0a",
     "wires": [
       [
-        "8cb85abf.a9b198"
+        "610b8a5.566b074"
       ]
     ]
   },
   {
-    "id": "8cb85abf.a9b198",
+    "id": "610b8a5.566b074",
     "type": "block",
     "name": "block",
     "xml": "<block>\n",
     "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 852.809684753418,
-    "y": 432.5868968963623,
-    "z": "c632d855.425948",
+    "x": 865.782341003418,
+    "y": 410.555645942688,
+    "z": "32a9459d.29ba0a",
     "wires": [
       [
-        "e6a0ec42.6ba",
-        "cdd1aefb.fa2f8"
+        "544f33c4.6ec91c",
+        "77273637.aeb898"
       ]
     ]
   },
   {
-    "id": "e6a0ec42.6ba",
+    "id": "544f33c4.6ec91c",
     "type": "execute",
     "name": "execute split parameterName",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1049.0658874511719,
-    "y": 410.3350353240967,
-    "z": "c632d855.425948",
+    "x": 1062.0385437011719,
+    "y": 388.30378437042236,
+    "z": "32a9459d.29ba0a",
     "wires": [
       []
     ]
   },
   {
-    "id": "cdd1aefb.fa2f8",
+    "id": "77273637.aeb898",
     "type": "set",
     "name": "set parameterName",
     "xml": "<set>\n<parameter name=\"`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",
     "comments": "",
-    "x": 1018.5103149414062,
-    "y": 447.3351516723633,
-    "z": "c632d855.425948",
+    "x": 1031.4829711914062,
+    "y": 425.30390071868896,
+    "z": "32a9459d.29ba0a",
     "wires": []
   },
   {
-    "id": "b6127d24.eca33",
+    "id": "d3dc22e.6b5c4e",
     "type": "set",
     "name": "set vnf-request-input.",
     "xml": "<set>\n<parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />\n",
     "comments": "",
-    "x": 600.0309600830078,
-    "y": 509.3560276031494,
-    "z": "c632d855.425948",
+    "x": 613.0036163330078,
+    "y": 487.3247766494751,
+    "z": "32a9459d.29ba0a",
     "wires": []
   },
   {
-    "id": "82b5aeb7.909dc",
+    "id": "4ed7986f.14fb68",
     "type": "call",
     "name": "call sdwan-get-site-param",
     "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-site-param' mode='sync' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 616.0313262939453,
-    "y": 541.3562316894531,
-    "z": "c632d855.425948",
+    "x": 629.0039825439453,
+    "y": 519.3249807357788,
+    "z": "32a9459d.29ba0a",
     "wires": [
       []
     ]
   },
   {
-    "id": "43f17df2.e71f94",
+    "id": "c7f17107.aecae",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id\n      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`\" />\n",
     "comments": "",
-    "x": 2067.6028213500977,
-    "y": 388.22186279296875,
-    "z": "c632d855.425948",
+    "x": 2080.5754776000977,
+    "y": 366.19061183929443,
+    "z": "32a9459d.29ba0a",
     "wires": []
   },
   {
-    "id": "ee62377b.687508",
+    "id": "9be618c6.476348",
     "type": "comment",
     "name": "Take the parameter names by removing prefix",
     "info": "",
     "comments": "",
-    "x": 1361.0314331054688,
-    "y": 391.6979293823242,
-    "z": "c632d855.425948",
+    "x": 1374.0040893554688,
+    "y": 369.6666784286499,
+    "z": "32a9459d.29ba0a",
     "wires": []
   }
 ]
index 2645685..38cff21 100644 (file)
 [
   {
-    "id": "c9ac4983.326288",
+    "id": "d86fdeaf.90856",
+    "type": "service-logic",
+    "name": "GENERIC-RESOURCE-API ${project.version}",
+    "module": "GENERIC-RESOURCE-API",
+    "version": "${project.version}",
+    "comments": "",
+    "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+    "outputs": 1,
+    "x": 182.8570785522461,
+    "y": 146.23809719085693,
+    "z": "662bc73e.2f2df8",
+    "wires": [
+      [
+        "8c1fcf5.c30ac3"
+      ]
+    ]
+  },
+  {
+    "id": "c3f643e9.793bf",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 259.03125,
-    "y": 199.03125,
-    "z": "33fa79d5.e5dbd6",
+    "x": 107.57137298583984,
+    "y": 105.99998569488525,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "a919b1fb.cf167"
+        "d86fdeaf.90856"
       ]
     ]
   },
   {
-    "id": "a919b1fb.cf167",
-    "type": "service-logic",
-    "name": "GENERIC-RESOURCE-API ${project.version}",
-    "module": "GENERIC-RESOURCE-API",
-    "version": "${project.version}",
+    "id": "8c1fcf5.c30ac3",
+    "type": "method",
+    "name": "method site-vnf-topology-operation-deactivate",
+    "xml": "<method rpc='site-vnf-topology-operation-deactivate' mode='sync'>",
     "comments": "",
-    "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 471.03125381469727,
-    "y": 271.0312671661377,
-    "z": "33fa79d5.e5dbd6",
+    "x": 176,
+    "y": 185.99997997283936,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "20189583.354efa"
+        "ed73a4d4.18b998"
       ]
     ]
   },
   {
-    "id": "20189583.354efa",
-    "type": "method",
-    "name": "sdwan-get-site-param",
-    "xml": "<method rpc='sdwan-get-site-param' mode='sync'>\n",
-    "comments": "",
+    "id": "ed73a4d4.18b998",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
     "outputs": 1,
-    "x": 459.0313720703125,
-    "y": 359.03125,
-    "z": "33fa79d5.e5dbd6",
+    "x": 216.73809814453125,
+    "y": 257.69349098205566,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "c2456569.00bd88"
+        "59f08d7c.e40f14",
+        "c44bdf39.f49ac",
+        "af671a8b.af38d8",
+        "35b8b725.755a88",
+        "6ebc8511.a2521c",
+        "cf959324.083ab",
+        "82cb066d.91c668",
+        "2ec82407.2cc83c",
+        "ab2363bc.936b4"
       ]
     ]
   },
   {
-    "id": "c2456569.00bd88",
+    "id": "6ebc8511.a2521c",
     "type": "block",
     "name": "block : atomic",
-    "xml": "<block atomic=\"true\">\n",
-    "atomic": "false",
-    "comments": "",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
     "outputs": 1,
-    "x": 466.03126525878906,
-    "y": 445.0313081741333,
-    "z": "33fa79d5.e5dbd6",
+    "x": 623.7856979370117,
+    "y": 122.8095064163208,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "4e2d26a4.4c1808"
+        "3eca00ab.dea9f",
+        "33bd2a9b.930326",
+        "fb6a76d8.c72038",
+        "d8062777.1e2a88"
       ]
     ]
   },
   {
-    "id": "4e2d26a4.4c1808",
-    "type": "for",
-    "name": "for each sdwan-get-request-input-param",
-    "xml": "<for index='idx' start='0' end='`$vnf-request-input.vnf-input-parameters.param_length`' >\n\n",
+    "id": "3eca00ab.dea9f",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 502.6980285644531,
-    "y": 527.697904586792,
-    "z": "33fa79d5.e5dbd6",
+    "x": 903.6747055053711,
+    "y": 148.14282417297363,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "e3603253.51629"
+        "b63df83d.881f98",
+        "2d9f4a28.834cf6"
       ]
     ]
   },
   {
-    "id": "e3603253.51629",
-    "type": "block",
-    "name": "block",
-    "xml": "<block>\n",
-    "atomic": "false",
+    "id": "b63df83d.881f98",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 789.5315780639648,
-    "y": 445.03135204315186,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1157.2858276367188,
+    "y": 129.80951118469238,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "4fbcc568.ce097c",
-        "9e4fbe84.7d2fb",
-        "ed14265a.99d948",
-        "773d0e91.45e91",
-        "a690711f.67d26",
-        "f96e2736.deb9e8",
-        "5bc913df.9a308c",
-        "8619f18f.0dd93",
-        "1ee73b7b.ea9285",
-        "5cd558f4.7f3258",
-        "dbf73ee2.461c2",
-        "bbcb741c.0eb968",
-        "cd952f17.46c77"
+        "ce144d22.a6862"
       ]
     ]
   },
   {
-    "id": "4fbcc568.ce097c",
-    "type": "returnSuccess",
-    "name": "return success",
-    "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+    "id": "ce144d22.a6862",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 993.0323181152344,
-    "y": 814.032012462616,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1331.2858428955078,
+    "y": 129.80951118469238,
+    "z": "662bc73e.2f2df8",
     "wires": []
   },
   {
-    "id": "9e4fbe84.7d2fb",
-    "type": "switchNode",
-    "name": "switch name",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`\">\n",
+    "id": "2d9f4a28.834cf6",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1009.0312881469727,
-    "y": 241.031325340271,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1140.7857971191406,
+    "y": 165.80952167510986,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "3261cfb2.83caf"
+        "5e80a5f7.14668c"
       ]
     ]
   },
   {
-    "id": "3261cfb2.83caf",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
+    "id": "5e80a5f7.14668c",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
     "outputs": 1,
-    "x": 1151.0312881469727,
-    "y": 242.031325340271,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1322.7859954833984,
+    "y": 176.80952739715576,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "e4e6bc65.0ec81"
+        "68893bf6.030534",
+        "ef8a4172.bf9b"
       ]
     ]
   },
   {
-    "id": "e4e6bc65.0ec81",
-    "type": "set",
-    "name": "set name",
-    "xml": "<set>\n<parameter name='prop.device.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "id": "ef8a4172.bf9b",
+    "type": "switchNode",
+    "name": "switch tmp.vidx ",
+    "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
     "comments": "",
-    "x": 1285.0312881469727,
-    "y": 242.63133144378662,
-    "z": "33fa79d5.e5dbd6",
-    "wires": []
+    "outputs": 1,
+    "x": 1512.785888671875,
+    "y": 193.80952167510986,
+    "z": "662bc73e.2f2df8",
+    "wires": [
+      [
+        "3898f902.da4f46"
+      ]
+    ]
   },
   {
-    "id": "ed14265a.99d948",
+    "id": "fb6a76d8.c72038",
     "type": "switchNode",
-    "name": "switch name",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`\">\n",
+    "name": "switch vnf-level-oper-status",
+    "xml": "<switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1005.0313949584961,
-    "y": 332.0312833786011,
-    "z": "33fa79d5.e5dbd6",
+    "x": 866.952507019043,
+    "y": 243.69837760925293,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "81ce8f79.a82a1"
+        "9a6e14da.4f6898",
+        "830ab1c4.069de"
       ]
     ]
   },
   {
-    "id": "81ce8f79.a82a1",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
+    "id": "9a6e14da.4f6898",
+    "type": "outcome",
+    "name": "outcome Active",
+    "xml": "<outcome value='Active'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1183.0314083099365,
-    "y": 335.0312833786011,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1173.7858200073242,
+    "y": 224.8094997406006,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "6599a894.64adf8"
+        "c41182b7.2c8a4"
       ]
     ]
   },
   {
-    "id": "6599a894.64adf8",
-    "type": "set",
-    "name": "set name",
-    "xml": "<set>\n<parameter name='prop.site.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "id": "830ab1c4.069de",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
     "comments": "",
-    "x": 1330.0314178466797,
-    "y": 334.6312789916992,
-    "z": "33fa79d5.e5dbd6",
+    "outputs": 1,
+    "x": 1141.7858200073242,
+    "y": 264.8094997406006,
+    "z": "662bc73e.2f2df8",
+    "wires": [
+      [
+        "ff8457d6.891c88"
+      ]
+    ]
+  },
+  {
+    "id": "ff8457d6.891c88",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`\" />",
+    "comments": "",
+    "x": 1299.2858200073242,
+    "y": 264.8094997406006,
+    "z": "662bc73e.2f2df8",
     "wires": []
   },
   {
-    "id": "5cd558f4.7f3258",
+    "id": "33bd2a9b.930326",
     "type": "switchNode",
-    "name": "switch type",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'type'`\">\n",
+    "name": "switch vnf-id",
+    "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 983.9270668029785,
-    "y": 630.0047330856323,
-    "z": "33fa79d5.e5dbd6",
+    "x": 845.7858047485352,
+    "y": 88.80949878692627,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "48783360.87fe7c"
+        "660d1ca1.7f5824"
       ]
     ]
   },
   {
-    "id": "48783360.87fe7c",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
+    "id": "660d1ca1.7f5824",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
     "comments": "",
     "outputs": 1,
-    "x": 1162.9269104003906,
-    "y": 631.0046529769897,
-    "z": "33fa79d5.e5dbd6",
+    "x": 988.7857971191406,
+    "y": 88.80950164794922,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "b59fb35a.098b9"
+        "da90fecc.888a8"
       ]
     ]
   },
   {
-    "id": "b59fb35a.098b9",
-    "type": "set",
-    "name": "set type",
-    "xml": "<set>\n<parameter name='prop.site.type' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n<parameter name='prop.site.sdwan' value='true' />",
+    "id": "da90fecc.888a8",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-information.vnf-id is a required input\" />\n",
     "comments": "",
-    "x": 1312.9269218444824,
-    "y": 632.6046676635742,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1137.2857971191406,
+    "y": 88.8095006942749,
+    "z": "662bc73e.2f2df8",
     "wires": []
   },
   {
-    "id": "dbf73ee2.461c2",
-    "type": "switchNode",
-    "name": "switch role",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'role'`\">\n",
+    "id": "68893bf6.030534",
+    "type": "for",
+    "name": "for vidx..service-data.vnfs.vnf[]",
+    "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 984.9267425537109,
-    "y": 674.0047731399536,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1558.2859191894531,
+    "y": 155.80951118469238,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "8ceba6c3.5c88c8"
+        "32659e4e.c6e252"
       ]
     ]
   },
   {
-    "id": "8ceba6c3.5c88c8",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
+    "id": "32659e4e.c6e252",
+    "type": "switchNode",
+    "name": "switch vnf-id found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1154.9267501831055,
-    "y": 684.0047359466553,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1844.2859191894531,
+    "y": 155.80951118469238,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "832f2789.d30da8"
+        "760edd7e.39ca84"
       ]
     ]
   },
   {
-    "id": "773d0e91.45e91",
-    "type": "switchNode",
-    "name": "switch location-name",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'location-name'`\">\n",
+    "id": "760edd7e.39ca84",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1027.9265823364258,
-    "y": 374.0045919418335,
-    "z": "33fa79d5.e5dbd6",
+    "x": 2029.7859954833984,
+    "y": 155.80951309204102,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "85468ea4.c68d2"
+        "e7380240.e1e34"
       ]
     ]
   },
   {
-    "id": "85468ea4.c68d2",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
+    "id": "e7380240.e1e34",
+    "type": "set",
+    "name": "set tmp.vidx and ctx.vnf-data",
+    "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].vnf-data.`' />\n",
+    "comments": "",
+    "x": 2237.785919189453,
+    "y": 155.80951118469238,
+    "z": "662bc73e.2f2df8",
+    "wires": []
+  },
+  {
+    "id": "9f76132b.ac81b",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-information.vnf-id not found in service-data\" />\n",
+    "comments": "",
+    "x": 1804.285888671875,
+    "y": 193.80952167510986,
+    "z": "662bc73e.2f2df8",
+    "wires": []
+  },
+  {
+    "id": "3898f902.da4f46",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1191.9267539978027,
-    "y": 374.0045928955078,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1666.785888671875,
+    "y": 193.80952167510986,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "bc94b24c.9dce8"
+        "9f76132b.ac81b"
       ]
     ]
   },
   {
-    "id": "bc94b24c.9dce8",
+    "id": "59f08d7c.e40f14",
     "type": "set",
-    "name": "set location-name",
-    "xml": "<set>\n<parameter name='prop.site.location-name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "name": "set vnf in service-data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />",
     "comments": "",
-    "x": 1353.9267654418945,
-    "y": 373.6046495437622,
-    "z": "33fa79d5.e5dbd6",
+    "x": 610.5715866088867,
+    "y": 591.0002222061157,
+    "z": "662bc73e.2f2df8",
     "wires": []
   },
   {
-    "id": "a690711f.67d26",
-    "type": "switchNode",
-    "name": "switch address",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'address'`\">\n",
+    "id": "c44bdf39.f49ac",
+    "type": "set",
+    "name": "set vnfId and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",
+    "comments": "",
+    "x": 632.1271820068359,
+    "y": 628.2224435806274,
+    "z": "662bc73e.2f2df8",
+    "wires": []
+  },
+  {
+    "id": "35b8b725.755a88",
+    "type": "returnSuccess",
+    "name": "return success",
+    "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
+    "x": 585.9049634933472,
+    "y": 778.7778730392456,
+    "z": "662bc73e.2f2df8",
+    "wires": []
+  },
+  {
+    "id": "af671a8b.af38d8",
+    "type": "set",
+    "name": "set vnf-level-oper-status to PendingDelete",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
+    "comments": "",
+    "x": 670.5715866088867,
+    "y": 672.0002851486206,
+    "z": "662bc73e.2f2df8",
+    "wires": []
+  },
+  {
+    "id": "c41182b7.2c8a4",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
     "outputs": 1,
-    "x": 1010.9265823364258,
-    "y": 410.00459575653076,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1367.713279724121,
+    "y": 228.88886868953705,
+    "z": "662bc73e.2f2df8",
     "wires": [
-      [
-        "5c1e569f.3488e8"
-      ]
+      []
     ]
   },
   {
-    "id": "5c1e569f.3488e8",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
+    "id": "d8062777.1e2a88",
+    "type": "execute",
+    "name": "execute requiredParameters",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"vnf-topology-operation-input.vnf-information.vnf-id\" value=\"$vnf-topology-operation-input.vnf-information.vnf-id\"/>\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1180.9264297485352,
-    "y": 418.00459480285645,
-    "z": "33fa79d5.e5dbd6",
+    "x": 895.5716171264648,
+    "y": 50.999999046325684,
+    "z": "662bc73e.2f2df8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "b2ebc544.1e6068",
+    "type": "comment",
+    "name": "site-vnf-topology-operation-deactivate",
+    "info": "",
+    "comments": "",
+    "x": 489.8570785522461,
+    "y": 51.238097190856934,
+    "z": "662bc73e.2f2df8",
+    "wires": []
+  },
+  {
+    "id": "cf959324.083ab",
+    "type": "for",
+    "name": "for loop idx - VNF input parameters",
+    "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 667.8572273254395,
+    "y": 322.00002098083496,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "b976d806.368f48"
+        "fe2f83f9.8338"
       ]
     ]
   },
   {
-    "id": "b976d806.368f48",
-    "type": "set",
-    "name": "set location-address",
-    "xml": "<set>\n<parameter name='prop.site.location-address' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "id": "fe2f83f9.8338",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
     "comments": "",
-    "x": 1368.9266052246094,
-    "y": 413.60457038879395,
-    "z": "33fa79d5.e5dbd6",
-    "wires": []
+    "outputs": 1,
+    "x": 874.7529640197754,
+    "y": 321.92188453674316,
+    "z": "662bc73e.2f2df8",
+    "wires": [
+      [
+        "550bedb1.f170d4",
+        "b37adbd9.2464a8"
+      ]
+    ]
   },
   {
-    "id": "f96e2736.deb9e8",
+    "id": "550bedb1.f170d4",
     "type": "switchNode",
-    "name": "switch postcode",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'postcode'`\">\n",
+    "name": "switch role",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'role'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1011.9265823364258,
-    "y": 452.0045566558838,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1011.8701667785645,
+    "y": 321.89532470703125,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "e2c2334c.42179"
+        "de4a1711.c3fb08"
       ]
     ]
   },
   {
-    "id": "e2c2334c.42179",
+    "id": "de4a1711.c3fb08",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1176.9267539978027,
-    "y": 451.0045566558838,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1151.870174407959,
+    "y": 322.89532470703125,
+    "z": "662bc73e.2f2df8",
+    "wires": [
+      [
+        "d4dca6e6.2c3458"
+      ]
+    ]
+  },
+  {
+    "id": "d4dca6e6.2c3458",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1300.419822692871,
+    "y": 323.92201805114746,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "8da40933.edfaf8"
+        "8481bd23.50386"
       ]
     ]
   },
   {
-    "id": "8da40933.edfaf8",
+    "id": "8481bd23.50386",
     "type": "set",
-    "name": "set location-postcode",
-    "xml": "<set>\n<parameter name='prop.site.location-postcode' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "name": "set role",
+    "xml": "<set>\n<parameter name='prop.site.role' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n<parameter name='prop.site.sdwan' value=\"true\" />\n",
     "comments": "",
-    "x": 1363.9266052246094,
-    "y": 452.6045732498169,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1444.7531852722168,
+    "y": 324.92203521728516,
+    "z": "662bc73e.2f2df8",
     "wires": []
   },
   {
-    "id": "bbcb741c.0eb968",
+    "id": "82cb066d.91c668",
     "type": "switchNode",
-    "name": "switch controlPoint",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'controlPoint'`\">\n",
+    "name": "switch prop.site.sdwan",
+    "xml": "<switch test=\"`$prop.site.sdwan`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 1003.8099670410156,
-    "y": 734.0315742492676,
-    "z": "33fa79d5.e5dbd6",
+    "x": 641.8570785522461,
+    "y": 477.00004291534424,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "6a2baa92.dd77f4"
+        "44689f8b.efef2"
       ]
     ]
   },
   {
-    "id": "6a2baa92.dd77f4",
+    "id": "44689f8b.efef2",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1165.8098907470703,
-    "y": 730.0315971374512,
-    "z": "33fa79d5.e5dbd6",
+    "x": 822.8572120666504,
+    "y": 478.0000696182251,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "fd4f1adb.5ec4b8"
+        "92d1a385.88b4d"
       ]
     ]
   },
   {
-    "id": "9ab3bfdb.b8822",
-    "type": "set",
-    "name": "set role",
-    "xml": "<set>\n<parameter name='prop.site.role' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n\n",
+    "id": "1f34e7d.f4ed818",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
     "comments": "",
-    "x": 1526.8100395202637,
-    "y": 660.0315113067627,
-    "z": "33fa79d5.e5dbd6",
-    "wires": []
+    "outputs": 1,
+    "x": 1527.357234954834,
+    "y": 446.00012397766113,
+    "z": "662bc73e.2f2df8",
+    "wires": [
+      [
+        "444dfd43.933654"
+      ]
+    ]
   },
   {
-    "id": "44d73030.0da8d",
+    "id": "444dfd43.933654",
     "type": "set",
-    "name": "set controlPoint",
-    "xml": "<set>\n<parameter name='prop.site.controlPoint' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n\n",
+    "name": "set controller data",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
     "comments": "",
-    "x": 1550.8099174499512,
-    "y": 750.0315952301025,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1715.8573303222656,
+    "y": 440.0001336336136,
+    "z": "662bc73e.2f2df8",
     "wires": []
   },
   {
-    "id": "a9190ca.3c93df",
-    "type": "execute",
-    "name": "execute split roles",
-    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.site.role`'/>\n<parameter name=\"regex\" value=\",\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.site.roles\"/>\n",
+    "id": "20f5a47d.bf5c7c",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1565.4762649536133,
-    "y": 707.0314292907715,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1530.848201751709,
+    "y": 493.5741596221924,
+    "z": "662bc73e.2f2df8",
     "wires": [
-      []
+      [
+        "efd0bf42.a45d2"
+      ]
     ]
   },
   {
-    "id": "832f2789.d30da8",
-    "type": "block",
-    "name": "block : atomic",
-    "xml": "<block atomic=\"true\">",
-    "atomic": "true",
+    "id": "efd0bf42.a45d2",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+    "comments": "",
+    "x": 1704.4196128845215,
+    "y": 481.85989570617676,
+    "z": "662bc73e.2f2df8",
+    "wires": []
+  },
+  {
+    "id": "43e41f52.73e87",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
     "outputs": 1,
-    "x": 1312.4764022827148,
-    "y": 687.0314292907715,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1523.181209564209,
+    "y": 534.9074726104736,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "9ab3bfdb.b8822",
-        "a9190ca.3c93df"
+        "b91e604b.71e8a"
       ]
     ]
   },
   {
-    "id": "fd4f1adb.5ec4b8",
-    "type": "block",
-    "name": "block : atomic",
-    "xml": "<block atomic=\"true\">",
-    "atomic": "true",
+    "id": "b91e604b.71e8a",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+    "comments": "",
+    "x": 1710.9537658691406,
+    "y": 530.3466653823853,
+    "z": "662bc73e.2f2df8",
+    "wires": []
+  },
+  {
+    "id": "5edbf1df.1812f",
+    "type": "get-resource",
+    "name": "get-resource esr-thirdparty-sdnc",
+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1324.4762382507324,
-    "y": 734.0313529968262,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1260.3571472167969,
+    "y": 494.0001298189163,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "44d73030.0da8d",
-        "2ecea48f.cefbcc"
+        "1f34e7d.f4ed818",
+        "20f5a47d.bf5c7c",
+        "43e41f52.73e87"
       ]
     ]
   },
   {
-    "id": "2ecea48f.cefbcc",
+    "id": "850d49b7.5d6588",
     "type": "execute",
-    "name": "execute split control points",
-    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.site.controlPoint`'/>\n<parameter name=\"regex\" value=\",\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.site.controlpoints\"/>\n",
+    "name": "execute RestApiCallNode Create  SDWAN site",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-site-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/sites/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"site-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
     "comments": "",
     "outputs": 1,
-    "x": 1575.4763946533203,
-    "y": 802.031455039978,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1288.8574905395508,
+    "y": 692.0002012252808,
+    "z": "662bc73e.2f2df8",
+    "wires": [
+      [
+        "ea765af1.578958",
+        "a315c86f.c08e38"
+      ]
+    ]
+  },
+  {
+    "id": "27adc5f9.0dcbfa",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1782.5236206054688,
+    "y": 665.8889733552933,
+    "z": "662bc73e.2f2df8",
     "wires": [
       []
     ]
   },
   {
-    "id": "5bc913df.9a308c",
-    "type": "switchNode",
-    "name": "switch latitude",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'latitude'`\">\n",
+    "id": "ffec3641.8f04a8",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",
+    "comments": "",
+    "x": 1757.96826171875,
+    "y": 727.4443560838699,
+    "z": "662bc73e.2f2df8",
+    "wires": []
+  },
+  {
+    "id": "a315c86f.c08e38",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1002.1428909301758,
-    "y": 496.03133392333984,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1612.96826171875,
+    "y": 724.4443560838699,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "408fca65.ceeb84"
+        "ffec3641.8f04a8"
       ]
     ]
   },
   {
-    "id": "408fca65.ceeb84",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
+    "id": "ea765af1.578958",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1178.1427383422852,
-    "y": 491.03129291534424,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1609.4126358032227,
+    "y": 666.1111413240433,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "fff4ca4.988db38"
+        "27adc5f9.0dcbfa"
       ]
     ]
   },
   {
-    "id": "fff4ca4.988db38",
-    "type": "set",
-    "name": "set location-latitude",
-    "xml": "<set>\n<parameter name='prop.site.location-latitude' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "id": "326c4c2.f406bb4",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
     "comments": "",
-    "x": 1352.1427459716797,
-    "y": 489.63130950927734,
-    "z": "33fa79d5.e5dbd6",
-    "wires": []
+    "outputs": 1,
+    "x": 1526.611125946045,
+    "y": 572.0040856599808,
+    "z": "662bc73e.2f2df8",
+    "wires": [
+      [
+        "9184b52b.37e358"
+      ]
+    ]
   },
   {
-    "id": "8619f18f.0dd93",
-    "type": "switchNode",
-    "name": "switch longitude",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'longitude'`\">\n",
+    "id": "e3754930.79e2e8",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1005.1428909301758,
-    "y": 536.0313768386841,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1518.861125946045,
+    "y": 613.646968960762,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "f2c6dced.9082e"
+        "41ddc45.064fd3c"
       ]
     ]
   },
   {
-    "id": "f2c6dced.9082e",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
+    "id": "41ddc45.064fd3c",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
     "comments": "",
     "outputs": 1,
-    "x": 1177.1428985595703,
-    "y": 531.031418800354,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1644.944622039795,
+    "y": 613.8930016756058,
+    "z": "662bc73e.2f2df8",
     "wires": [
-      [
-        "dc9fd2db.e7bb7"
-      ]
+      []
     ]
   },
   {
-    "id": "dc9fd2db.e7bb7",
+    "id": "9184b52b.37e358",
     "type": "set",
-    "name": "set location-latitude",
-    "xml": "<set>\n<parameter name='prop.site.location-latitude' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "name": "set token-id",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
     "comments": "",
-    "x": 1359.1427536010742,
-    "y": 534.6312704086304,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1663.611125946045,
+    "y": 572.0040856599808,
+    "z": "662bc73e.2f2df8",
     "wires": []
   },
   {
-    "id": "95b5a3d.f7b926",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
+    "id": "6736685b.bef9d8",
+    "type": "comment",
+    "name": "tmp.thirdparty-sdnc-id is hardcoded value?",
+    "info": "",
     "comments": "",
+    "x": 1256.8610382080078,
+    "y": 461.0040513277054,
+    "z": "662bc73e.2f2df8",
+    "wires": []
+  },
+  {
+    "id": "92d1a385.88b4d",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
     "outputs": 1,
-    "x": 1168.1428985595703,
-    "y": 581.031421661377,
-    "z": "33fa79d5.e5dbd6",
+    "x": 983.8571472167969,
+    "y": 478.66657733917236,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "9b797058.27cec"
+        "5edbf1df.1812f",
+        "5a50b7d1.a81c28",
+        "850d49b7.5d6588"
       ]
     ]
   },
   {
-    "id": "e75918af.752508",
-    "type": "set",
-    "name": "set emails",
-    "xml": "<set>\n<parameter name='prop.site.emails' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "id": "2ec82407.2cc83c",
+    "type": "save",
+    "name": "update siteInstance configuration in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \n      key='site-resource.id = $vnf-topology-operation-input.vnf-information.vnf-id' >\n<parameter name='id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />      \n<parameter name='operational-status' value='PendingDelete' />\n",
     "comments": "",
-    "x": 1526.142593383789,
-    "y": 549.6312737464905,
-    "z": "33fa79d5.e5dbd6",
-    "wires": []
+    "outputs": 1,
+    "x": 663.8571701049805,
+    "y": 711.0001020431519,
+    "z": "662bc73e.2f2df8",
+    "wires": [
+      []
+    ]
   },
   {
-    "id": "1ee73b7b.ea9285",
+    "id": "b37adbd9.2464a8",
     "type": "switchNode",
-    "name": "switch emails",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'emails'`\">\n",
+    "name": "switch siteId",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'siteId'`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 995.1429672241211,
-    "y": 581.031421661377,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1011.8700637817383,
+    "y": 396.8953676223755,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "95b5a3d.f7b926"
+        "a2554bc6.d49ce8"
       ]
     ]
   },
   {
-    "id": "931cb5f.e240e48",
-    "type": "execute",
-    "name": "execute split emails",
-    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.site.emails`'/>\n<parameter name=\"regex\" value=\",\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.site.email\"/>\n",
+    "id": "a2554bc6.d49ce8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1551.808937072754,
-    "y": 596.0311765670776,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1151.8700714111328,
+    "y": 397.8953676223755,
+    "z": "662bc73e.2f2df8",
     "wires": [
-      []
+      [
+        "6ecb0b06.7fedc4"
+      ]
     ]
   },
   {
-    "id": "9b797058.27cec",
+    "id": "6ecb0b06.7fedc4",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1330.1429061889648,
-    "y": 582.0313391685486,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1300.419719696045,
+    "y": 398.9220609664917,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "e75918af.752508",
-        "931cb5f.e240e48"
+        "83210993.fce798"
       ]
     ]
   },
   {
-    "id": "cd952f17.46c77",
-    "type": "switchNode",
-    "name": "switch description",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'description'`\">\n",
+    "id": "83210993.fce798",
+    "type": "set",
+    "name": "set siteId",
+    "xml": "<set>\n<parameter name='prop.site.siteId' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n\n",
     "comments": "",
-    "outputs": 1,
-    "x": 1010.03125,
-    "y": 286.03125,
-    "z": "33fa79d5.e5dbd6",
-    "wires": [
-      [
-        "e92216b6.4260b8"
-      ]
-    ]
+    "x": 1444.7530822753906,
+    "y": 399.9220781326294,
+    "z": "662bc73e.2f2df8",
+    "wires": []
   },
   {
-    "id": "e92216b6.4260b8",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
+    "id": "48d793e7.102a6c",
+    "type": "comment",
+    "name": "Get siteId to delete",
+    "info": "",
+    "comments": "",
+    "x": 1023.857048034668,
+    "y": 366.0000238418579,
+    "z": "662bc73e.2f2df8",
+    "wires": []
+  },
+  {
+    "id": "5a50b7d1.a81c28",
+    "type": "execute",
+    "name": "execute RestApiCallNode Get token",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
     "comments": "",
     "outputs": 1,
-    "x": 1152.03125,
-    "y": 287.03125,
-    "z": "33fa79d5.e5dbd6",
+    "x": 1277.0000762939453,
+    "y": 595.0000381469727,
+    "z": "662bc73e.2f2df8",
     "wires": [
       [
-        "adffc0ee.7e0ff"
+        "326c4c2.f406bb4",
+        "e3754930.79e2e8"
       ]
     ]
   },
   {
-    "id": "adffc0ee.7e0ff",
-    "type": "set",
-    "name": "set description",
-    "xml": "<set>\n<parameter name='prop.device.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "id": "ab2363bc.936b4",
+    "type": "execute",
+    "name": "execute Properties",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n    <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",
     "comments": "",
-    "x": 1286.03125,
-    "y": 287.6312561035156,
-    "z": "33fa79d5.e5dbd6",
-    "wires": []
+    "outputs": 1,
+    "x": 617,
+    "y": 232,
+    "z": "662bc73e.2f2df8",
+    "wires": [
+      []
+    ]
   }
 ]
index 01081e1..0426b67 100644 (file)
@@ -1,20 +1,20 @@
 [
   {
-    "id": "a7726866.c82328",
+    "id": "1e0cb698.a04019",
     "type": "dgstart",
     "name": "DGSTART",
     "outputs": 1,
-    "x": 195,
-    "y": 120.41365623474121,
-    "z": "3abedd3.792ad22",
+    "x": 107.57138061523438,
+    "y": 61.999998569488525,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "3384c619.e1dafa"
+        "277c65c2.ed804a"
       ]
     ]
   },
   {
-    "id": "3384c619.e1dafa",
+    "id": "277c65c2.ed804a",
     "type": "service-logic",
     "name": "GENERIC-RESOURCE-API ${project.version}",
     "module": "GENERIC-RESOURCE-API",
     "comments": "",
     "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
     "outputs": 1,
-    "x": 270.28570556640625,
-    "y": 160.6517677307129,
-    "z": "3abedd3.792ad22",
+    "x": 182.85708618164062,
+    "y": 102.2381100654602,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "ca099e7c.f45ae"
+        "a7e1f73c.bc4948"
       ]
     ]
   },
   {
-    "id": "ca099e7c.f45ae",
+    "id": "a7e1f73c.bc4948",
     "type": "method",
     "name": "method site-vnf-topology-operation-delete",
     "xml": "<method rpc='site-vnf-topology-operation-delete' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 250.42861938476562,
-    "y": 296.4136562347412,
-    "z": "3abedd3.792ad22",
+    "x": 163,
+    "y": 237.99999856948853,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "cdd2879.5989078"
+        "bdf1765.0f24c88"
       ]
     ]
   },
   {
-    "id": "965a63f9.a0196",
+    "id": "ca44419d.5ab99",
     "type": "comment",
     "name": "site-vnf-topology-operation-delete",
     "info": "",
     "comments": "",
-    "x": 644.3449172973633,
-    "y": 194.00005531311035,
-    "z": "3abedd3.792ad22",
+    "x": 556.9162979125977,
+    "y": 135.58639764785767,
+    "z": "4e13a6ca.bd7208",
     "wires": []
   },
   {
-    "id": "cdd2879.5989078",
+    "id": "bdf1765.0f24c88",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 271.66666412353516,
-    "y": 422.0803279876709,
-    "z": "3abedd3.792ad22",
+    "x": 184.23804473876953,
+    "y": 363.6666703224182,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "e74f18c4.f49f98",
-        "e52597d4.97d0a8",
-        "6a942976.e989d8",
-        "6ffb0bce.7eb574",
-        "ba634d70.518cb",
-        "52c3ad0c.e6f634",
-        "26f755dc.77218a",
-        "ea9d888e.357438",
-        "a4fc2f21.bb9f6"
+        "372cbde7.587372",
+        "5c8ef11.4d9e21",
+        "c063c177.c449a",
+        "b76f0527.dbb128",
+        "bcc212f6.b90ab",
+        "12ca3dc.2d458c2",
+        "c460861f.38f098",
+        "6a5ea2dd.9c807c",
+        "55ed5ce8.2b1ae4",
+        "ba708495.2ebbe8",
+        "4890886d.4993b8"
       ]
     ]
   },
   {
-    "id": "26f755dc.77218a",
+    "id": "bcc212f6.b90ab",
     "type": "switchNode",
     "name": "switch service-data.vnfs.vnf_length",
     "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 733.0947036743164,
-    "y": 355.6748266220093,
-    "z": "3abedd3.792ad22",
+    "x": 645.6660842895508,
+    "y": 297.2611689567566,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "41237296.cb603c",
-        "1b9b9bc6.ffabe4"
+        "d5d54ea4.ba5c6",
+        "291bcf0.559d232"
       ]
     ]
   },
   {
-    "id": "41237296.cb603c",
+    "id": "d5d54ea4.ba5c6",
     "type": "other",
     "name": "outcome Null",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 997.8170166015625,
-    "y": 338.23044872283936,
-    "z": "3abedd3.792ad22",
+    "x": 910.3883972167969,
+    "y": 279.81679105758667,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "37a1ebd3.c0d944"
+        "30ee642f.b18d2c"
       ]
     ]
   },
   {
-    "id": "37a1ebd3.c0d944",
+    "id": "30ee642f.b18d2c",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 1178.8168869018555,
-    "y": 333.23032665252686,
-    "z": "3abedd3.792ad22",
+    "x": 1091.3882675170898,
+    "y": 274.81666898727417,
+    "z": "4e13a6ca.bd7208",
     "wires": []
   },
   {
-    "id": "1b9b9bc6.ffabe4",
+    "id": "291bcf0.559d232",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 983.3170166015625,
-    "y": 390.230411529541,
-    "z": "3abedd3.792ad22",
+    "x": 895.8883972167969,
+    "y": 331.81675386428833,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "af3a8c66.5e3d1"
+        "fb8a0e1a.913bb"
       ]
     ]
   },
   {
-    "id": "af3a8c66.5e3d1",
+    "id": "fb8a0e1a.913bb",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1155.316722869873,
-    "y": 390.2304096221924,
-    "z": "3abedd3.792ad22",
+    "x": 1067.8881034851074,
+    "y": 331.8167519569397,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "2540b8b2.d6e138",
-        "8b080a11.ba38d8"
+        "5412f014.12424",
+        "97fd60bf.39c2c"
       ]
     ]
   },
   {
-    "id": "8b080a11.ba38d8",
+    "id": "97fd60bf.39c2c",
     "type": "switchNode",
     "name": "switch tmp.nidx ",
     "xml": "<switch test=\"`$tmp.nidx`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1330.31689453125,
-    "y": 409.23033142089844,
-    "z": "3abedd3.792ad22",
+    "x": 1242.8882751464844,
+    "y": 350.81667375564575,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "29f38b0a.335fc4"
+        "7e0c16e8.e0d2b8"
       ]
     ]
   },
   {
-    "id": "52c3ad0c.e6f634",
+    "id": "b76f0527.dbb128",
     "type": "switchNode",
     "name": "switch vnf-level-oper-status",
     "xml": "<switch test='`$service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 703.4837036132812,
-    "y": 430.1192903518677,
-    "z": "3abedd3.792ad22",
+    "x": 616.0550842285156,
+    "y": 371.705632686615,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "80dde12f.593ab",
-        "95f83539.1330d8"
+        "2c1cb407.0b20fc",
+        "7a49e612.028b78"
       ]
     ]
   },
   {
-    "id": "80dde12f.593ab",
+    "id": "2c1cb407.0b20fc",
     "type": "outcome",
     "name": "outcome PendingDelete",
     "xml": "<outcome value='PendingDelete'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 994.3169708251953,
-    "y": 434.23041343688965,
-    "z": "3abedd3.792ad22",
+    "x": 906.8883514404297,
+    "y": 375.81675577163696,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "c271a18f.ad7ae"
+        "4b86cba0.d35104"
       ]
     ]
   },
   {
-    "id": "95f83539.1330d8",
+    "id": "7a49e612.028b78",
     "type": "other",
     "name": "other",
     "xml": "<outcome value='Other'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 940.3170318603516,
-    "y": 481.2304172515869,
-    "z": "3abedd3.792ad22",
+    "x": 852.8884124755859,
+    "y": 422.81675958633423,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "c4d6206d.a0bea"
+        "cae57504.d32048"
       ]
     ]
   },
   {
-    "id": "c4d6206d.a0bea",
+    "id": "cae57504.d32048",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`\" />",
     "comments": "",
-    "x": 1099.8167991638184,
-    "y": 484.2304162979126,
-    "z": "3abedd3.792ad22",
+    "x": 1012.3881797790527,
+    "y": 425.8167586326599,
+    "z": "4e13a6ca.bd7208",
     "wires": []
   },
   {
-    "id": "ea9d888e.357438",
+    "id": "12ca3dc.2d458c2",
     "type": "switchNode",
     "name": "switch vnf-id",
     "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\">\n",
     "comments": "",
     "outputs": 1,
-    "x": 669.3170204162598,
-    "y": 311.23042011260986,
-    "z": "3abedd3.792ad22",
+    "x": 581.8884010314941,
+    "y": 252.81676244735718,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "62e62064.0111a"
+        "479f1e18.fbfce"
       ]
     ]
   },
   {
-    "id": "62e62064.0111a",
+    "id": "479f1e18.fbfce",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>",
     "comments": "",
     "outputs": 1,
-    "x": 867.3170852661133,
-    "y": 301.230432510376,
-    "z": "3abedd3.792ad22",
+    "x": 779.8884658813477,
+    "y": 242.8167748451233,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "583791bd.81172"
+        "e26d76c0.5decd8"
       ]
     ]
   },
   {
-    "id": "583791bd.81172",
+    "id": "e26d76c0.5decd8",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-request-input.vnf-input-parameters.name is a required input\" />\n",
     "comments": "",
-    "x": 1033.8169708251953,
-    "y": 298.2304267883301,
-    "z": "3abedd3.792ad22",
+    "x": 946.3883514404297,
+    "y": 239.8167691230774,
+    "z": "4e13a6ca.bd7208",
     "wires": []
   },
   {
-    "id": "a4fc2f21.bb9f6",
+    "id": "c460861f.38f098",
     "type": "execute",
     "name": "execute requiredParameters",
     "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"vnf-topology-operation-input.vnf-information.vnf-id\" value=\"$vnf-topology-operation-input.vnf-information.vnf-id\"/>\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 726.8170776367188,
-    "y": 251.23041915893555,
-    "z": "3abedd3.792ad22",
+    "x": 639.3884582519531,
+    "y": 192.81676149368286,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       []
     ]
   },
   {
-    "id": "2540b8b2.d6e138",
+    "id": "5412f014.12424",
     "type": "for",
     "name": "for nidx..service-data.vnfs.vnf[]",
     "xml": "<for index='nidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 1390.8168983459473,
-    "y": 345.2303276062012,
-    "z": "3abedd3.792ad22",
+    "x": 1303.3882789611816,
+    "y": 286.8166699409485,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "58bd02b1.41b51c"
+        "148fbb0c.c24365"
       ]
     ]
   },
   {
-    "id": "58bd02b1.41b51c",
+    "id": "148fbb0c.c24365",
     "type": "switchNode",
     "name": "switch vnf-id found",
     "xml": "<switch test=\"`$service-data.vnfs.vnf[$nidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
     "comments": "",
     "outputs": 1,
-    "x": 1646.8169174194336,
-    "y": 345.2303276062012,
-    "z": "3abedd3.792ad22",
+    "x": 1559.388298034668,
+    "y": 286.8166699409485,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "c5d4dadf.96bed8"
+        "b65bbab.9ca2c48"
       ]
     ]
   },
   {
-    "id": "c5d4dadf.96bed8",
+    "id": "b65bbab.9ca2c48",
     "type": "outcomeTrue",
     "name": "true",
     "xml": "<outcome value='true'>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1823.3169708251953,
-    "y": 348.2303276062012,
-    "z": "3abedd3.792ad22",
+    "x": 1735.8883514404297,
+    "y": 289.8166699409485,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "fef684cd.0b0aa8"
+        "1a4ecfb7.7d8f8"
       ]
     ]
   },
   {
-    "id": "fef684cd.0b0aa8",
+    "id": "1a4ecfb7.7d8f8",
     "type": "set",
     "name": "set tmp.nidx and ctx.vnf-data",
     "xml": "<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$nidx].vnf-data.`' />\n",
     "comments": "",
-    "x": 1990.3169860839844,
-    "y": 409.2303276062012,
-    "z": "3abedd3.792ad22",
+    "x": 1902.8883666992188,
+    "y": 350.8166699409485,
+    "z": "4e13a6ca.bd7208",
     "wires": []
   },
   {
-    "id": "a5b8b731.dc3498",
+    "id": "e8e5a7c0.1c4938",
     "type": "returnFailure",
     "name": "return failure",
     "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
     "comments": "",
-    "x": 1635.816909790039,
-    "y": 409.23033142089844,
-    "z": "3abedd3.792ad22",
+    "x": 1548.3882904052734,
+    "y": 350.81667375564575,
+    "z": "4e13a6ca.bd7208",
     "wires": []
   },
   {
-    "id": "29f38b0a.335fc4",
+    "id": "7e0c16e8.e0d2b8",
     "type": "outcome",
     "name": "NULL",
     "xml": "<outcome value=''>\n",
     "comments": "",
     "outputs": 1,
-    "x": 1498.316909790039,
-    "y": 409.23033142089844,
-    "z": "3abedd3.792ad22",
+    "x": 1410.8882904052734,
+    "y": 350.81667375564575,
+    "z": "4e13a6ca.bd7208",
     "wires": [
       [
-        "a5b8b731.dc3498"
+        "e8e5a7c0.1c4938"
       ]
     ]
   },
   {
-    "id": "6ffb0bce.7eb574",
+    "id": "5c8ef11.4d9e21",
     "type": "set",
     "name": "set vnfId and vnf-object-path",
     "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='vnf-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vnf-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'` \" />",
     "comments": "",
-    "x": 681.3334350585938,
-    "y": 605.747073173523,
-    "z": "3abedd3.792ad22",
+    "x": 578.9050178527832,
+    "y": 641.3335304260254,
+    "z": "4e13a6ca.bd7208",
     "wires": []
   },
   {
-    "id": "ba634d70.518cb",
+    "id": "c063c177.c449a",
     "type": "returnSuccess",
     "name": "return success",
     "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
     "comments": "",
-    "x": 630.4445953369141,
-    "y": 731.3025035858154,
-    "z": "3abedd3.792ad22",
+    "x": 538.0161476135254,
+    "y": 759.8890404701233,
+    "z": "4e13a6ca.bd7208",
     "wires": []
   },
   {
-    "id": "e52597d4.97d0a8",
-    "type": "set",
-    "name": "set new vnf length",
-    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf_length\" value=\"`$service-data.vnfs.vnf_length - 1`\"/>\n\n\t\n",
+    "id": "372cbde7.587372",
+    "type": "delete",
+    "name": "delete site instance configuration in AAI",
+    "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='site-resource' \n        key='site-resource.id = $vnf-topology-operation-input.vnf-information.vnf-id'>\n",
     "comments": "",
-    "x": 661.9660186767578,
-    "y": 503.2179307937622,
-    "z": "3abedd3.792ad22",
-    "wires": []
+    "outputs": 1,
+    "x": 606.4265480041504,
+    "y": 697.1378149986267,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      []
+    ]
   },
   {
-    "id": "6a942976.e989d8",
+    "id": "4b86cba0.d35104",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1104.194751739502,
+    "y": 386.14191007614136,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "6a5ea2dd.9c807c",
     "type": "set",
-    "name": "Remove vnf from ServiceData",
-    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$tmp.nidx].\" value=\"\"/>\n\n",
+    "name": "set prop.vnfNewidx",
+    "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",
     "comments": "",
-    "x": 697.5902099609375,
-    "y": 547.1858978271484,
-    "z": "3abedd3.792ad22",
+    "x": 585.0000762939453,
+    "y": 422.00006771087646,
+    "z": "4e13a6ca.bd7208",
     "wires": []
   },
   {
-    "id": "e74f18c4.f49f98",
-    "type": "delete",
-    "name": "delete site instance configuration in AAI",
-    "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='site-resource' \n        key='site-resource.id = $vnf-topology-operation-input.vnf-information.vnf-id'>\n",
+    "id": "55ed5ce8.2b1ae4",
+    "type": "for",
+    "name": "for lidx..service-data.vnfs.vnf[]",
+    "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
     "comments": "",
     "outputs": 1,
-    "x": 707.8549957275391,
-    "y": 674.5513019561768,
-    "z": "3abedd3.792ad22",
+    "x": 602.0000381469727,
+    "y": 472.00007152557373,
+    "z": "4e13a6ca.bd7208",
     "wires": [
-      []
+      [
+        "1913c26.edfaf3e"
+      ]
     ]
   },
   {
-    "id": "c271a18f.ad7ae",
+    "id": "1913c26.edfaf3e",
     "type": "block",
     "name": "block : atomic",
     "xml": "<block atomic=\"true\">",
     "atomic": "true",
     "outputs": 1,
-    "x": 1191.6233711242676,
-    "y": 444.55556774139404,
-    "z": "3abedd3.792ad22",
+    "x": 863.000114440918,
+    "y": 476.0001063346863,
+    "z": "4e13a6ca.bd7208",
     "wires": [
-      []
+      [
+        "b02e3feb.ffee3"
+      ]
+    ]
+  },
+  {
+    "id": "b02e3feb.ffee3",
+    "type": "switchNode",
+    "name": "switch vnf-id found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$lidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1055.0000610351562,
+    "y": 485.000150680542,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "e6008550.52d2f8"
+      ]
     ]
+  },
+  {
+    "id": "e6008550.52d2f8",
+    "type": "outcomeFalse",
+    "name": "false",
+    "xml": "<outcome value='false'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1241.0000762939453,
+    "y": 469.00003719329834,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "59e45e4c.5156f"
+      ]
+    ]
+  },
+  {
+    "id": "59e45e4c.5156f",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1392,
+    "y": 470.00007343292236,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "9655d3b.ed2503",
+        "ee40dd88.8d1f1"
+      ]
+    ]
+  },
+  {
+    "id": "9655d3b.ed2503",
+    "type": "set",
+    "name": "set  vnf data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$lidx].vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$lidx].vnf-data.`' />\n",
+    "comments": "",
+    "x": 1557.0000953674316,
+    "y": 445.00022888183594,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "ee40dd88.8d1f1",
+    "type": "set",
+    "name": "set prop.vnfNewidx",
+    "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",
+    "comments": "",
+    "x": 1579.0000953674316,
+    "y": 501.0001926422119,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "ba708495.2ebbe8",
+    "type": "set",
+    "name": "set new vnf length",
+    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",
+    "comments": "",
+    "x": 571.101432800293,
+    "y": 525.8043546676636,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "4890886d.4993b8",
+    "type": "set",
+    "name": "Remove vnf from ServiceData",
+    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$prop.vnfidxLen].\" value=\"\"/>\n\n",
+    "comments": "",
+    "x": 608.0001106262207,
+    "y": 581.0001163482666,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
   }
 ]
index 585c8b8..b4ceb0f 100644 (file)
                                                                     </block>\r
                                                                 </for>\r
                                                                 <set>\r
-                                                                    <parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.service-information.service-instance-id`' />\r
+                                                                    <parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id`' />\r
                                                                 </set>\r
                                                                 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\r
                                                                     <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>\r
                                                                         <block atomic="true">\r
                                                                             <for index='arvidx' start='0' end='`$mdsal-sd.service-data.vnfs.vnf_length`' >\r
                                                                                 <block atomic="true">\r
-                                                                                    <switch test="`$mdsal-parentsd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`">\r
+                                                                                    <switch test="`$mdsal-sd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`">\r
                                                                                         <outcome value='true'>\r
                                                                                             <block atomic="true">\r
                                                                                                 <set>\r
                                                                                                     <parameter name='tmp.sitevidx' value='`$arvidx`' />\r
                                                                                                 </set>\r
-                                                                                                <for index="siteidx" start="0" end="`$mdsal-parentsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">\r
+                                                                                                <for index="siteidx" start="0" end="`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">\r
                                                                                                     <block atomic="true">\r
-                                                                                                        <switch test="`$mdsal-parentsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`">\r
+                                                                                                        <switch test="`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`">\r
                                                                                                             <outcome value='true'>\r
                                                                                                                 <block atomic="true">\r
                                                                                                                     <set>\r
-                                                                                                                        <parameter name='prop.attach.siteId' value='`$mdsal-parentsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\r
+                                                                                                                        <parameter name='prop.attach.siteId' value='`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\r
                                                                                                                     </set>\r
                                                                                                                     <set>\r
                                                                                                                         <parameter name='prop.siteIds[$prop.siteIds_length]' value='`$prop.attach.siteId`' />\r
                                                                                                                         <parameter name='prop.siteIds_length' value='`$prop.siteIds_length + 1`' />\r
+                                                                                                                    </set>\r
+                                                                                                                    <set>\r
                                                                                                                         <parameter name='prop.siteAttachements[$prop.siteAttachements_length].siteId' value='`$prop.attach.siteId`' />\r
                                                                                                                         <parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles[0]' value='`$prop.role`' />\r
                                                                                                                         <parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles_length' value='1' />\r
             </for>\r
             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
                resource="esr-thirdparty-sdnc" \r
-               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \r
+               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \r
                     depth = '1'"\r
         pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\r
                 <outcome value='success'>\r
             </get-resource>\r
             <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
                 <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn.json'`" />\r
-                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/vpn-services'`" />\r
+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`" />\r
                 <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
                 <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
                 <parameter name="format" value="json"/>\r
index 1fa6496..29094f7 100644 (file)
@@ -236,6 +236,41 @@ value="`$connection-attachment-ar-identifiers.`" />
  + $connection-attachment-topology-operation-input.service-information.service-instance-id\r
  + '/service-data/service-topology/'`"/>\r
             </set>\r
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
+               resource="allotted-resource" \r
+               key="customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\r
+                       service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\r
+                       service-instance.service-instance-id = $connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id AND\r
+                       allotted-resource.id = $tmp.ar.allotted-resource-id"\r
+        pfx='pfx' local-only='false' force='false'>\r
+                <parameter name="id" value="`$tmp.ar.allotted-resource-id`" />\r
+                <parameter name="name" value="`$prop.connection-attachment.sotnVpnName`" />\r
+                <parameter name="access-provider-id" value="`$prop.connection-attachment.access-provider-id`" />\r
+                <parameter name="access-client-id" value="`$prop.connection-attachment.access-client-id`" />\r
+                <parameter name="access-topology-id" value="`$prop.connection-attachment.access-topology-id`" />\r
+                <parameter name="access-node-id" value="`$prop.connection-attachment.access-node-id`" />\r
+                <parameter name="access-ltp-id" value="`$prop.connection-attachment.access-ltp-id`" />\r
+                <parameter name="cvlan" value="`$prop.connection-attachment.cVLAN`" />\r
+                <parameter name="vpn-name" value="`$prop.connection-attachment.sotnVpnName`" />\r
+                <parameter name="selflink" value="`$tmp.ar.self-link`" />\r
+                <parameter name="model-invariant-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`" />\r
+                <parameter name="model-version-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`" />\r
+                <parameter name="operational-status" value="Created" />\r
+                <outcome value='failure'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="AAI failed" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='not-found'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="AAI failed" />\r
+                    </return>\r
+                </outcome>\r
+            </update>\r
             <return status='success'>\r
                 <parameter name="ack-final-indicator" value="Y" />\r
                 <parameter name="error-code" value="200" />\r
index 5f65774..2f87fbd 100644 (file)
                                                                                             </set>\r
                                                                                         </outcome>\r
                                                                                     </switch>\r
-                                                                                    <switch test="`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'vpnId'`">\r
+                                                                                    <switch test="`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'vpn-id'`">\r
                                                                                         <outcome value='true'>\r
                                                                                             <set>\r
                                                                                                 <parameter name='prop.vpn1Id' value='`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\r
                                                                                 </block>\r
                                                                             </for>\r
                                                                             <set>\r
-                                                                                <parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.service-information.service-instance-id`' />\r
+                                                                                <parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id`' />\r
                                                                             </set>\r
                                                                             <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\r
                                                                                 <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>\r
                                                                                     <block atomic="true">\r
                                                                                         <for index='arvidx' start='0' end='`$mdsal-sd.service-data.vnfs.vnf_length`' >\r
                                                                                             <block atomic="true">\r
-                                                                                                <switch test="`$mdsal-parentsd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == ActivateSiteInstance`">\r
+                                                                                                <switch test="`$mdsal-sd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == ActivateSiteInstance`">\r
                                                                                                     <outcome value='true'>\r
                                                                                                         <block atomic="true">\r
                                                                                                             <set>\r
                                                                                                                 <parameter name='tmp.sitevidx' value='`$arvidx`' />\r
                                                                                                             </set>\r
-                                                                                                            <for index="siteidx" start="0" end="`$mdsal-parentsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">\r
+                                                                                                            <for index="siteidx" start="0" end="`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">\r
                                                                                                                 <block atomic="true">\r
-                                                                                                                    <switch test="`$mdsal-parentsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`">\r
+                                                                                                                    <switch test="`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`">\r
                                                                                                                         <outcome value='true'>\r
                                                                                                                             <block atomic="true">\r
                                                                                                                                 <set>\r
-                                                                                                                                    <parameter name='prop.attach.siteId' value='`$mdsal-parentsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\r
+                                                                                                                                    <parameter name='prop.attach.siteId' value='`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\r
                                                                                                                                 </set>\r
                                                                                                                                 <set>\r
                                                                                                                                     <parameter name='prop.siteIds[$prop.siteIds_length]' value='`$prop.attach.siteId`' />\r
                                                                                                                                     <parameter name='prop.siteIds_length' value='`$prop.siteIds_length + 1`' />\r
+                                                                                                                                </set>\r
+                                                                                                                                <set>\r
                                                                                                                                     <parameter name='prop.siteAttachements[$prop.siteAttachements_length].siteId' value='`$prop.attach.siteId`' />\r
                                                                                                                                     <parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles[0]' value='`$prop.role`' />\r
                                                                                                                                     <parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles_length' value='1' />\r
             </for>\r
             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
                resource="esr-thirdparty-sdnc" \r
-               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \r
+               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \r
                     depth = '1'"\r
         pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\r
                 <outcome value='success'>\r
             </get-resource>\r
             <call module='GENERIC-RESOURCE-API' rpc='sdwan-wanport-vnf-topology-operation-underlay' mode='sync' ></call>\r
             <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
-                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn-tolopogy.json'`" />\r
+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn-topology.json'`" />\r
                 <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn1Id + '/topology'`" />\r
                 <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
                 <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
  + $connection-attachment-topology-operation-input.service-information.service-instance-id\r
  + '/service-data/service-topology/'`"/>\r
             </set>\r
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
+               resource="allotted-resource" \r
+               key="customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\r
+                       service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\r
+                       service-instance.service-instance-id = $connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id AND\r
+                       allotted-resource.id = $tmp.ar.allotted-resource-id"\r
+        pfx='pfx' local-only='false' force='false'>\r
+                <parameter name="selflink" value="`$tmp.ar.self-link`" />\r
+                <parameter name="model-invariant-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`" />\r
+                <parameter name="model-version-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`" />\r
+                <parameter name="operational-status" value="PendingDelete" />\r
+                <outcome value='failure'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="AAI failed" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='not-found'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="AAI failed" />\r
+                    </return>\r
+                </outcome>\r
+            </update>\r
             <return status='success'>\r
                 <parameter name="ack-final-indicator" value="Y" />\r
                 <parameter name="error-code" value="200" />\r
index 29e1a5e..753f41b 100644 (file)
  + $connection-attachment-topology-operation-input.service-information.service-instance-id\r
  + '/service-data/service-topology/'`"/>\r
             </set>\r
-            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='allotted-resource'  \r
-               key="customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\r
-                       service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\r
-                       service-instance.service-instance-id = $connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id AND\r
-                       allotted-resource.id = $tmp.ar.allotted-resource-id">\r
-                <outcome value='failure'>\r
-                    <return status='failure'>\r
-                        <parameter name='ack-final' value='Y'/>\r
-                        <parameter name="error-code" value="500" />\r
-                        <parameter name="error-message" value="AAI failed" />\r
-                    </return>\r
-                </outcome>\r
-                <outcome value='not-found'>\r
-                    <return status='failure'>\r
-                        <parameter name='ack-final' value='Y'/>\r
-                        <parameter name="error-code" value="500" />\r
-                        <parameter name="error-message" value="AAI failed" />\r
-                    </return>\r
-                </outcome>\r
-            </delete>\r
             <return status='success'>\r
                 <parameter name="ack-final-indicator" value="Y" />\r
                 <parameter name="error-code" value="200" />\r
index 5be564d..d957ba6 100644 (file)
@@ -8,14 +8,14 @@
                     <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`">\r
                         <outcome value='true'>\r
                             <set>\r
-                                <parameter name='prop.device.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                                <parameter name='prop.site.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
                             </set>\r
                         </outcome>\r
                     </switch>\r
                     <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'description'`">\r
                         <outcome value='true'>\r
                             <set>\r
-                                <parameter name='prop.device.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                                <parameter name='prop.site.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
                             </set>\r
                         </outcome>\r
                     </switch>\r
@@ -57,7 +57,7 @@
                     <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'longitude'`">\r
                         <outcome value='true'>\r
                             <set>\r
-                                <parameter name='prop.site.location-latitude' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                                <parameter name='prop.site.location-longitude' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
                             </set>\r
                         </outcome>\r
                     </switch>\r
index 5c4d478..5402ccd 100644 (file)
@@ -1,6 +1,6 @@
 <service-logic\r
     xmlns='http://www.onap.org/sdnc/svclogic'\r
-    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='1.2.1-SNAPSHOT'>\r
+    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>\r
     <method rpc='sdwan-vnf-topology-operation-device-activate' mode='sync'>\r
         <block atomic="true">\r
             <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
@@ -43,7 +43,7 @@
             </execute>\r
             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
                resource="esr-thirdparty-sdnc" \r
-               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \r
+               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \r
                     depth = '1'"\r
         pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\r
                 <outcome value='success'>\r
                 <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
                 <parameter name="keyStorePassword" value="adminadmin"/>\r
                 <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />\r
-                <!--execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' ><parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-wan-port.json'`" /><parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports'`" /><parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" /><parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" /><parameter name="format" value="json"/><parameter name="httpMethod" value="post"/><parameter name="responsePrefix" value="wanPortResp"/><parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/><parameter name="trustStorePassword" value="adminadmin"/><parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/><parameter name="keyStorePassword" value="adminadmin"/><parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" /-->\r
                 <outcome value='success'>\r
                     <block atomic="true"></block>\r
                 </outcome>\r
             </execute>\r
             <set>\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value="deviceId" />\r
-                <!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$deviceResp[0].id`' /-->\r
-                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$deviceResp.success[0].id`' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\r
             </set>\r
             <set>\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\r
             </set>\r
             <set>\r
-                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
+                <!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\r
             <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \r
       key='device.id = $vnf-topology-operation-input.vnf-information.vnf-id' >\r
                 <parameter name='id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
-                <parameter name='device-id' value='$deviceResp[0].id' />\r
+                <parameter name='device-id' value='`$deviceResp.success[0].id`' />\r
                 <parameter name='operational-status' value='Active' />\r
             </save>\r
             <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \r
index 821fc1f..648ca3a 100644 (file)
-<service-logic
-    xmlns='http://www.onap.org/sdnc/svclogic'
-    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='1.2.1-SNAPSHOT'>
-    <method rpc='sdwan-vnf-topology-operation-device-create' mode='sync'>
-        <block atomic="true">
-            <set>
-                <parameter name='prop.sdncCreate' value='false' />
-            </set>
-            <switch test="`$vnf-topology-operation-input.vnf-information.vnf-id`">
-                <outcome value=''>
-                    <block atomic="true">
-                        <set>
-                            <parameter name='prop.sdncCreate' value='true' />
-                        </set>
-                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >
-                            <parameter name="ctx-destination" value="prop.vnf-id"/>
-                        </execute>
-                        <block atomic="true">
-                            <switch test='`$service-data.vnfs.vnf_length`'>
-                                <outcome value=''>
-                                    <set>
-                                        <parameter name='vnf-index' value='0' />
-                                    </set>
-                                </outcome>
-                                <outcome value='Other'>
-                                    <set>
-                                        <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />
-                                    </set>
-                                </outcome>
-                            </switch>
-                            <set>
-                                <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />
-                            </set>
-                        </block>
-                    </block>
-                </outcome>
-                <outcome value='Other'>
-                    <block atomic="true">
-                        <block atomic="true">
-                            <switch test='`$service-data.vnfs.vnf_length`'>
-                                <outcome value=''>
-                                    <set>
-                                        <parameter name='vnf-index' value='0' />
-                                    </set>
-                                </outcome>
-                                <outcome value='Other'>
-                                    <set>
-                                        <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />
-                                    </set>
-                                </outcome>
-                            </switch>
-                            <set>
-                                <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />
-                            </set>
-                        </block>
-                        <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
-                            <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>
-                                <outcome value='true'>
-                                    <return status='failure'>
-                                        <parameter name='ack-final' value='Y'/>
-                                        <parameter name="error-code" value="500" />
-                                        <parameter name="error-message" value="`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id
-      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`" />
-                                    </return>
-                                </outcome>
-                            </switch>
-                        </for>
-                        <set>
-                            <parameter name='prop.vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
-                        </set>
-                    </block>
-                </outcome>
-            </switch>
-            <for index="idx" start="0" end="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`">
-                <block>
-                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
-                        <parameter name="original_string" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`'/>
-                        <parameter name="regex" value="_"/>
-                        <parameter name="ctx_memory_result_key" value="param-prefix"/>
-                    </execute>
-                    <set>
-                        <parameter name="`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>
-                    </set>
-                </block>
-            </for>
-            <set>
-                <parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />
-            </set>
-            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' ></call>
-            <set>
-                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-id`' />
-            </set>
-            <set>
-                <parameter name='vnfId' value='`$prop.vnf-id`' />
-                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` " />
-            </set>
-            <set>
-                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />
-                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />
-                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />
-            </set>
-            <set>
-                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-id`' />
-                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />
-                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />
-                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />
-                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />
-                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />
-            </set>
-            <switch test='`$prop.sdncCreate`'>
-                <outcome value='true'>
-                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' 
-      key='device.id = $prop.vnf-id' >
-                        <parameter name='id' value='`$prop.vnf-id`' />
-                        <parameter name='esn' value='`$prop.device.name`' />
-                        <parameter name='name' value="true" />
-                        <parameter name='description' value='`$prop.device.description`' />
-                        <parameter name='vendor' value='`$prop.device.vendor`' />
-                        <parameter name='class' value='`$prop.device.class`' />
-                        <parameter name='type' value='`$prop.device.deviceModel`' />
-                        <parameter name='version' value='`$prop.device.version`' />
-                        <parameter name='system-ip' value='`$prop.device.systemIp`' />
-                        <parameter name='operational-status' value='Created' />
-                        <parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />
-                        <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />
-                        <parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />
-                        <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` " />
-                    </save>
-                </outcome>
-                <outcome value='false'>
-                    <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' 
-      key='device.id = $prop.vnf-id' >
-                        <parameter name='id' value='`$prop.vnf-id`' />
-                        <parameter name='esn' value='`$prop.device.name`' />
-                        <parameter name='name' value="true" />
-                        <parameter name='description' value='`$prop.device.description`' />
-                        <parameter name='vendor' value='`$prop.device.vendor`' />
-                        <parameter name='class' value='`$prop.device.class`' />
-                        <parameter name='type' value='`$prop.device.deviceModel`' />
-                        <parameter name='version' value='`$prop.device.version`' />
-                        <parameter name='system-ip' value='`$prop.device.systemIp`' />
-                        <parameter name='operational-status' value='Created' />
-                        <parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />
-                        <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />
-                        <parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />
-                        <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` " />
-                    </update>
-                </outcome>
-            </switch>
-            <set>
-                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value="sdncCreate" />
-                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.sdncCreate`' />
-                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />
-            </set>
-            <return status='success'>
-                <parameter name="ack-final-indicator" value="Y" />
-                <parameter name="error-code" value="200" />
-                <parameter name="error-message" value="`$error-message`" />
-            </return>
-        </block>
-    </method>
-</service-logic>
\ No newline at end of file
+<service-logic\r
+    xmlns='http://www.onap.org/sdnc/svclogic'\r
+    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>\r
+    <method rpc='sdwan-vnf-topology-operation-device-create' mode='sync'>\r
+        <block atomic="true">\r
+            <set>\r
+                <parameter name='prop.sdncCreate' value='false' />\r
+            </set>\r
+            <switch test="`$vnf-topology-operation-input.vnf-information.vnf-id`">\r
+                <outcome value=''>\r
+                    <block atomic="true">\r
+                        <set>\r
+                            <parameter name='prop.sdncCreate' value='true' />\r
+                        </set>\r
+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\r
+                            <parameter name="ctx-destination" value="prop.vnf-id"/>\r
+                        </execute>\r
+                        <block atomic="true">\r
+                            <switch test='`$service-data.vnfs.vnf_length`'>\r
+                                <outcome value=''>\r
+                                    <set>\r
+                                        <parameter name='vnf-index' value='0' />\r
+                                    </set>\r
+                                </outcome>\r
+                                <outcome value='Other'>\r
+                                    <set>\r
+                                        <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\r
+                                    </set>\r
+                                </outcome>\r
+                            </switch>\r
+                            <set>\r
+                                <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\r
+                            </set>\r
+                        </block>\r
+                    </block>\r
+                </outcome>\r
+                <outcome value='Other'>\r
+                    <block atomic="true">\r
+                        <block atomic="true">\r
+                            <switch test='`$service-data.vnfs.vnf_length`'>\r
+                                <outcome value=''>\r
+                                    <set>\r
+                                        <parameter name='vnf-index' value='0' />\r
+                                    </set>\r
+                                </outcome>\r
+                                <outcome value='Other'>\r
+                                    <set>\r
+                                        <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\r
+                                    </set>\r
+                                </outcome>\r
+                            </switch>\r
+                            <set>\r
+                                <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\r
+                            </set>\r
+                        </block>\r
+                        <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
+                            <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\r
+                                <outcome value='true'>\r
+                                    <return status='failure'>\r
+                                        <parameter name='ack-final' value='Y'/>\r
+                                        <parameter name="error-code" value="500" />\r
+                                        <parameter name="error-message" value="`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id\r
+      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`" />\r
+                                    </return>\r
+                                </outcome>\r
+                            </switch>\r
+                        </for>\r
+                        <set>\r
+                            <parameter name='prop.vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
+                        </set>\r
+                    </block>\r
+                </outcome>\r
+            </switch>\r
+            <for index="idx" start="0" end="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`">\r
+                <block>\r
+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\r
+                        <parameter name="original_string" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`'/>\r
+                        <parameter name="regex" value="_"/>\r
+                        <parameter name="ctx_memory_result_key" value="param-prefix"/>\r
+                    </execute>\r
+                    <set>\r
+                        <parameter name="`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>\r
+                    </set>\r
+                </block>\r
+            </for>\r
+            <set>\r
+                <parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />\r
+            </set>\r
+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' ></call>\r
+            <set>\r
+                <parameter name='vnfId' value='`$prop.vnf-id`' />\r
+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` " />\r
+            </set>\r
+            <set>\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\r
+            </set>\r
+            <set>\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-id`' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />\r
+            </set>\r
+            <switch test='`$prop.sdncCreate`'>\r
+                <outcome value='true'>\r
+                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \r
+      key='device.id = $prop.vnf-id' >\r
+                        <parameter name='id' value='`$prop.vnf-id`' />\r
+                        <parameter name='esn' value='`$prop.device.name`' />\r
+                        <parameter name='name' value="true" />\r
+                        <parameter name='description' value='`$prop.device.description`' />\r
+                        <parameter name='vendor' value='`$prop.device.vendor`' />\r
+                        <parameter name='class' value='`$prop.device.class`' />\r
+                        <parameter name='type' value='`$prop.device.deviceModel`' />\r
+                        <parameter name='version' value='`$prop.device.version`' />\r
+                        <parameter name='system-ip' value='`$prop.device.systemIp`' />\r
+                        <parameter name='operational-status' value='Created' />\r
+                        <parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\r
+                        <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\r
+                        <parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\r
+                        <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` " />\r
+                    </save>\r
+                </outcome>\r
+                <outcome value='false'>\r
+                    <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \r
+      key='device.id = $prop.vnf-id' >\r
+                        <parameter name='id' value='`$prop.vnf-id`' />\r
+                        <parameter name='esn' value='`$prop.device.name`' />\r
+                        <parameter name='name' value="true" />\r
+                        <parameter name='description' value='`$prop.device.description`' />\r
+                        <parameter name='vendor' value='`$prop.device.vendor`' />\r
+                        <parameter name='class' value='`$prop.device.class`' />\r
+                        <parameter name='type' value='`$prop.device.deviceModel`' />\r
+                        <parameter name='version' value='`$prop.device.version`' />\r
+                        <parameter name='system-ip' value='`$prop.device.systemIp`' />\r
+                        <parameter name='operational-status' value='Created' />\r
+                        <parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\r
+                        <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\r
+                        <parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\r
+                        <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` " />\r
+                    </update>\r
+                </outcome>\r
+            </switch>\r
+            <set>\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value="sdncCreate" />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.sdncCreate`' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\r
+            </set>\r
+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \r
+      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id \r
+         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id \r
+         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' \r
+      force="true" pfx="tmp.AnAI-data">\r
+                <parameter name="relationship-list.relationship[0].related-to" value="device" />\r
+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/devices/device/' + $prop.vnf-id`" />\r
+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="device.id" />\r
+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.vnf-id`" />\r
+            </save>\r
+            <return status='success'>\r
+                <parameter name="ack-final-indicator" value="Y" />\r
+                <parameter name="error-code" value="200" />\r
+                <parameter name="error-message" value="`$error-message`" />\r
+            </return>\r
+        </block>\r
+    </method>\r
+</service-logic>\r
index d9cea85..830cc46 100644 (file)
@@ -36,7 +36,7 @@
             </execute>\r
             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
                resource="esr-thirdparty-sdnc" \r
-               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \r
+               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \r
                     depth = '1'"\r
         pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\r
                 <outcome value='success'>\r
                 </outcome>\r
             </execute>\r
             <set>\r
-                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
+                <!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\r
index 0190be0..23cfb02 100644 (file)
-<service-logic
-    xmlns='http://www.onap.org/sdnc/svclogic'
-    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
-    <method rpc='sdwan-vnf-topology-operation-device-delete' mode='sync'>
-        <block atomic="true">
-            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
-                <parameter name="vnf-topology-operation-input.vnf-information.vnf-id" value="$vnf-topology-operation-input.vnf-information.vnf-id"/>
-            </execute>
-            <switch test="`$vnf-topology-operation-input.vnf-information.vnf-id`">
-                <outcome value=''>
-                    <return status='failure'>
-                        <parameter name='ack-final' value='Y'/>
-                        <parameter name="error-code" value="500" />
-                        <parameter name="error-message" value="vnf-request-input.vnf-input-parameters.name is a required input" />
-                    </return>
-                </outcome>
-            </switch>
-            <switch test='`$service-data.vnfs.vnf_length`'>
-                <outcome value=''>
-                    <return status='failure'>
-                        <parameter name='ack-final' value='Y'/>
-                        <parameter name="error-code" value="500" />
-                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
-                    </return>
-                </outcome>
-                <outcome value='Other'>
-                    <block atomic="true">
-                        <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >
-                            <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">
-                                <outcome value='true'>
-                                    <block atomic="true">
-                                        <set>
-                                            <parameter name='tmp.vidx' value='`$vidx`' />
-                                            <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />
-                                        </set>
-                                        <set>
-                                            <parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />
-                                        </set>
-                                        <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' ></call>
-                                        <set>
-                                            <parameter name='tmp.vidx' value='`$vidx`' />
-                                            <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].vnf-data.`' />
-                                        </set>
-                                    </block>
-                                </outcome>
-                            </switch>
-                        </for>
-                        <switch test="`$tmp.vidx`">
-                            <outcome value=''>
-                                <return status='failure'>
-                                    <parameter name='ack-final' value='Y'/>
-                                    <parameter name="error-code" value="500" />
-                                    <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
-                                </return>
-                            </outcome>
-                        </switch>
-                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
-                            <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>
-                            <parameter name="field1" value="__TIMESTAMP__"/>
-                            <parameter name="field2" value="tmp.vidx1234555"/>
-                            <parameter name="field3" value='`$tmp.vidx`'/>
-                        </record>
-                    </block>
-                </outcome>
-            </switch>
-            <switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status`'>
-                <outcome value='PendingDelete'>
-                    <block atomic="true"></block>
-                </outcome>
-                <outcome value='Other'>
-                    <return status='failure'>
-                        <parameter name='ack-final' value='Y'/>
-                        <parameter name="error-code" value="500" />
-                        <parameter name="error-message" value="`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`" />
-                    </return>
-                </outcome>
-            </switch>
-            <set>
-                <parameter name="service-data.vnfs.vnf_length" value="`$service-data.vnfs.vnf_length - 1`"/>
-            </set>
-            <set>
-                <parameter name="service-data.vnfs.vnf[$tmp.vidx]." value=""/>
-            </set>
-            <set>
-                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
-                <parameter name='vnf-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
- + $vnf-topology-operation-input.service-information.service-instance-id
- + '/service-data/service-topology/'` " />
-            </set>
-            <switch test="`$prop.device.sdncCreate`">
-                <outcome value='true'>
-                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='device' 
-        key='device.id = $vnf-topology-operation-input.vnf-information.vnf-id'></delete>
-                </outcome>
-            </switch>
-            <return status='success'>
-                <parameter name="ack-final-indicator" value="Y" />
-                <parameter name="error-code" value="200" />
-                <parameter name="error-message" value="`$error-message`" />
-            </return>
-        </block>
-    </method>
-</service-logic>
\ No newline at end of file
+<service-logic\r
+    xmlns='http://www.onap.org/sdnc/svclogic'\r
+    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>\r
+    <method rpc='sdwan-vnf-topology-operation-device-delete' mode='sync'>\r
+        <block atomic="true">\r
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\r
+                <parameter name="vnf-topology-operation-input.vnf-information.vnf-id" value="$vnf-topology-operation-input.vnf-information.vnf-id"/>\r
+            </execute>\r
+            <switch test="`$vnf-topology-operation-input.vnf-information.vnf-id`">\r
+                <outcome value=''>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="vnf-request-input.vnf-input-parameters.name is a required input" />\r
+                    </return>\r
+                </outcome>\r
+            </switch>\r
+            <switch test='`$service-data.vnfs.vnf_length`'>\r
+                <outcome value=''>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='Other'>\r
+                    <block atomic="true">\r
+                        <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
+                            <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">\r
+                                <outcome value='true'>\r
+                                    <block atomic="true">\r
+                                        <set>\r
+                                            <parameter name='tmp.vidx' value='`$vidx`' />\r
+                                            <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\r
+                                        </set>\r
+                                        <set>\r
+                                            <parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\r
+                                        </set>\r
+                                        <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' ></call>\r
+                                        <set>\r
+                                            <parameter name='tmp.vidx' value='`$vidx`' />\r
+                                            <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].vnf-data.`' />\r
+                                        </set>\r
+                                    </block>\r
+                                </outcome>\r
+                            </switch>\r
+                        </for>\r
+                        <switch test="`$tmp.vidx`">\r
+                            <outcome value=''>\r
+                                <return status='failure'>\r
+                                    <parameter name='ack-final' value='Y'/>\r
+                                    <parameter name="error-code" value="500" />\r
+                                    <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />\r
+                                </return>\r
+                            </outcome>\r
+                        </switch>\r
+                    </block>\r
+                </outcome>\r
+            </switch>\r
+            <switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status`'>\r
+                <outcome value='PendingDelete'>\r
+                    <block atomic="true"></block>\r
+                </outcome>\r
+                <outcome value='Other'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`" />\r
+                    </return>\r
+                </outcome>\r
+            </switch>\r
+            <set>\r
+                <parameter name='prop.vnfidxLen' value='`0`' />\r
+            </set>\r
+            <for index='lidx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
+                <block atomic="true">\r
+                    <switch test="`$service-data.vnfs.vnf[$lidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">\r
+                        <outcome value='false'>\r
+                            <block atomic="true">\r
+                                <set>\r
+                                    <parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$lidx].vnf-id`' />\r
+                                    <parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$lidx].vnf-data.`' />\r
+                                </set>\r
+                                <set>\r
+                                    <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\r
+                                </set>\r
+                            </block>\r
+                        </outcome>\r
+                    </switch>\r
+                </block>\r
+            </for>\r
+            <set>\r
+                <parameter name="service-data.vnfs.vnf_length" value='`$prop.vnfidxLen`'/>\r
+            </set>\r
+            <set>\r
+                <parameter name="service-data.vnfs.vnf[$prop.vnfidxLen]." value=""/>\r
+            </set>\r
+            <set>\r
+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
+                <parameter name='vnf-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'\r
+ + $vnf-topology-operation-input.service-information.service-instance-id\r
+ + '/service-data/service-topology/'` " />\r
+            </set>\r
+            <switch test="`$prop.device.sdncCreate`">\r
+                <outcome value='true'>\r
+                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='device' \r
+        key='device.id = $vnf-topology-operation-input.vnf-information.vnf-id'></delete>\r
+                </outcome>\r
+            </switch>\r
+            <return status='success'>\r
+                <parameter name="ack-final-indicator" value="Y" />\r
+                <parameter name="error-code" value="200" />\r
+                <parameter name="error-message" value="`$error-message`" />\r
+            </return>\r
+        </block>\r
+    </method>\r
+</service-logic>\r
index 59e0313..3879fdc 100644 (file)
             </for>\r
             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
                resource="esr-thirdparty-sdnc" \r
-               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \r
+               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \r
                     depth = '1'"\r
         pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\r
                 <outcome value='success'>\r
                 <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
                 <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
                 <parameter name="format" value="json"/>\r
-                <parameter name="httpMethod" value="post"/>\r
+                <parameter name="httpMethod" value="put"/>\r
                 <parameter name="responsePrefix" value="portResp"/>\r
                 <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>\r
                 <parameter name="trustStorePassword" value="adminadmin"/>\r
                     <block atomic="true"></block>\r
                 </outcome>\r
             </execute>\r
-            <for index="portidx" start="0" end="`$portResp_length`">\r
-                <block>\r
-                    <switch test="`$portResp[$portidx].deviceId == $prop.deviceId`">\r
-                        <outcome value='true'>\r
-                            <set>\r
-                                <parameter name='prop.wan.devicePortId' value='`$portResp[$portidx].id`' />\r
-                            </set>\r
-                        </outcome>\r
-                    </switch>\r
-                </block>\r
-            </for>\r
+            <set>\r
+                <parameter name='prop.wan.devicePortId' value='`$portResp.success[0].id`' />\r
+            </set>\r
             <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
-                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-network-orchestration.json'`" />\r
                 <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/network-orchestration-resources'`" />\r
                 <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
                 <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
                     <block atomic="true"></block>\r
                 </outcome>\r
             </execute>\r
-            <for index="tidx" start="0" end="`$transportNetworksResp.transportNetworks_length`">\r
+            <for index="tidx" start="0" end="`$transportNetworksResp.data.transportNetworks_length`">\r
                 <block>\r
-                    <switch test="`$transportNetworksResp.transportNetworks[$tidx].name == $prop.wan.transportNetworkName`">\r
+                    <switch test="`$transportNetworksResp.data.transportNetworks[$tidx].name == $prop.wan.transportNetworkName`">\r
                         <outcome value='true'>\r
                             <set>\r
-                                <parameter name='prop.wan.transportNetworkId' value='`$transportNetworksResp[$tidx].id`' />\r
+                                <parameter name='prop.wan.transportNetworkId' value='`$transportNetworksResp.data.transportNetworks[$tidx].id`' />\r
                             </set>\r
                         </outcome>\r
                     </switch>\r
                 </block>\r
             </for>\r
             <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\r
-                <parameter name="original_string" value='`$prop.ipAddress`'/>\r
+                <parameter name="original_string" value='`$prop.wan.ipAddress`'/>\r
                 <parameter name="regex" value="/"/>\r
                 <parameter name="ctx_memory_result_key" value="ipandMask"/>\r
                 <outcome value='success'>\r
                     <block atomic="true"></block>\r
                 </outcome>\r
             </execute>\r
-            <for index="wanPortidx" start="0" end="`$wanPortResp_length`">\r
-                <block>\r
-                    <switch test="`$wanPortResp[$wanPortidx].deviceId == $prop.deviceId`">\r
-                        <outcome value='true'>\r
-                            <set>\r
-                                <parameter name='prop.wan.wanPortId' value='`$wanPortResp[$wanPortidx].id`' />\r
-                            </set>\r
-                        </outcome>\r
-                    </switch>\r
-                </block>\r
-            </for>\r
+            <set>\r
+                <parameter name='prop.wan.wanPortId' value='`$wanPortResp.success[0].id`' />\r
+            </set>\r
             <set>\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='devicePortId' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.wan.devicePortId`' />\r
-                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1].name' value='wanPortId' />\r
-                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1].value' value='`$prop.wan.wanPortId`' />\r
-                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 2`' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\r
+            </set>\r
+            <set>\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='wanPortId' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.wan.wanPortId`' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\r
             </set>\r
             <set>\r
-                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\r
+                <!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\r
             </set>\r
+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \r
+      key='wan-port-config.id = $vnf-topology-operation-input.vnf-information.vnf-id' >\r
+                <parameter name="id" value="`$vnf-topology-operation-input.vnf-information.vnf-id`" />\r
+                <parameter name='operational-status' value='Active' />\r
+                <parameter name='device-port-id' value='`$prop.wan.devicePortId`' />\r
+                <parameter name='wan-port-id' value='`$prop.wan.wanPortId`' />\r
+                <parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\r
+                <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\r
+                <parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\r
+            </update>\r
             <return status='success'>\r
                 <parameter name="ack-final-indicator" value="Y" />\r
                 <parameter name="error-code" value="200" />\r
index f622274..7a7c22e 100644 (file)
@@ -56,7 +56,7 @@
             </execute>\r
             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
                resource="esr-thirdparty-sdnc" \r
-               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \r
+               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \r
                     depth = '1'"\r
         pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\r
                 <outcome value='success'>\r
                 <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
                 <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
                 <parameter name="format" value="json"/>\r
-                <parameter name="httpMethod" value="delete"/>\r
+                <parameter name="httpMethod" value="post"/>\r
                 <parameter name="responsePrefix" value="portResp"/>\r
                 <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>\r
                 <parameter name="trustStorePassword" value="adminadmin"/>\r
                 </outcome>\r
             </execute>\r
             <set>\r
-                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\r
+                <!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\r
             </set>\r
             <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \r
-      key='wan-port-config.id = $service-data.vnfs.vnf[$tmp.vidx].vnf-id' >\r
-                <parameter name="id" value="`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`" />\r
+      key='wan-port-config.id = $vnf-topology-operation-input.vnf-information.vnf-id' >\r
+                <parameter name="id" value="`$vnf-topology-operation-input.vnf-information.vnf-id`" />\r
                 <parameter name='operational-status' value='PendingDelete' />\r
                 <parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\r
                 <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\r
index e0f53a9..e681086 100644 (file)
                                 </return>\r
                             </outcome>\r
                         </switch>\r
-                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">\r
-                            <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>\r
-                            <parameter name="field1" value="__TIMESTAMP__"/>\r
-                            <parameter name="field2" value="tmp.vidx1234555"/>\r
-                            <parameter name="field3" value='`$tmp.vidx`'/>\r
-                        </record>\r
                     </block>\r
                 </outcome>\r
             </switch>\r
                 </outcome>\r
             </switch>\r
             <set>\r
-                <parameter name="service-data.vnfs.vnf_length" value="`$service-data.vnfs.vnf_length - 1`"/>\r
+                <parameter name='prop.vnfidxLen' value='`0`' />\r
             </set>\r
+            <for index='lidx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
+                <block atomic="true">\r
+                    <switch test="`$service-data.vnfs.vnf[$lidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">\r
+                        <outcome value='false'>\r
+                            <block atomic="true">\r
+                                <set>\r
+                                    <parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$lidx].vnf-id`' />\r
+                                    <parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$lidx].vnf-data.`' />\r
+                                </set>\r
+                                <set>\r
+                                    <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\r
+                                </set>\r
+                            </block>\r
+                        </outcome>\r
+                    </switch>\r
+                </block>\r
+            </for>\r
             <set>\r
-                <parameter name="service-data.vnfs.vnf[$tmp.vidx]." value=""/>\r
+                <parameter name="service-data.vnfs.vnf_length" value='`$prop.vnfidxLen`'/>\r
+            </set>\r
+            <set>\r
+                <parameter name="service-data.vnfs.vnf[$prop.vnfidxLen]." value=""/>\r
             </set>\r
             <set>\r
                 <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
index 9db916e..ebe9422 100644 (file)
@@ -3,6 +3,9 @@
     xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>\r
     <method rpc='sdwan-wanport-vnf-topology-operation-underlay' mode='sync'>\r
         <block atomic="true">\r
+            <set>\r
+                <parameter name='prop.underlay.routeIds_length' value='0' />\r
+            </set>\r
             <set>\r
                 <parameter name='prop.provision.siteIds_length' value='0' />\r
             </set>\r
                                             </set>\r
                                             <for index="roleidx" start="0" end="`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`">\r
                                                 <block>\r
-                                                    <switch test="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$roleidx].name == 'role'`">\r
+                                                    <switch test="`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$roleidx].name == 'role'`">\r
                                                         <outcome value='true'>\r
                                                             <set>\r
-                                                                <parameter name='prop.spoke.role' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$roleidx].value`' />\r
+                                                                <parameter name='prop.spoke.role' value='`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$roleidx].value`' />\r
                                                             </set>\r
                                                         </outcome>\r
                                                     </switch>\r
                                         <switch test="`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSiteInstance'`">\r
                                             <outcome value='true'>\r
                                                 <block atomic="true">\r
+                                                    <set>\r
+                                                        <parameter name='prop.spoke.siteidx' value='`$i`' />\r
+                                                    </set>\r
                                                     <for index="sidx" start="0" end="`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">\r
                                                         <block atomic="true">\r
                                                             <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'name'`">\r
                                                                     </set>\r
                                                                 </outcome>\r
                                                             </switch>\r
+                                                            <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'underlayRouteIds'`">\r
+                                                                <outcome value='true'>\r
+                                                                    <block atomic="true">\r
+                                                                        <set>\r
+                                                                            <parameter name='prop.underlay.routeIdsString' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />\r
+                                                                        </set>\r
+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\r
+                                                                            <parameter name="original_string" value='`$prop.underlay.routeIdsString`'/>\r
+                                                                            <parameter name="regex" value=" | "/>\r
+                                                                            <parameter name="ctx_memory_result_key" value="prop.underlay.routeIdsValue"/>\r
+                                                                            <outcome value='success'>\r
+                                                                                <for index="ridx" start="0" end="`$prop.underlay.routeIdsValue_length`">\r
+                                                                                    <block atomic="true">\r
+                                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\r
+                                                                                            <parameter name="original_string" value='`$prop.underlay.routeIdsValue[$ridx]`'/>\r
+                                                                                            <parameter name="regex" value=","/>\r
+                                                                                            <parameter name="ctx_memory_result_key" value="prop.underlay.routeIdsValues"/>\r
+                                                                                            <outcome value='success'>\r
+                                                                                                <switch test='`$prop.underlay.routeIdsValues_length`'>\r
+                                                                                                    <outcome value='Other'>\r
+                                                                                                        <block></block>\r
+                                                                                                    </outcome>\r
+                                                                                                    <outcome value='3'>\r
+                                                                                                        <block atomic="true">\r
+                                                                                                            <set>\r
+                                                                                                                <parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubSiteId' value='`$prop.underlay.routeIdsValues[0]`' />\r
+                                                                                                                <parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubRouteId' value='`$prop.underlay.routeIdsValues[1]`' />\r
+                                                                                                                <parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].spokeRouteId' value='`$prop.underlay.routeIdsValues[2]`' />\r
+                                                                                                            </set>\r
+                                                                                                            <set>\r
+                                                                                                                <parameter name='prop.underlay.routeIds_length' value='`$prop.underlay.routeIds_length + 1`' />\r
+                                                                                                            </set>\r
+                                                                                                        </block>\r
+                                                                                                    </outcome>\r
+                                                                                                </switch>\r
+                                                                                            </outcome>\r
+                                                                                            <outcome value='failure'>\r
+                                                                                                <block></block>\r
+                                                                                            </outcome>\r
+                                                                                        </execute>\r
+                                                                                    </block>\r
+                                                                                </for>\r
+                                                                            </outcome>\r
+                                                                            <outcome value='failure'>\r
+                                                                                <block></block>\r
+                                                                            </outcome>\r
+                                                                        </execute>\r
+                                                                    </block>\r
+                                                                </outcome>\r
+                                                            </switch>\r
                                                         </block>\r
                                                     </for>\r
                                                 </block>\r
                                                 </set>\r
                                             </outcome>\r
                                         </switch>\r
-                                        <switch test="`$tmp.pnidx`">\r
-                                            <outcome value=''>\r
-                                                <return status='failure'>\r
-                                                    <parameter name='ack-final' value='Y'/>\r
-                                                    <parameter name="error-code" value="500" />\r
-                                                    <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />\r
-                                                </return>\r
-                                            </outcome>\r
-                                        </switch>\r
                                     </block>\r
                                 </for>\r
+                                <switch test="`$tmp.pnidx`">\r
+                                    <outcome value=''>\r
+                                        <return status='failure'>\r
+                                            <parameter name='ack-final' value='Y'/>\r
+                                            <parameter name="error-code" value="500" />\r
+                                            <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />\r
+                                        </return>\r
+                                    </outcome>\r
+                                </switch>\r
                                 <for index="paramidx" start="0" end="`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param_length`">\r
                                     <block atomic="true">\r
                                         <switch test="`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'topology'`">\r
                                                                                             </set>\r
                                                                                         </outcome>\r
                                                                                     </switch>\r
-                                                                                    <switch test="`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'hubRouteId'`">\r
-                                                                                        <outcome value='true'>\r
-                                                                                            <set>\r
-                                                                                                <parameter name='prop.hubRouteId' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\r
-                                                                                            </set>\r
-                                                                                        </outcome>\r
-                                                                                    </switch>\r
-                                                                                    <switch test="`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'spokeRouteId'`">\r
-                                                                                        <outcome value='true'>\r
-                                                                                            <set>\r
-                                                                                                <parameter name='prop.spokeRouteId' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\r
-                                                                                            </set>\r
-                                                                                        </outcome>\r
-                                                                                    </switch>\r
                                                                                 </block>\r
                                                                             </for>\r
                                                                             <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>\r
                                                                                             <parameter name='prop.route.siteId' value='`$prop.hub.siteId`' />\r
                                                                                             <parameter name='prop.route.deviceId' value='`$prop.hub.deviceId`' />\r
                                                                                             <parameter name='prop.route.providerIpAddress' value='`$prop.hub.providerIpAddress`' />\r
-                                                                                            <parameter name='prop.route.wanportId' value='`$prop.spoke.wanportId`' />\r
+                                                                                            <parameter name='prop.route.wanportId' value='`$prop.spoke.wanPortId`' />\r
                                                                                             <parameter name='prop.route.ipAddress' value='`$prop.hub.ipAddress`' />\r
                                                                                         </set>\r
                                                                                         <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
                                                                                             <parameter name='prop.route.siteId' value='`$prop.spoke.siteId`' />\r
                                                                                             <parameter name='prop.route.deviceId' value='`$prop.spoke.deviceId`' />\r
                                                                                             <parameter name='prop.route.providerIpAddress' value='`$prop.spoke.providerIpAddress`' />\r
-                                                                                            <parameter name='prop.route.wanportId' value='`$prop.hub.wanportId`' />\r
+                                                                                            <parameter name='prop.route.wanportId' value='`$prop.hub.wanPortId`' />\r
                                                                                             <parameter name='prop.route.ipAddress' value='`$prop.spoke.ipAddress`' />\r
                                                                                         </set>\r
                                                                                         <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
                                                                                             <outcome value='success'></outcome>\r
                                                                                         </execute>\r
                                                                                         <set>\r
-                                                                                            <parameter name='mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='hubRouteId' />\r
-                                                                                            <parameter name='mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$underlayHubResp[0].id`' />\r
-                                                                                            <parameter name='mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1].name' value='spokeRouteId' />\r
-                                                                                            <parameter name='mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1].value' value='`$underlayspokeResp[0].id`' />\r
-                                                                                            <parameter name='mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 2`' />\r
+                                                                                            <parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubSiteId' value='`$prop.hub.siteId`' />\r
+                                                                                            <!--parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].spokeSiteId' value='`$prop.spoke.siteId`' /-->\r
+                                                                                            <parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubRouteId' value='`$underlayHubResp.success[0].id`' />\r
+                                                                                            <parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].spokeRouteId' value='`$underlayspokeResp.success[0].id`' />\r
+                                                                                        </set>\r
+                                                                                        <set>\r
+                                                                                            <parameter name='prop.underlay.routeIds_length' value='`$prop.underlay.routeIds_length + 1`' />\r
+                                                                                        </set>\r
+                                                                                        <set>\r
+                                                                                            <parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].hubSiteName' value='`$prop.hub.siteName`' />\r
+                                                                                            <parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].hubSiteId' value='`$prop.hub.siteId`' />\r
+                                                                                            <parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].spokeSiteName' value='`$prop.spoke.siteName`' />\r
+                                                                                            <parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].spokeSiteId' value='`$prop.spoke.siteId`' />\r
+                                                                                        </set>\r
+                                                                                        <set>\r
+                                                                                            <parameter name='prop.provision.siteIds_length' value='`$prop.provision.siteIds_length + 1`' />\r
                                                                                         </set>\r
                                                                                     </block>\r
                                                                                 </outcome>\r
                                                                                 <outcome value='DeactivateSDWANAttachmentInstance'>\r
                                                                                     <block atomic="true">\r
+                                                                                        <for index="uidx" start="0" end="`$prop.underlay.routeIds_length`">\r
+                                                                                            <block atomic="true">\r
+                                                                                                <switch test="`$prop.underlay.routeIds[$uidx].hubSiteId == $prop.hub.siteId`">\r
+                                                                                                    <outcome value='true'>\r
+                                                                                                        <block atomic="true">\r
+                                                                                                            <set>\r
+                                                                                                                <parameter name='prop.hubRouteId' value='`$prop.underlay.routeIds[$uidx].hubRouteId`' />\r
+                                                                                                                <parameter name='prop.spokeRouteId' value='`$prop.underlay.routeIds[$uidx].spokeRouteId`' />\r
+                                                                                                            </set>\r
+                                                                                                        </block>\r
+                                                                                                    </outcome>\r
+                                                                                                </switch>\r
+                                                                                            </block>\r
+                                                                                        </for>\r
                                                                                         <set>\r
                                                                                             <parameter name='prop.route.id' value='`$prop.hubRouteId`' />\r
                                                                                             <parameter name='prop.route.vpnId' value='`$prop.vpnId`' />\r
                                                                                             <parameter name='prop.route.siteId' value='`$prop.hub.siteId`' />\r
                                                                                             <parameter name='prop.route.deviceId' value='`$prop.hub.deviceId`' />\r
                                                                                             <parameter name='prop.route.providerIpAddress' value='`$prop.hub.providerIpAddress`' />\r
-                                                                                            <parameter name='prop.route.wanportId' value='`$prop.spoke.wanportId`' />\r
+                                                                                            <parameter name='prop.route.wanportId' value='`$prop.spoke.wanPortId`' />\r
                                                                                             <parameter name='prop.route.ipAddress' value='`$prop.hub.ipAddress`' />\r
                                                                                         </set>\r
                                                                                         <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
                                                                                             <parameter name='prop.route.siteId' value='`$prop.spoke.siteId`' />\r
                                                                                             <parameter name='prop.route.deviceId' value='`$prop.spoke.deviceId`' />\r
                                                                                             <parameter name='prop.route.providerIpAddress' value='`$prop.spoke.providerIpAddress`' />\r
-                                                                                            <parameter name='prop.route.wanportId' value='`$prop.hub.wanportId`' />\r
+                                                                                            <parameter name='prop.route.wanportId' value='`$prop.hub.wanPortId`' />\r
                                                                                             <parameter name='prop.route.ipAddress' value='`$prop.spoke.ipAddress`' />\r
                                                                                         </set>\r
                                                                                         <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
                                                                                     </block>\r
                                                                                 </outcome>\r
                                                                             </switch>\r
-                                                                            <set>\r
-                                                                                <parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].hubSiteName' value='`$prop.hub.siteName`' />\r
-                                                                                <parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].hubSiteId' value='`$prop.hub.siteId`' />\r
-                                                                                <parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].spokeSiteName' value='`$prop.spoke.siteName`' />\r
-                                                                                <parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].spokeSiteId' value='`$prop.spoke.siteId`' />\r
-                                                                                <parameter name='prop.provision.siteIds_length' value='`$prop.provision.siteIds_length + 1`' />\r
-                                                                            </set>\r
                                                                         </block>\r
                                                                     </outcome>\r
                                                                 </switch>\r
                                         </block>\r
                                     </outcome>\r
                                 </switch>\r
+                                <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>\r
+                                    <outcome value='ActivateSDWANAttachmentInstance'>\r
+                                        <block atomic="true">\r
+                                            <set>\r
+                                                <parameter name='tmp.routeString' value="" />\r
+                                            </set>\r
+                                            <for index="jidx" start="0" end="`$prop.underlay.routeIds_length`">\r
+                                                <block atomic="true">\r
+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\r
+                                                        <parameter name="source" value='`$prop.underlay.routeIds[$jidx].hubSiteId`'/>\r
+                                                        <parameter name="outputPath" value="tmp.concat"/>\r
+                                                        <parameter name="target" value=","/>\r
+                                                    </execute>\r
+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\r
+                                                        <parameter name="source" value='`$tmp.concat`'/>\r
+                                                        <parameter name="outputPath" value="tmp.concat1"/>\r
+                                                        <parameter name="target" value='`$prop.underlay.routeIds[$jidx].hubRouteId`'/>\r
+                                                    </execute>\r
+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\r
+                                                        <parameter name="source" value='`$tmp.concat1`'/>\r
+                                                        <parameter name="outputPath" value="tmp.concat2"/>\r
+                                                        <parameter name="target" value=","/>\r
+                                                    </execute>\r
+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\r
+                                                        <parameter name="source" value='`$tmp.concat2`'/>\r
+                                                        <parameter name="outputPath" value="tmp.concat3"/>\r
+                                                        <parameter name="target" value='`$prop.underlay.routeIds[$jidx].spokeRouteId`'/>\r
+                                                    </execute>\r
+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\r
+                                                        <parameter name="source" value='`$tmp.concat3`'/>\r
+                                                        <parameter name="outputPath" value="tmp.concat4"/>\r
+                                                        <parameter name="target" value=" | "/>\r
+                                                    </execute>\r
+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\r
+                                                        <parameter name="source" value='`$tmp.routeString`'/>\r
+                                                        <parameter name="outputPath" value="tmp.routeString"/>\r
+                                                        <parameter name="target" value='`$tmp.concat4`'/>\r
+                                                    </execute>\r
+                                                </block>\r
+                                            </for>\r
+                                            <set>\r
+                                                <parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value="underlayRouteIds" />\r
+                                                <parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$tmp.routeString`' />\r
+                                            </set>\r
+                                            <set>\r
+                                                <parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\r
+                                            </set>\r
+                                        </block>\r
+                                    </outcome>\r
+                                    <outcome value='DeactivateSDWANAttachmentInstance'>\r
+                                        <block atomic="true">\r
+                                            <set>\r
+                                                <parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length - 1`' />\r
+                                            </set>\r
+                                        </block>\r
+                                    </outcome>\r
+                                </switch>\r
                             </block>\r
                         </outcome>\r
                     </switch>\r
                     <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">\r
                         <parameter name="file" value="`'/opt/opendaylight/current/data/log/' + 'HUB-' + $prop.provision.hubSitename + '-SPOKE-' + $prop.provision.spokeSitename + '-provisionUrl'`"/>\r
                         <parameter name="field1" value="__TIMESTAMP__"/>\r
-                        <parameter name="field2" value='`$provisionUrlRsp`'/>\r
+                        <parameter name="field2" value='`$provisionUrlRsp.success[0].url`'/>\r
                     </record>\r
                 </block>\r
             </for>\r
index d8233da..90ce0e8 100644 (file)
@@ -27,7 +27,7 @@
                             <parameter name='prop.site.deviceId_length' value='0' />\r
                         </set>\r
                         <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
-                            <block>\r
+                            <block atomic="true">\r
                                 <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">\r
                                     <outcome value='true'>\r
                                         <block atomic="true">\r
                                                 <parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\r
                                             </set>\r
                                             <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-site-param' mode='sync' ></call>\r
-                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">\r
-                                                <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>\r
-                                                <parameter name="field1" value="__TIMESTAMP__"/>\r
-                                                <parameter name="field2" value="sdwan-site-activateeeee-delete"/>\r
-                                                <parameter name="field3" value='`$prop.site.sdwan`'/>\r
-                                            </record>\r
                                         </block>\r
                                     </outcome>\r
                                 </switch>\r
@@ -56,7 +50,7 @@
                                                     <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].name == 'deviceId'`">\r
                                                         <outcome value='true'>\r
                                                             <set>\r
-                                                                <parameter name='prop.site.deviceId[$prop.site.deviceId_length]' value='`$service-data.vnfs.vnf[$tmp.deviceVidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />\r
+                                                                <parameter name='prop.site.deviceId[$prop.site.deviceId_length]' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />\r
                                                                 <parameter name='prop.site.deviceId_length' value='`$prop.site.deviceId_length + 1`' />\r
                                                             </set>\r
                                                         </outcome>\r
                     <block atomic="true">\r
                         <for index='cpidx' start='0' end='`$prop.site.controlpoints_length`' >\r
                             <block atomic="true">\r
-                                <for index='cpvidx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
-                                    <block>\r
-                                        <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`">\r
-                                            <outcome value='true'>\r
-                                                <block atomic="true">\r
-                                                    <for index="sidx" start="0" end="`$service-data.vnfs.vnf[$cpvidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">\r
-                                                        <block>\r
-                                                            <switch test="`$service-data.vnfs.vnf[$cpvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'name'`">\r
-                                                                <outcome value='true'>\r
-                                                                    <block atomic="true">\r
-                                                                        <switch test="`$service-data.vnfs.vnf[$cpvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value == $prop.site.controlpoints[$cpidx]`">\r
-                                                                            <outcome value='true'>\r
-                                                                                <block atomic="true">\r
-                                                                                    <for index="lidx" start="0" end="`$service-data.vnfs.vnf[$cpvidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">\r
-                                                                                        <block>\r
-                                                                                            <switch test="`$service-data.vnfs.vnf[$cpvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$lidx].name == 'siteId'`">\r
-                                                                                                <outcome value='true'>\r
-                                                                                                    <set>\r
-                                                                                                        <parameter name='prop.site.controlpoints[$cpidx]' value='`$service-data.vnfs.vnf[$cpvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$lidx].value`' />\r
-                                                                                                    </set>\r
-                                                                                                </outcome>\r
-                                                                                            </switch>\r
-                                                                                        </block>\r
-                                                                                    </for>\r
-                                                                                </block>\r
-                                                                            </outcome>\r
-                                                                        </switch>\r
-                                                                    </block>\r
-                                                                </outcome>\r
-                                                            </switch>\r
-                                                        </block>\r
-                                                    </for>\r
-                                                </block>\r
-                                            </outcome>\r
-                                        </switch>\r
-                                    </block>\r
-                                </for>\r
+                                <set>\r
+                                    <parameter name='prop.controlPtId' value='`$prop.site.controlpoints[$cpidx]`' />\r
+                                </set>\r
+                                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
+               resource="site-resource" \r
+               key="site-resource.name = $prop.controlPtId AND \r
+                    depth = '1'"\r
+        pfx='tmp.aai.controlPoints' local-only='false' >\r
+                                    <outcome value='success'>\r
+                                        <set>\r
+                                            <parameter name='prop.site.controlpoints[$cpidx]' value='`$tmp.aai.controlPoints.generated-site-id`' />\r
+                                        </set>\r
+                                    </outcome>\r
+                                    <outcome value='failure'>\r
+                                        <block></block>\r
+                                    </outcome>\r
+                                </get-resource>\r
                             </block>\r
                         </for>\r
                         <set>\r
                         </set>\r
                         <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
                resource="esr-thirdparty-sdnc" \r
-               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \r
+               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \r
                     depth = '1'"\r
         pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\r
                             <outcome value='success'>\r
                             <outcome value='success'>\r
                                 <block atomic="true"></block>\r
                             </outcome>\r
+                            <outcome value='failure'>\r
+                                <return status='failure'>\r
+                                    <parameter name='ack-final' value='Y'/>\r
+                                    <parameter name="error-code" value="500" />\r
+                                    <parameter name="error-message" value="Error executing Create vpn rest api" />\r
+                                </return>\r
+                            </outcome>\r
                         </execute>\r
                     </block>\r
                 </outcome>\r
             </switch>\r
             <set>\r
-                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\r
+                <!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' /-->\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='siteId' />\r
-                <!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$site-result[0].id`' /-->\r
-                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$site-result.success[0].id`' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\r
             </set>\r
             <set>\r
                 <parameter name='vnfId' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\r
-                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $service-data.vnfs.vnf[$tmp.vidx].vnf-id  + '/vnf-data/'` " />\r
+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` " />\r
             </set>\r
             <set>\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\r
             </set>\r
             <set>\r
-                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\r
+                <!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\r
             </set>\r
             <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \r
-      key='site-resource.id = $service-data.vnfs.vnf[$tmp.vidx].vnf-id' >\r
-                <parameter name='id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\r
-                <parameter name='generated-site-id' value='`$site-result[0].site-id`' />\r
+      key='site-resource.id = $vnf-topology-operation-input.vnf-information.vnf-id' >\r
+                <parameter name='id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
+                <parameter name='generated-site-id' value='`$site-result.success[0].id`' />\r
                 <parameter name='operational-status' value='Active' />\r
             </save>\r
             <return status='success'>\r
index 865aa42..137a148 100644 (file)
@@ -59,9 +59,6 @@
                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\r
                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\r
             </set>\r
-            <set>\r
-                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.vnf-id' value='`$prop.vnf-index`' />\r
-            </set>\r
             <set>\r
                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />\r
                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\r
index 67eba6f..7eac5d0 100644 (file)
                     </outcome>\r
                 </switch>\r
             </block>\r
+            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\r
+                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\r
+                <parameter name='contextPrefix' value='prop' />\r
+            </execute>\r
             <for index='idx' start='0' end='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`' >\r
                 <block>\r
                     <switch test="`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'role'`">\r
                     </switch>\r
                 </block>\r
             </for>\r
-            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\r
-                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\r
-                <parameter name='contextPrefix' value='prop' />\r
-            </execute>\r
             <switch test="`$prop.site.sdwan`">\r
                 <outcome value='true'>\r
                     <block atomic="true">\r
                         <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
                resource="esr-thirdparty-sdnc" \r
-               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \r
+               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \r
                     depth = '1'"\r
         pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\r
                             <outcome value='success'>\r
                                     <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\r
                                 </set>\r
                             </outcome>\r
+                            <outcome value='failure'>\r
+                                <block></block>\r
+                            </outcome>\r
                         </execute>\r
                         <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
                             <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-site-del.json'`" />\r
             </set>\r
             <set>\r
                 <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
-                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-request-input.vnf-id  + '/vnf-data/'` " />\r
+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` " />\r
             </set>\r
             <set>\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />\r
                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\r
             </set>\r
             <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \r
-      key='site-resource.id = $service-data.vnfs.vnf[$tmp.vidx].vnf-id' >\r
-                <parameter name='id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\r
+      key='site-resource.id = $vnf-topology-operation-input.vnf-information.vnf-id' >\r
+                <parameter name='id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
                 <parameter name='operational-status' value='PendingDelete' />\r
             </save>\r
             <return status='success'>\r
index 4162ef7..f5c0881 100644 (file)
                 </outcome>\r
             </switch>\r
             <set>\r
-                <parameter name="service-data.vnfs.vnf_length" value="`$service-data.vnfs.vnf_length - 1`"/>\r
+                <parameter name='prop.vnfidxLen' value='`0`' />\r
             </set>\r
+            <for index='lidx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
+                <block atomic="true">\r
+                    <switch test="`$service-data.vnfs.vnf[$lidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">\r
+                        <outcome value='false'>\r
+                            <block atomic="true">\r
+                                <set>\r
+                                    <parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$lidx].vnf-id`' />\r
+                                    <parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$lidx].vnf-data.`' />\r
+                                </set>\r
+                                <set>\r
+                                    <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\r
+                                </set>\r
+                            </block>\r
+                        </outcome>\r
+                    </switch>\r
+                </block>\r
+            </for>\r
             <set>\r
-                <parameter name="service-data.vnfs.vnf[$tmp.nidx]." value=""/>\r
+                <parameter name="service-data.vnfs.vnf_length" value='`$prop.vnfidxLen`'/>\r
+            </set>\r
+            <set>\r
+                <parameter name="service-data.vnfs.vnf[$prop.vnfidxLen]." value=""/>\r
             </set>\r
             <set>\r
                 <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
index b60a271..a140248 100644 (file)
                  "cellular": "null",
                  "atm": "null",
                  "ethernet": {
-                      "negotiateMode": "auto"
+                      "negotiateMode": "auto",
+                      "media": "null",
+                      "duplex": "null",
+                      "speed" : "10"
                  }
             }
         }
index 6dfb997..ada44a3 100644 (file)
@@ -26,7 +26,7 @@
             "deviceId": ${prop.wan.deviceId},
             "portId": ${prop.wan.devicePortId},
             "inSubInterfaces": "false",
-            "vlanId": ${prop.wan.vlanId},
+            "vlanId": "null",
             "ipConnection": {
                 "ipv4": {
                     "publicIP": ${prop.wan.ip-address},
diff --git a/pom.xml b/pom.xml
index 91434be..a67ca00 100755 (executable)
--- a/pom.xml
+++ b/pom.xml
@@ -24,6 +24,8 @@
                <module>admportal</module>
                <module>dgbuilder</module>
                <module>platform-logic</module>
+               <module>configbackuprestore</module>
+               <module>SdncReports</module>
        </modules>
 
        <scm>