...
- In AAI, when the "orchestration-status", "service-instance-location-id", "input-params" for a Service Instance changes, notify ExtAPI so it does not need to poll AAI
- AAI does have precedent for publishing events to DMaaP
- ExtAPI to be updated to consume events from DMaaP
- need to get agreement about topic configuration
- Discuss with Adrian OSullivan and Ludovic Robert, to confirm whether existing AAI-EVENT topic in DMaaP suffices for this requirement
From Jimmy Forsyth (AT&T) to Everyone: 01:51 AM
@Brian, yes, AAI sends notification on all changes to DMaaP to the AAI_EVENT (or maybe it’s AAI-EVENT) topicJira server ONAP JIRA serverId 425b2b0a-557c-3c0c-b515-579789cceedb key AAI-1996 Jira server ONAP JIRA serverId 425b2b0a-557c-3c0c-b515-579789cceedb key EXTAPI-98 - James Forsyth Can you please send us the details on what the format of the events are that are sent to DMaaP are from A&AI. For example is there only one topic called AAI-EVENT topic and any change on a service-instance is emitted to DMaaP. So regardless if the change is to orchestration-status or some other parameter, the AAI-EVENT is emitted. All pointers to any associated documentation, notes or code snippets appreciated.
In the case you are interested in, the service-instance can be CREATED, UPDATED, or DELETED (which you find in “action” in the event-header) either as a standalone object or as part of a nested structure. You can use the top-entity-type to tell you which is the containing object, and then use that to determine if a service-instance might be impacted by the operation. In the case of a service-instance update, the top-entity-type will be either customer, service-subscription, or service-instance.
For a customer or service-subscription, you would then look for a service-instance child object - in the example above, the service-instance would be in the position of the p-interface on a service-subscription and in the position of sriov-pf on a customer. All of that depends on how the client uses the interface, and AAI has no control over it. Since users can perform the operation at any of the 3 levels (with a DELETE object, sometimes there are rules about cascading deletes, I’d have to figure out of the customer/service-subscription/service-instance object hierarchy is subject to any of those rules (like it might not let you delete the service-subscription until all the service-instances are gone first; I just don’t recall the rules off the top of my head).
Code Block title Example of AAI-EVENT data { "cambria.partition": "AAI", "entity": { "fqdn": "test.onap.org", "hostname": "pserver-onap", "in-maint": false, "p-interfaces": { "p-interface": [ { "in-maint":true, "interface-name":"p-interface-02-test", "resource-version":"1547072232613", "sriov-pfs":{ "sriov-pf":[ { "pf-pci-id": "sriov-02-test", "resource-version":"1547072232613" } ] } }, { "in-maint":true, "interface-name":"p-interface-test", "resource-version":"1547072232613", "sriov-pfs":{ "sriov-pf":[ { "pf-pci-id": "sriov-test", "resource-version":"1547072232613" } ] } } ] }, "resource-version": "1547072232618" }, "event-header": { "action": "CREATE", "domain": "ONAP", "entity-link":"/aai/v14/cloud-infrastructure/pservers/pserver/pserver-onap", "entity-type": "pserver", "event-type": "AAI-EVENT", "id": "ece20816-1c1b-4f22-9192-62459ee170c5", "sequence-number": "0", "severity": "NORMAL", "source-name": "jimmy-curl", "timestamp": "20190109-22:17:12:660", "top-entity-type": "pserver", "version": "v14" } }
Regarding the "input-parameters", it was added for CCVPN use case (originally as "customer-requests") and there is an example in the comments of: AAI-CCVPN Schema Proposal for Casablanca Release For convenience, the comment is copied below:
Code Block { "service":{ "name":"ONAP_223531", "description":"ONAP_1546", "serviceInvariantUuid":"4a09419a-c9fd-4a53-b1bd-b49603169ca1", "serviceUuid":"1bd0eae6-2dcc-4461-9ae6-56d641f369d6", "globalSubscriberId":"test_custormer", "serviceType":"example-service-type", "parameters":{ "locationConstraints":[ ], "resources":[ { "resourceName":"vEPC_ONAP01", "resourceInvariantUuid":"36ebe421-283a-4ee8-92f1-d09e7c44b911", "resourceUuid":"27a0e235-b67a-4ea4-a0cf-25761afed111", "resourceCustomizationUuid":"47a0e235-b67a-4ea4-a0cf-25761afed231", "parameters":{ "locationConstraints":[ { "vnfProfileId":"b244d433-8c9c-49ad-9c70-8e34b8dc8328", "locationConstraints":{ "vimId":"vmware_vio" } }, { "vnfProfileId":"8a9f7c48-21ce-41b7-95b8-a8ac61ccb1ff", "locationConstraints":{ "vimId":"core-dc_RegionOne" } } ], "resources":[ ], "requestInputs":{ "sdncontroller":"" } } }, { "resourceName":"VL OVERLAYTUNNEL", "resourceInvariantUuid":"184494cf-472f-436f-82e2-d83dddde21cb", "resourceUuid":"95bc3e59-c9c5-458f-ad6e-78874ab4b3cc", "resourceCustomizationUuid":"27a0e235-b67a-4ea4-a0cf-25761afed232", "parameters":{ "locationConstraints":[ ], "resources":[ ], "requestInputs":{ } } } ], "requestInputs":{ "vlunderlayvpn0_name":"l3connect", "vlunderlayvpn0_site1_id":"IP-WAN-Controller-1", "vlunderlayvpn0_site2_id":"SPTNController", "vlunderlayvpn0_site1_networkName":"network1,network2", "vlunderlayvpn0_site2_networkName":"network3,network4", "vlunderlayvpn0_site1_routerId":"a8098c1a-f86e-11da-bd1a-00112444be1a", "vlunderlayvpn0_site2_routerId":"a8098c1a-f86e-11da-bd1a-00112444be1e", "vlunderlayvpn0_site2_importRT1":"200:1,200:2", "vlunderlayvpn0_site1_exportRT1":"300:1,300:2", "vlunderlayvpn0_site2_exportRT1":"400:1,400:2", "vlunderlayvpn0_site1_vni":"2000", "vlunderlayvpn0_site2_vni":"3000", "vlunderlayvpn0_tunnelType":"L3-DCI" } } } }
- In client code using AAI API, make use of "nodes query" as shown in newly published documentation to optimise some queries on AAI data:
- https://docs.onap.org/en/latest/submodules/aai/aai-common.git/docs/AAI%20REST%20API%20Documentation/nodesQuery.html
- Ludovic Robert For example instead of
- "GET /aai/v11/customers/{customerId}service-subscription/{service_subscriptionId}service-instance API/{service-instanceId}"
- use "GET /aai/v11/nodes/service-instances/service-instance/{service-instanceId}" instead
From Jimmy Forsyth (AT&T) to Everyone: 01:51 AM
@Adrian the answers are yes, service-instance-id is unique in ONAP and you can query it directly with the nodes query (see link above)
- https://docs.onap.org/en/latest/submodules/aai/aai-common.git/docs/AAI%20REST%20API%20Documentation/nodesQuery.html
- tbc
...