Introduction
SOL002 Adapter is similar ETSI adapter as SOL003 and SOL005 that does conversion of ONAP functionality to ETSI MANO functionality and back. Architecture and placement in ONAP should be inline with other ETSI adapters and all common functionality should be shared and implemented just ones e.g.
- Security
- HPA
- Any other ONAP functionality e.g. AAI access, Policy access, Logging.
All ETSI adapters should also shared common code base for ETSI models, DTOs and interface implementation as those will be technically very same towards external MANO.
Use Cases
VNF LCM (Ve-Vnfm-em)
SOL002 VNF LCM interface use can be divided to 2 separate sub-use cases:
- LCM Action execution
- ONAP Close Loop gets triggered from VES event or by other means and can trigger SOL002 Adapter to perform action using VNF LCM interface
- LCM Notification Subscribing/Consuming
- At startup SOL002 Adapter can subscribe LCM notifications from VNFM
- When receiving notifications SOL002 Adapter can perform actions e.g.:
- Clean up VNF related Close Loop when receiving VNF terminated notification
- Configure VNF (Similar as in VNF Configuration use case.) when receiving VNF Instantiated/Healed/Scaled notification.
Benefits:
- VNFC level LCM actions (compared to SOL003 which only allows action at the VNF level)
VNF Indicator Interface (Ve-Vnfm-em)
External VNFM can subscribe to SOL002 VNF Indicator notifications.
SOL002 Adapter reads VNF spesific VES events from DMaaP according to subscriptions and converts events to SOL002 interface format and sends as Notify events to external VNFM.
Benefits:
- Enables ETSI style Close Loops in VNFM (for VNFs supporting ONAP VES events)
VNF Configuration (Ve-Vnfm-em)
As part of VNF instantiation/heal/scaleOut VNFM can set VNF initial configuration using SOL002 VNF Configuration Interface towards EM (ONAP).
SOL002 Adapter can convert this configuration to another protocol and ONAP Controller enables Operator configurability.
Benefits:
- This use case enables VNFC level configuration.
- This configuration interface only exists in SOL002 (compared to SOL003).
- The use case enables the external VNFM to use a SOL002 interface to configure a VNF, even when the VNF itself does not support SOL002 configuration.
Feature Descriptions
Feature | Description |
---|---|
SOL002 Adapter executes VNF LCM operations towards VNFM | SOL002 Adapter utilizes VNFM exposed SOL002 VNF LCM interface:
|
SOL002 Adapter subscribes and consumes VNF LCM notifications from VNFM | SOL002 Adapter utilizes VNFM exposed SOL002 VNF LCM interface to subscribe LCM Notifications:
|
SOL002 Adapter receives subscription and sends VNF Indicator notifications to VNFM | SOL002 Adapter exposes VNF Indicator subscription endpoint and sends Indicator notifications to external VNFM:
|
SOL002 Adapter receives VNF configuration request from VNFM | SOL002 Adapter exposes VNF configuration endpoint for external VNFM:
|
Epic and User Story
Epic | User Story | Description | Is Frankfurt? | JIRA |
---|---|---|---|---|
SOL002 Adapter | Epic: SOL002 Adapter will support EM-triggered VNF/VNFC Management | Partially | ||
SOL002 Adapter executes VNF LCM operations towards VNFM | SOL002 Adapter utilizes VNFM exposed SOL002 VNF LCM interface:
| No | ||
SOL002 Adapter subscribes and consumes VNF LCM notifications from VNFM | SOL002 Adapter utilizes VNFM exposed SOL002 VNF LCM interface to subscribe LCM Notifications:
| Yes | ||
SOL002 Adapter receives subscription and sends VNF Indicator notifications to VNFM | SOL002 Adapter exposes VNF Indicator subscription endpoint and sends Indicator notifications to external VNFM:
| No | ||
SOL002 Adapter receives VNF configuration request from VNFM | SOL002 Adapter exposes VNF configuration endpoint for external VNFM:
| No | ||
Documentation for SOL002 Adapter features | Documentation for SOL002 Adapter features | No | ||
SOL002 Adapter Architecture
SOL002Adapter will be the SO microservice component
- SOL002Adapter will be registered in the Microservice Bus (via helm chart)
- SOL002Adapter will be registered manually in the External System Register
- SOL002Adapter on startup will use ESR to get external VNFM data
- SOL002Adapter on startup will register in VNFM for all LCM notifications
- BPMN will trigger LCM operation which will go to SOL003Adapter
- SOL003Adapter triggers the LCM flow in VNFM
- ETSI LCM notification is sent from VNFM and goes to SOL002Adapter
- SOL002Adapter will query A&AI to get VNF data
- SOL002Adapter will construct and publish ONAP event via DCAE/DMaaP. At the current phase it will be DMaaP event t but later on it will evolve to VES event.
- Policy will consume DMaaP event
- Policy will call configuration component to configure VNF
For the integration testing, the VNFM Simulator in the CSIT container will be used
SOL002 Operations
The following SOL002 operations will be supported:
API Action | Actor | Method | URI | Description |
---|---|---|---|---|
Subscribe for LCM notifications | SOL002 Adapter → VNFM | POST | /vnflcm/v1/subscriptions (LccnSubscriptionRequest) | To create subscription for LCM notification |
Notify on VNF lifecycle changes | VNFM → SOL002 Adapter | POST | /lcm/v1/vnf/instances/notifications (VnfLcmOperationOccurrenceNotification) | To notifify SOL002 adapter on VNF lifecycle changes |
SOL002 Operation Sequence Flows
VNF LCM (Ve-Vnfm-em)
LCM Notifications
- SOL002Adapter queries the ESR for external VNFM details.
- SOL002Adapter subscribes in it's startup notifications from external VNFM. Filter used can be wide i.e. all notifications.
- When adapter get's success for subscription request it starts to listen notifications. If subscription fails, adapter continues to try again forever with suitable interval.
- When something happens (e.g. VNF instantiated), external VNFM sends notification
- Query AAI for VNF details. GET query to MANO may also be needed if vnfIds in systems are not same. (Optional step, needed if model translation needed)
- SOL002Adapter makes necessary translation from ETSI model to ONAP model. (To be checked: details of translation or if translation even needed - it depends on SOL003 integration)
- Agreed (to be agreed message format and fields) message format of LCM notification is posted to DMaaP. Another (stretch goal and better long term option) solution is to create VES event and feed it to ONAP's DCAE for normal LC processing.
- Consume LCM notification
- If Operational Policy reacting to LCM notifications is created as part of normal VNF modeling/instantiation, then user's policy is run. It's up to user's policy what it does and following steps is an example for configuring a VNF with ONAP controller.
- Execute policy action towards actor (through DMaaP or directly)
Location
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.
{ "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" } } } }