...
Jira | ||||||||
---|---|---|---|---|---|---|---|---|
|
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.
...
# | Description | Notes | Decision | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | AAI failed to send DMaaP notification after xNF was created |
| The bug causing this error was fixed and changes have been merged. | ||||||||||
2 | DMaap Client failed because of dependency Issues |
| 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 | Based on input from (DMaaP) team and possible lack of future support we will do filtering on client side | ||||||||||
4 | Update Events for address information | is 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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{"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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
# 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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
mrConsumer.fetch() |
POC code used in the demo
The POC used in the demo:
...