Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Jira
serverONAP Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-393

Spike Description

...

Investigate A&AI interface, especially how to register and receive DMaaP Events from A&AI. Investigate filter-options and consider some PoC code.

...

#DescriptionNotesDecision
1AAI failed to send DMaaP notification after xNF was created

Jira
serverONAP Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyAAI-3350
 

The bug causing this error was fixed and changes have been merged.
2DMaap Client failed because of dependency Issues

Jira
serverONAP Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyDMAAP-1627

The bug causing this error was fixed and changes have been submitted.
3

setFilter() is not documented

Fiachra Corcoran (DMaaP) advised any existing documentation is out of date and this should not be used

Toine Siebelink  

Based on input from (DMaaP) team and possible lack of future support we will do filtering on client side

4Update Events for address informationis it possible for address information to change ie. does CPS need to  listen to these?


Background

...

When a xNF object is added to A&AI, a DMaaP event, AAI-EVENT is created. A&AI handles the publishing of this event. To be notified of the AAI-EVENT, CPS will need to register on DMaaP Message Router.

DMaaP offers a client plugin called DMaaP Client, which can be found here. This Client can be used to register to a DMaaP event. The PoC code will use this client to show that CPS can listen for and receive DMaaP events.

Filtering of AAI-EVENT

...

Based on input from the DMaaP team, the filtering will be done on client side. From looking at the DMaaP event that is created when a xNF is created, we can filter on the following properties: 

...

Code Block
themeRDark
titleDMaaP Event
linenumberstrue
collapsetrue
{"cambria.partition":"AAI",
    "event-header":{
        "severity":"NORMAL",
        "entity-type":"pnf",
        "top-entity-type":"pnf",
        "entity-link":"/aai/v23/network/pnfs/pnf/dummyTest30",
        "event-type":"AAI-EVENT",
        "domain":"dev",
        "action":"CREATE",
        "sequence-number":"0","id":"577eb229-7c74-4cf8-84ab-79f66f4899b2",
        "source-name":"SO",
        "version":"v23",
        "timestamp":"20210701-12:45:09:351"
    },
    "entity":{
        "ipaddress-v4-oam":"100.10.20.20",
        "equip-type":"example-equip-type-val-20348",
        "equip-vendor":"example-equip-vendor-val-52182",
        "ipaddress-v6-oam":"",
        "orchestration-status":"Active",
        "pnf-name2":"dummypnf-1597953056126",
        "equip-model":"example-equip-model-val-8370",
        "in-maint":false,
        "resource-version":"1625143508438",
        "pnf-id":"927b2580-36d9-4f13-8421-3c9d43b7a75e",
        "management-option":"example-management-option-val-72881",
        "spare-equipment-indicator":false,
        "pnf-name":"dummyTest30"}
}

Proof Of Concept Code

...

Adding DMaaP Client dependency

To use the DMaaP Client we need the following dependency in our pom.xml file.

Code Block
languagexml
themeRDark
titleDMaaP Client dependency in pom.xml
linenumberstrue
    <dependency>
        <groupId>org.onap.dmaap.messagerouter.dmaapclient</groupId>
        <artifactId>dmaapClient</artifactId>
        <version>1.1.12</version>
    </dependency>
Creating DMaaP consumer client 

The following builder method is used to create an instance of a DMaaP Consumer Client:

...

Code Block
languagejava
themeRDark
titleSetting the Protocol property
linenumberstrue
# The http protocol to use:
# http
# https

final Properties props = new Properties();
props.setProperty("Protocol", "http");
mrConsumer.setProps(props);
Fetching DMaaP event using the consumer object

To fetch, the following method needs to be called on the consumer object:

Code Block
languagejava
themeRDark
titleFetch Method Example
linenumberstrue
mrConsumer.fetch()
POC code used in the demo

The POC used in the demo:

...