Merge "Platform/DG logic support for CMNotify"
diff --git a/odlsli/odlsli-alpine/src/main/properties/sdnr-CMNotify-api-dg.properties.properties b/odlsli/odlsli-alpine/src/main/properties/sdnr-CMNotify-api-dg.properties.properties
new file mode 100644
index 0000000..8fa3735
--- /dev/null
+++ b/odlsli/odlsli-alpine/src/main/properties/sdnr-CMNotify-api-dg.properties.properties
@@ -0,0 +1,36 @@
+restapi.templateDir=/opt/onap/ccsdk/restapi/templates
+controller.url=http://sdnc.onap:8282
+controller.user=admin
+controller.pwd=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+ransim-mounted=false
+
+restapi.trustStoreFileName=/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks
+restapi.trustStorePassword=adminadmin
+restapi.keyStoreFileName=/opt/onap/sdnc/data/stores/sdnc.p12
+restapi.keyStorePassword=adminadmin
+restapi.connection-oof-url=http://oof.api.simpledemo.onap.org:8698/api/oof/v1/route
+naming.gen-name.url=http://neng-serv:8080
+naming.gen-name.user=ccsdkapps
+naming.gen-name.pwd=ccsdkapps
+
+
+# Templates
+restapi.pci-patch.templatefile=CMNotify-pci-patch.json
+restapi.neighbor-add.templatefile=CMNotify-addNeighbor.json
+restapi.neighbor-delete.templatefile=CMNotify-deleteNeighbor.json
+restapi.generic-neighbor-patch.template=CMNotify-generic-neighbor-patch.json
+restapi.add-nbr-to-configdb-per-notif.template=CMNotify-add-nbr-to-configdb-per-nbrlist-change-notif.json
+restapi.dmaap-publish.template=CMNotify-dmaap-publish-template.json
+
+#URLs for ConfigDB
+restapi.configdb.add-nbrlist-change-per-notif=/createNbr/{cellId}
+configdb.url=http://10.12.6.45:8080/api/sdnc-config-db/v3
+
+#DMAAP Publish
+dmaap-message-router.url=message-router.onap:3904/events
+CMNotify-dmaap.nbrlist-change.topic=/CM-NOTIFICATION-RSP
+
+CMNotify-dmaap.requestID=9d2d790e-a5f0-11e8-98d0-529269fb1459
+CMNotify-dmaap.aai=
+CMNotify-dmaap.version=1.0.2
+CMNotify-dmaap.nbrlistchange.action=NeighborListModified
diff --git a/platform-logic/cMNotify-api/pom.xml b/platform-logic/cMNotify-api/pom.xml
new file mode 100644
index 0000000..426e4ba
--- /dev/null
+++ b/platform-logic/cMNotify-api/pom.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onap.ccsdk.distribution</groupId>
+ <artifactId>distribution-platform-logic</artifactId>
+ <version>0.7.1-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>platform-logic-cMNotifyai</artifactId>
+ <version>0.7.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <name>ccsdk-distribution :: platform-logic :: ${project.artifactId}</name>
+ <description>Contains platform-level service logic for responding to ORAN VES events</description>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-resources-plugin</artifactId>
+ <version>2.6</version>
+ <executions>
+ <execution>
+ <id>copy-version</id>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals><!-- here the phase you need -->
+ <phase>validate</phase>
+ <configuration>
+ <outputDirectory>../target/graphs/cMNotifyapi</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/xml</directory>
+ <includes>
+ <include>*.xml</include>
+ </includes>
+ <filtering>true</filtering>
+ </resource>
+ <resource>
+ <directory>src/main/resources</directory>
+ <includes>
+ <include>graph.versions</include>
+ </includes>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/platform-logic/cMNotify-api/src/main/json/CM-NOTIFY-API_nbrlist-change-notification.json b/platform-logic/cMNotify-api/src/main/json/CM-NOTIFY-API_nbrlist-change-notification.json
new file mode 100644
index 0000000..1438b5d
--- /dev/null
+++ b/platform-logic/cMNotify-api/src/main/json/CM-NOTIFY-API_nbrlist-change-notification.json
@@ -0,0 +1,590 @@
+[
+ {
+ "id": "d7426cda.853c3",
+ "type": "method",
+ "name": "method",
+ "xml": "<method rpc='nbrlist-change-notification' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 139,
+ "y": 192.00000381469727,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "e01172f2.eb605"
+ ]
+ ]
+ },
+ {
+ "id": "384d1619.9cd7ea",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 142,
+ "y": 42,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "a139909c.cc021"
+ ]
+ ]
+ },
+ {
+ "id": "a139909c.cc021",
+ "type": "service-logic",
+ "name": "CM-NOTIFY-API ${project.version}",
+ "module": "CM-NOTIFY-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='CM-NOTIFY-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 199.99998474121094,
+ "y": 103.00009536743164,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "d7426cda.853c3"
+ ]
+ ]
+ },
+ {
+ "id": "e01172f2.eb605",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic='true'>",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 161.48959732055664,
+ "y": 361.0000343322754,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "ce9ff91f.9fd7b8",
+ "8f754eb6.4c563",
+ "12096927.430627",
+ "1c34cf50.e940a1",
+ "681abe9f.71ebb",
+ "cacad6a.74e6028"
+ ]
+ ]
+ },
+ {
+ "id": "ce9ff91f.9fd7b8",
+ "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=\"SUCCESSFUL Execution\" />\n",
+ "comments": "",
+ "x": 258.0002670288086,
+ "y": 591.000186920166,
+ "z": "e365f261.0028d",
+ "wires": []
+ },
+ {
+ "id": "46b206d1.328288",
+ "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/ves-nbrlist-change-notif.log\" />\n<parameter name=\"level\" value=\"info\" />\n<parameter name=\"field1\" value=\"Input RPC Payload request. FAP #: \"/>\n<parameter name=\"field2\" value=\"`$idx`\"/>\n<parameter name=\"field3\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].alias`\"/>\n<parameter name=\"field4\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].cid`\"/>\n<parameter name=\"field5\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].phy-cell-id-in-use`\"/>\n<parameter name=\"field6\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].pnf-name`\"/>\n<parameter name=\"field7\" value=\"Number of neigbors Changed/To Be Added #: \"/>\n<parameter name=\"field8\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].lte-cell-number-of-entries`\"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 826.0005493164062,
+ "y": 58.00004959106445,
+ "z": "e365f261.0028d",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "c791a89f.b094f8",
+ "type": "comment",
+ "name": "CMNotify VES: nbrlist-change-notification",
+ "info": "",
+ "comments": "",
+ "x": 424,
+ "y": 35.010414123535156,
+ "z": "e365f261.0028d",
+ "wires": []
+ },
+ {
+ "id": "12096927.430627",
+ "type": "for",
+ "name": "for",
+ "xml": "<for index='idx' start='0' end=\"`$nbrlist-change-notification-input.fap-service-number-of-entries-changed`\" >",
+ "comments": "",
+ "outputs": 1,
+ "x": 495.085693359375,
+ "y": 130.9635887145996,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "c2a6556d.4d96f8"
+ ]
+ ]
+ },
+ {
+ "id": "8f754eb6.4c563",
+ "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/ves-nbrlist-change-notif.log\" />\n<parameter name=\"level\" value=\"info\" />\n<parameter name=\"field1\" value=\"RPC to handle VES event: nbrlist change notification invoked. Number of FAP services for which neighbors have changed: \"/>\n<parameter name=\"field2\" value=\"`$nbrlist-change-notification-input.fap-service-number-of-entries-changed`\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 311.0002975463867,
+ "y": 170.02084732055664,
+ "z": "e365f261.0028d",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "3b43614d.42cd1e",
+ "type": "set",
+ "name": "set tmp variables for notif input parms",
+ "xml": "<set>\n<parameter name=\"tmp.alias\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].alias`\"/>\n<parameter name=\"tmp.cid\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].cid`\"/>\n<parameter name=\"tmp.phy-cell-id-in-use\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].phy-cell-id-in-use`\"/>\n<parameter name=\"tmp.pnf-name\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].pnf-name`\"/>\n<parameter name=\"tmp.lte-cell-number-of-entries\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].lte-cell-number-of-entries`\"/>",
+ "comments": "",
+ "x": 781.0010986328125,
+ "y": 225.89947891235352,
+ "z": "e365f261.0028d",
+ "wires": []
+ },
+ {
+ "id": "1c34cf50.e940a1",
+ "type": "execute",
+ "name": "execute Properties",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n <parameter name='fileName' value='/opt/onap/ccsdk/data/properties/sdnr-CMNotify-api-dg.properties' />\n <parameter name='contextPrefix' value='prop' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 506.00018310546875,
+ "y": 191.02083206176758,
+ "z": "e365f261.0028d",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "681abe9f.71ebb",
+ "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/ves-nbrlist-change-notif.log\" />\n<parameter name=\"level\" value=\"info\" />\n<parameter name=\"field1\" value=\"Properties read ..configDB URL\"/>\n<parameter name=\"field2\" value=\"`$prop.configdb.url`\"/>\n<parameter name=\"field3\" value=\"Properties read ..DMAAP Msg Router URL\"/>\n<parameter name=\"field4\" value=\"`$prop.configdb.url`\"/>\n<parameter name=\"field5\" value=\"`$prop.dmaap-message-router.url`\"/>\n<parameter name=\"field6\" value=\"`$prop.controller.pwd`\"/>\n<parameter name=\"field7\" value=\"`$prop.controller.url`\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 471.00030517578125,
+ "y": 245.0209083557129,
+ "z": "e365f261.0028d",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "c2a6556d.4d96f8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic='true'>",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 647,
+ "y": 93.00000381469727,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "46b206d1.328288",
+ "dd208eef.5b405"
+ ]
+ ]
+ },
+ {
+ "id": "dd208eef.5b405",
+ "type": "for",
+ "name": "for",
+ "xml": "<for index='idy' start='0' end=\"`$nbrlist-change-notification-input.fap-service[$idx].lte-cell-number-of-entries`\" >",
+ "comments": "",
+ "outputs": 1,
+ "x": 819,
+ "y": 123.00000381469727,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "654cb6f6.2f7848"
+ ]
+ ]
+ },
+ {
+ "id": "654cb6f6.2f7848",
+ "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/ves-nbrlist-change-notif.log\" />\n<parameter name=\"level\" value=\"info\" />\n<parameter name=\"field1\" value=\"Neighbor #: \"/>\n<parameter name=\"field2\" value=\"`$idy`\"/>\n<parameter name=\"field3\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].plmnid`\"/>\n<parameter name=\"field4\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].cid`\"/>\n<parameter name=\"field5\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].phy-cell-id`\"/>\n<parameter name=\"field6\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].pnf-name`\"/>\n<parameter name=\"field7\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].blacklisted`\"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 970,
+ "y": 117.00000381469727,
+ "z": "e365f261.0028d",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "cacad6a.74e6028",
+ "type": "for",
+ "name": "for",
+ "xml": "<for index='idx' start='0' end=\"`$nbrlist-change-notification-input.fap-service-number-of-entries-changed`\" >",
+ "comments": "",
+ "outputs": 1,
+ "x": 346,
+ "y": 371,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "23ccad8.b78ea52"
+ ]
+ ]
+ },
+ {
+ "id": "23ccad8.b78ea52",
+ "type": "block",
+ "name": "block : ConfigDB Update",
+ "xml": "<block atomic='true'>",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 525,
+ "y": 362.00000381469727,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "3b43614d.42cd1e",
+ "7a2468e9.edebc8"
+ ]
+ ]
+ },
+ {
+ "id": "7a2468e9.edebc8",
+ "type": "for",
+ "name": "for",
+ "xml": "<for index='idy' start='0' end=\"`$nbrlist-change-notification-input.fap-service[$idx].lte-cell-number-of-entries`\" >",
+ "comments": "",
+ "outputs": 1,
+ "x": 742,
+ "y": 336.00000381469727,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "8e06e48c.36b168"
+ ]
+ ]
+ },
+ {
+ "id": "b1c0b593.fe96b8",
+ "type": "set",
+ "name": "set tmp variables for notif neigbor input parms",
+ "xml": "<set>\n<parameter name=\"tmp.nbr.plmnid\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].plmnid`\"/>\n<parameter name=\"tmp.nbr.cid\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].cid`\"/>\n<parameter name=\"tmp.nbr.phy-cell-id\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].phy-cell-id`\"/>\n<parameter name=\"tmp.nbr.pnf-name\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].pnf-name`\"/>\n<parameter name=\"tmp.nbr.blacklisted\" value=\"`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].blacklisted`\"/>",
+ "comments": "",
+ "x": 1140,
+ "y": 210.00000381469727,
+ "z": "e365f261.0028d",
+ "wires": []
+ },
+ {
+ "id": "8e06e48c.36b168",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic='true'>",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 875,
+ "y": 284.00000381469727,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "b1c0b593.fe96b8",
+ "c91fd3ed.ea1a9",
+ "8ff49992.4b25f8",
+ "30d460ed.4d3f2"
+ ]
+ ]
+ },
+ {
+ "id": "c91fd3ed.ea1a9",
+ "type": "execute",
+ "name": "generate configdb add URL for nbr",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n <parameter name=\"source\" value=\"`$prop.restapi.configdb.add-nbrlist-change-per-notif`\"/>\n <parameter name=\"outputPath\" value=\"tmp.configdb.add-nbrlist-change-per-notif.url\"/>\n <parameter name=\"target\" value=\"{cellId}\"/>\n <parameter name=\"replacement\" value=\"`$tmp.cid`\"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1138,
+ "y": 256.00000381469727,
+ "z": "e365f261.0028d",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "8ff49992.4b25f8",
+ "type": "record",
+ "name": "record configdb RestAPI parms",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/handle-nbrlist-change-notif.log\" />\n<parameter name=\"level\" value=\"info\" />\n<parameter name=\"field1\" value=\"URL for configDB neighbor cell ADD\"/>\n<parameter name='field2' value=\"`$prop.configdb.url + $tmp.configdb.add-nbrlist-change-per-notif.url`\" />\n<parameter name='field3' value=\"`$tmp.nbr.cid`\" />\n<parameter name='field4' value=\"`$tmp.nbr.blacklisted`\" />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1133,
+ "y": 305.00000381469727,
+ "z": "e365f261.0028d",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "30d460ed.4d3f2",
+ "type": "execute",
+ "name": "Add neighbor to Cell",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/CMNotify-add-nbr-to-configdb-per-nbrlist-change-notif.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.configdb.url + $tmp.configdb.add-nbrlist-change-per-notif.url`\"/>\n<parameter name=\"httpMethod\" value=\"PUT\"/>\n<parameter name=\"responsePrefix\" value=\"CMNotify-configdb-response\"/>\n<parameter name='contentType' value='application/json' /> \n<parameter name='format' value='json' />\n<parameter name='accept' value='application/json' />",
+ "comments": "",
+ "outputs": 1,
+ "x": 1104,
+ "y": 383.00000381469727,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "bef59603.eb6c28",
+ "82674e19.0b984"
+ ]
+ ]
+ },
+ {
+ "id": "bef59603.eb6c28",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1306,
+ "y": 350.00000381469727,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "2af0bc2d.9a03f4"
+ ]
+ ]
+ },
+ {
+ "id": "82674e19.0b984",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1298.999891281128,
+ "y": 428.9999132156372,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "9972d4be.cec088"
+ ]
+ ]
+ },
+ {
+ "id": "2af0bc2d.9a03f4",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1466.9998779296875,
+ "y": 307.0000343322754,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "9186101c.ebef7"
+ ]
+ ]
+ },
+ {
+ "id": "9186101c.ebef7",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error adding neighbor to configdb. Aborting notification update\" />",
+ "comments": "",
+ "x": 1645.999568939209,
+ "y": 304.00000190734863,
+ "z": "e365f261.0028d",
+ "wires": []
+ },
+ {
+ "id": "9972d4be.cec088",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1456.9996337890625,
+ "y": 394.99997329711914,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "400b8692.be8148"
+ ]
+ ]
+ },
+ {
+ "id": "400b8692.be8148",
+ "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/ves-nbrlist-change-notif.log\" />\n<parameter name=\"level\" value=\"info\" />\n<parameter name=\"field1\" value=\"Neighbor Added to ConfigDB \"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1635.9997024536133,
+ "y": 393.9999599456787,
+ "z": "e365f261.0028d",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "9491fd51.6d973",
+ "type": "execute",
+ "name": "execute DmaapMsg",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.dmaap-publish.templatefile`\" />\n <parameter name='restapiUrl' value=\"`$prop.dmaap-message-router.url + '/' + $prop.CMNotify-dmaap.nbrlist-change.topic`\" />\n <parameter name='format' value='json' />\n <parameter name='httpMethod' value='POST' />\n <parameter name='contentType' value='application/json' />\n <parameter name='responsePrefix' value='dmaap' />",
+ "comments": "",
+ "outputs": 1,
+ "x": 676.5,
+ "y": 521.0833168029785,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "c2fb651f.83fdf8",
+ "f266f5d2.b65708"
+ ]
+ ]
+ },
+ {
+ "id": "d9c9c262.acaa7",
+ "type": "set",
+ "name": "set",
+ "xml": "<set>\n<parameter name='tmp.oofpcipoc-dmaap.requestID' value='`$prop.CMNotify-dmaap.requestID`'/>\n<parameter name='tmp.oofpcipoc-dmaap.aai' value=\"`$prop.CMNotify-dmaap.aai`\"/>\n<parameter name='tmp.oofpcipoc-dmaap.version' value='`$prop.CMNotify-dmaap.version`'/>\n<parameter name='tmp.oofpcipoc-dmaap.action' value='`$prop.CMNotify-dmaap.action`'/>\n<parameter name='tmp.oofpcipoc-dmaap.payload' value='`$nbrlist-change-notification-input.payload`'/>",
+ "comments": "",
+ "x": 671.166748046875,
+ "y": 427.0833168029785,
+ "z": "e365f261.0028d",
+ "wires": []
+ },
+ {
+ "id": "c2fb651f.83fdf8",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 872,
+ "y": 461.00000381469727,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "1c059a5a.142026"
+ ]
+ ]
+ },
+ {
+ "id": "f266f5d2.b65708",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 857.9998779296875,
+ "y": 594.999942779541,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "f560935d.61fab"
+ ]
+ ]
+ },
+ {
+ "id": "1c059a5a.142026",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1062.9998779296875,
+ "y": 491.0000343322754,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "47ce8954.135548"
+ ]
+ ]
+ },
+ {
+ "id": "47ce8954.135548",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error publishing DMAAP message. ConfigDB Updated; TO be rolled back...will handle next release\" />",
+ "comments": "",
+ "x": 1241.999568939209,
+ "y": 488.00000190734863,
+ "z": "e365f261.0028d",
+ "wires": []
+ },
+ {
+ "id": "f560935d.61fab",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1052.9996337890625,
+ "y": 578.9999732971191,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "9d733460.1d7b38"
+ ]
+ ]
+ },
+ {
+ "id": "9d733460.1d7b38",
+ "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/ves-nbrlist-change-notif.log\" />\n<parameter name=\"level\" value=\"info\" />\n<parameter name=\"field1\" value=\"DMAAP Message Successfully Published \"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1231.9997024536133,
+ "y": 577.9999599456787,
+ "z": "e365f261.0028d",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "7c1b714b.48842",
+ "type": "block",
+ "name": "block : Publish DMAAP Message",
+ "xml": "<block atomic='true'>",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 427,
+ "y": 465,
+ "z": "e365f261.0028d",
+ "wires": [
+ [
+ "d9c9c262.acaa7",
+ "9491fd51.6d973"
+ ]
+ ]
+ },
+ {
+ "id": "78866421.b367ac",
+ "type": "comment",
+ "name": "DMAAP Publish Not Reqd. Just a placeholder",
+ "info": "",
+ "comments": "",
+ "x": 391,
+ "y": 519,
+ "z": "e365f261.0028d",
+ "wires": []
+ }
+]
diff --git a/platform-logic/cMNotify-api/src/main/resources/graph.versions b/platform-logic/cMNotify-api/src/main/resources/graph.versions
new file mode 100644
index 0000000..a5e04b2
--- /dev/null
+++ b/platform-logic/cMNotify-api/src/main/resources/graph.versions
@@ -0,0 +1 @@
+CM-NOTIFY-API nbrlist-change-notification ${project.version} sync
diff --git a/platform-logic/cMNotify-api/src/main/xml/CM-NOTIFY-API_nbrlist-change-notification.xml b/platform-logic/cMNotify-api/src/main/xml/CM-NOTIFY-API_nbrlist-change-notification.xml
new file mode 100644
index 0000000..5838064
--- /dev/null
+++ b/platform-logic/cMNotify-api/src/main/xml/CM-NOTIFY-API_nbrlist-change-notification.xml
@@ -0,0 +1,126 @@
+<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='CM-NOTIFY-API' version='${project.version}'>
+ <method rpc='nbrlist-change-notification' mode='sync'>
+ <block atomic='true'>
+ <for index='idx' start='0' end="`$nbrlist-change-notification-input.fap-service-number-of-entries-changed`" >
+ <block atomic='true'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/ves-nbrlist-change-notif.log" />
+ <parameter name="level" value="info" />
+ <parameter name="field1" value="Input RPC Payload request. FAP #: "/>
+ <parameter name="field2" value="`$idx`"/>
+ <parameter name="field3" value="`$nbrlist-change-notification-input.fap-service[$idx].alias`"/>
+ <parameter name="field4" value="`$nbrlist-change-notification-input.fap-service[$idx].cid`"/>
+ <parameter name="field5" value="`$nbrlist-change-notification-input.fap-service[$idx].phy-cell-id-in-use`"/>
+ <parameter name="field6" value="`$nbrlist-change-notification-input.fap-service[$idx].pnf-name`"/>
+ <parameter name="field7" value="Number of neigbors Changed/To Be Added #: "/>
+ <parameter name="field8" value="`$nbrlist-change-notification-input.fap-service[$idx].lte-cell-number-of-entries`"/>
+ </record>
+ <for index='idy' start='0' end="`$nbrlist-change-notification-input.fap-service[$idx].lte-cell-number-of-entries`" >
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/ves-nbrlist-change-notif.log" />
+ <parameter name="level" value="info" />
+ <parameter name="field1" value="Neighbor #: "/>
+ <parameter name="field2" value="`$idy`"/>
+ <parameter name="field3" value="`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].plmnid`"/>
+ <parameter name="field4" value="`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].cid`"/>
+ <parameter name="field5" value="`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].phy-cell-id`"/>
+ <parameter name="field6" value="`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].pnf-name`"/>
+ <parameter name="field7" value="`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].blacklisted`"/>
+ </record>
+ </for>
+ </block>
+ </for>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/ves-nbrlist-change-notif.log" />
+ <parameter name="level" value="info" />
+ <parameter name="field1" value="RPC to handle VES event: nbrlist change notification invoked. Number of FAP services for which neighbors have changed: "/>
+ <parameter name="field2" value="`$nbrlist-change-notification-input.fap-service-number-of-entries-changed`"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='/opt/onap/ccsdk/data/properties/sdnr-CMNotify-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/ves-nbrlist-change-notif.log" />
+ <parameter name="level" value="info" />
+ <parameter name="field1" value="Properties read ..configDB URL"/>
+ <parameter name="field2" value="`$prop.configdb.url`"/>
+ <parameter name="field3" value="Properties read ..DMAAP Msg Router URL"/>
+ <parameter name="field4" value="`$prop.configdb.url`"/>
+ <parameter name="field5" value="`$prop.dmaap-message-router.url`"/>
+ <parameter name="field6" value="`$prop.controller.pwd`"/>
+ <parameter name="field7" value="`$prop.controller.url`"/>
+ </record>
+ <for index='idx' start='0' end="`$nbrlist-change-notification-input.fap-service-number-of-entries-changed`" >
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.alias" value="`$nbrlist-change-notification-input.fap-service[$idx].alias`"/>
+ <parameter name="tmp.cid" value="`$nbrlist-change-notification-input.fap-service[$idx].cid`"/>
+ <parameter name="tmp.phy-cell-id-in-use" value="`$nbrlist-change-notification-input.fap-service[$idx].phy-cell-id-in-use`"/>
+ <parameter name="tmp.pnf-name" value="`$nbrlist-change-notification-input.fap-service[$idx].pnf-name`"/>
+ <parameter name="tmp.lte-cell-number-of-entries" value="`$nbrlist-change-notification-input.fap-service[$idx].lte-cell-number-of-entries`"/>
+ </set>
+ <for index='idy' start='0' end="`$nbrlist-change-notification-input.fap-service[$idx].lte-cell-number-of-entries`" >
+ <block atomic='true'>
+ <set>
+ <parameter name="tmp.nbr.plmnid" value="`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].plmnid`"/>
+ <parameter name="tmp.nbr.cid" value="`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].cid`"/>
+ <parameter name="tmp.nbr.phy-cell-id" value="`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].phy-cell-id`"/>
+ <parameter name="tmp.nbr.pnf-name" value="`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].pnf-name`"/>
+ <parameter name="tmp.nbr.blacklisted" value="`$nbrlist-change-notification-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].blacklisted`"/>
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+ <parameter name="source" value="`$prop.restapi.configdb.add-nbrlist-change-per-notif`"/>
+ <parameter name="outputPath" value="tmp.configdb.add-nbrlist-change-per-notif.url"/>
+ <parameter name="target" value="{cellId}"/>
+ <parameter name="replacement" value="`$tmp.cid`"/>
+ </execute>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/handle-nbrlist-change-notif.log" />
+ <parameter name="level" value="info" />
+ <parameter name="field1" value="URL for configDB neighbor cell ADD"/>
+ <parameter name='field2' value="`$prop.configdb.url + $tmp.configdb.add-nbrlist-change-per-notif.url`" />
+ <parameter name='field3' value="`$tmp.nbr.cid`" />
+ <parameter name='field4' value="`$tmp.nbr.blacklisted`" />
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/CMNotify-add-nbr-to-configdb-per-nbrlist-change-notif.json'`" />
+ <parameter name="restapiUrl" value="`$prop.configdb.url + $tmp.configdb.add-nbrlist-change-per-notif.url`"/>
+ <parameter name="httpMethod" value="PUT"/>
+ <parameter name="responsePrefix" value="CMNotify-configdb-response"/>
+ <parameter name='contentType' value='application/json' />
+ <parameter name='format' value='json' />
+ <parameter name='accept' value='application/json' />
+ <outcome value='failure'>
+ <block>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error adding neighbor to configdb. Aborting notification update" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/ves-nbrlist-change-notif.log" />
+ <parameter name="level" value="info" />
+ <parameter name="field1" value="Neighbor Added to ConfigDB "/>
+ </record>
+ </block>
+ </outcome>
+ </execute>
+ </block>
+ </for>
+ </block>
+ </for>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="SUCCESSFUL Execution" />
+ </return>
+ </block>
+ </method>
+</service-logic>
diff --git a/platform-logic/pom.xml b/platform-logic/pom.xml
index 1d8c373..8b243ea 100644
--- a/platform-logic/pom.xml
+++ b/platform-logic/pom.xml
@@ -23,6 +23,7 @@
<module>sliapi</module>
<module>oofpcipoc-api</module>
<module>a1Adapter-api</module>
+ <module>cMNotify-api</module>
<module>restapi-templates</module>
<module>installer</module>
</modules>
diff --git a/platform-logic/restapi-templates/src/main/json/CMNotify-add-nbr-to-configdb-per-nbrlist-change-notif.json b/platform-logic/restapi-templates/src/main/json/CMNotify-add-nbr-to-configdb-per-nbrlist-change-notif.json
new file mode 100644
index 0000000..5751e15
--- /dev/null
+++ b/platform-logic/restapi-templates/src/main/json/CMNotify-add-nbr-to-configdb-per-nbrlist-change-notif.json
@@ -0,0 +1,4 @@
+{
+ "targetCellId": ${tmp.nbr.cid},
+ "ho": ${tmp.nbr.blacklisted}
+}