EpicFeatureDescription

ETSI Alignment - SO SOL003 plugin support to connect to external VNFMs


ETSI Alignment - SO SOL003 plugin support to connect to an external VNFM. 

  • Leverage ETSI standards for VNF LCM in SO
  • Build SO VNFM Adapter
    • Use SOL003 APIs (2.5.1) for VNF LCM
    • Support operations such as create, instantiate, grant, query, terminate/delete, LCN subscription, LCN and VNF package management
    • Support of Delete VNF is a stretch goal in Dublin
  • Enhance SO BPMN workflows & recipes
    • VNF-level and VF-Module workflows, leveraging VNFM Adapter 
    • Passing VNF LCM requests to VNFM using VNFM Adapter
  •  Provide VNF package management for VNFM (Stretch Goal; under investigation)



User StoriesFeatureDescription

Create the Functional test case to validate VNFM Adapter NBI and SOL003-based SBIValidate VNFM Adapter NBI and SOL003-based SBI

SVNFM Simulator

For integration testing in ONAP, vendor-neutral SVNFM is needed, 

This SVNFM Simulator supports SOL003-based interfaces and message exchange sequences for interface verification.

  • vCPE VNF packages plan to be used for this validation testing.

Create SO VNFM Adapter Northbound Interface using SwaggerCreate SO VNFM Adapter Northbound Interface using Swagger

Create Shell Adapter
  • Deployable VNFM Adapter container in ONAP (including docker image and helm chart)
  • Register VNFM Adapter with MSB

Create placeholder implementation for create VNF (without SVNFM interaction)
  • Create Override YAML in OOM project
  • Define Create/instantiate VNF interface which log the request in SVNFM adapter
  • Create request to VNFM adapter for VNF creation

Note: manual database update to trigger new BB flow and no pre-load

Check for existing VNF (with SVNFM Interaction)
  • Update Override YAML to add A&AI basic auth and URL
  • Generate 003 APIs using swagger
  • Get the generic-vnf from A&AI
  • Select a VNFM from A&AI (if not already associated with a VNFM)
  • Check for existing VNF

Handle Create VNF request in VNFM adapter
  • Get VNFD Id from original csar
  • Send create request to the SVNFM
  • Set self-link based on result of create operation

Instantiate VNF (with SVNFM Interaction)
  • With pre-load data from SDNC based on model name and VNF-type
  • Get the flavor Id from the CSAR
  • Get the VIM info from A&AI
  • Send request to SVNFM
  • Update generic-vnf orchestration status A&AI

Handle Grant Request (Without Homing/OOF)Reply to grant request based on given VIM info in request

Monitor Job Status

Monitor Job Status

  • Adapter Store and return job Id ( job ids stored in cache)
  • Introduce Job monitoring handling in flow
  • Handle time out for Job monitoring ( hard coded/configure in yaml timeout)
  • Identify the VNFM and operation Id for the job
  • Send get operation status request to VNFM
  • Return status

Create relationship between esr-vnfm and generic-vnf in AAI

Create relationship between esr-vnfm and generic-vnf in AAI

  • add a rule to AAI DBEdgeRule ESR
{ "from": "generic-vnf", "to": "esr-vnfm", "label": "tosca.relationships.DependsOn", "direction": "OUT", "multiplicity": "MANY2ONE", "contains-other-v": "NONE", "delete-other-v": "NONE", "prevent-delete": "NONE", "default": "true", "description":"" }
  • read the relationship in the SO VNFM Adapter Adapter

Handle Notification Subscription

Notification Subscription

  • Update generic-vnf status
  • Create vServers
  • Set OAM IP address - source of which needs to be configurable
  • Update Orch status in A&AI to completed

Notification Handling - Instantiate

Notification Handling - Instantiate

  • Update generic-vnf status
  • Create vServers
  • Set OAM IP address - source of which needs to be configurable
  • Update Orch status in A&AI to completed

Monitor Node Status

Monitor Node Status

  • Introduce Node monitoring handling in flow which periodically check orchestration status in A&AI
  • Handle time out for node status handling (hard coded/configurable timeout)

Handling Homing in FlowHandling Homing in Flow

Handle VNF delete and termination (without SVNFM integration)

Deleting/Terminating VNF (without SVNFM integration)

  • Define Terminate/Delete VNF interface in VNFM adapter
  • Update or introduce new building block which invoke VNFM adapter for termination

Terminate VNF (with SVNFM interaction)

Terminate VNF (with SVNFM interaction)

  • Identify the SVNFM to use from A&AI
  • Send terminate request to SVNFM
  • Send delete request to SVNFM
  • Return a job Id
  • Check termination job status in flow

Notification Handling - Terminate

Notification Handling - Terminate

  • Delete vServers
  • Update generic-vnf orchestration status
  • Check node termination status in flow

Remove SDNC pre-load and introduce user_param handling

Remove SDNC pre-load and introduce user_param handling

Handle Failure case where notification is missed (Query VNF)

Handle Failure case where notification is missed (Query VNF)

  • VNFM Adapter expose interface to get of VNF info
  • Flow use VNF info to check status at timeout

Spike - investigate OAM IP address handling for generic-vnf

Investigate OAM IP Address handling for generic-vnf





Note 1: the following design will be completed in the El Alto release. For Dublin, the steps 2 and 3 are not used, and the step 4 will be used to retrieve VNFDs from SDC

Note 2: the step 1 is not important for SO VNFM Adapter in Dublin since the Adapter will get VNFD from SDC directly. 

Note: SO future release could consider SOL001/SOL004 internal representation in its Catalog DB, or using the Run-time Catalog DB






SVNFM is provided by its vendor, which is vendor-specific by nature. For ONAP integration testing for SO VNFM Adapter, a generic VNFM Simulator is needed. This generic VNFM Simulator will support SOL003-compliant interfaces. 

In Dublin, the Simulator will support Crate, Instantiate, Terminate and Delete VNF operations and Grant request/response handling. Simulated mock-up request and response data will be exchanged.


SO VNFM Adapter APIs



ParametersRequired?Data SourceNote
vnfdIdRequireddescriptor_id from VNFD
vnfInstanceNameOptionalUser Input
vnfInstanceDescriptionOptionalUser Input



            1. VNFM sends a POST request to the Grant resource with a “GrantRequest” in the body
            2. VNFM Adapter with SO returns to VNFM a “202 Accepted” response with an empty body, and a “Location” header indicates a callback URL
            3. VNFM Adapter with SO makes the granting decision
            4. VNFM keeps trying to obtain the grant by sending a GET request to VNFM Adapter until a “200 OK” response with a “grant” data in the body
            5. VNFM Adapter finishes the granting process and returns a “200 OK” response with a “Grant” data in the body




              1. VNFM Adapter sends out homing requests to OOF (OSDF) containing resource info
              2. OOF (OSDF) pulls all the related homing constraints from Policy
              3. OOF (HAS) checks AAI database to pull region (flavor) information
              4. OOF (HAS) communicates with Multi-Cloud to check cloud capacity (vims which fulfill the requirements)
              5. OOF (OSDF) returns homing allocation solution to VNFM Adapter