...
External VNFM can subscribe to SOL002 VNF Indicator notifications.
SOL002 Adapter reads VNF spesific specific VES events from DMaaP according to subscriptions and converts events to SOL002 interface format and sends as Notify events to external VNFM.
...
Initially (for Frankfurt) SOL002_Adapter will be located in SO. Later on it has to be moved to other component (e.g. GNFC).
Development
The Ve-Vnfm-Adapter (SOL002Adapter) application is built using spring-boot with the web starter.
Subscription
Several times it tries to connect to AAI and get the list of resources with the type VNFM:
GET: https://aai.onap:8443/aai/v15/external-system/esr-vnfm-list
GET: https://aai.onap:8443/aai/v15/external-system/esr-vnfm-list/esr-vnfm/{name}?depth=1
Then the adapter connects to the URLs of all VNFMs in the list. It sends them its URL address and receives the subscription id.
Later, from time to time, it connects again to the VNFMs and checks if the subscription id is valid.
When it stops to be valid, it tries to re-subscribe for this VNFM again.
Notification
Whenever a VNFM receives an LCM Action message, the VNFM sends the information to the URL of the Ve-Vnfm-Adapter application that had subscribed to this VNFM.
When a Ve-Vnfm-Adapter application receives the Notification it sends a message about it to the Policy through the DMaaP.
DMaaP Message Format
Below is a message (the values are sample) sent over to DMaaP.
Code Block |
---|
{ "closedLoopControlName": "ClosedLoopControlName", "closedLoopAlarmStart": 1589825445, "closedLoopEventClient": "microservice.stringmatcher", "closedLoopEventStatus": "ONSET", "requestID": "8478ff7d-409d-4b7d-b932-f09ab54765ab", "target_type": "VNF", "target": "generic-vnf.vnf-id", "AAI": { "vserver.is-closed-loop-disabled": false, "generic-vnf.vnf-id": "<etsiLcmEventId>" }, "from": "ETSI", "version": "1.0.2", "etsiLcmEvent": { "id": "<etsiLcmEventId>", "notificationType": "VnfLcmOperationOccurrenceNotification", "subscriptionId": null, "timeStamp": null, "notificationStatus": "RESULT", "operationState": "COMPLETED", "vnfInstanceId": "2124DEPF", "operation": "INSTANTIATE", "isAutomaticInvocation": null, "vnfLcmOpOccId": "86d3de41-a7f7-48eb-9868-5b103dc36d26", "affectedVnfcs": [ { "id": "abc123", "vduId": "vdu987", "changeType": "ADDED", "computeResource": { "vimConnectionId": "vim001" } } ], "affectedVirtualLinks": null, "affectedVirtualStorages": null, "changedInfo": null, "changedExtConnectivity": null, "error": null, "_links": { "vnfInstance": { "href": "https://so-vnfm-simulator.onap:9093/vnflcm/v1/vnf_instances/2124DEPF" }, "subscription": null, "vnfLcmOpOcc": { "href": "https://so-vnfm-simulator.onap:9093/vnflcm/v1/vnf_lcm_op_occs/86d3de41-a7f7-48eb-9868-5b103dc36d26" } } } } |