Use my VNFM

In this section are described the REST interfaces which allow you to use your Virtual Network Function Manager (VNFM) with Openbaton's Network Function Virtualization Orchestrator (NFVO).

NFVO - VNFM ReST interface

NFVO exposes a REST interface for the communication with the VnfManagers. The sequence diagram regarding the instantiation of a NetworkServiceRecord is shown in the following picture.

NFVO - VNFM REST interface

As shown in the picture, the NFVO calls some ReST methods on the VNFM in a particular order. Then it expects the corresponding call back. The different types of exchanges are described in the following sections. The ALLOCATE_RESOURCES call is not needed if the VNFM will take care of creating VMs. The communication with the EMS is particular to each VNFM. In order to be able to be found, the VNFM needs to register to the NFVO. This can be done through a particular registration call.

In the following 'Vnfm-Or' means that the Vnfm sends to the Nfvo and 'Or-Vnfm' means that the Nfvo sends to the Vnfm.

Params Meaning
OrEndpoint The endpoint of the NFVO (i.e. http://127.0.0.1:8080)
VnfmEnpoint The endpoint of the VNFM. This is given to the NFVO while registering

Registering a VNFM to the NFVO (Vnfm-Or)

This call registers a VNFM to an NFVO.

request path

POST request on

OrEndpoint/admin/v1/vnfm-register

request body
{
    "type":"dummy",
    "endpointType":"REST",
    "endpoint":"VnfmEndpoint",
    "description":"MyVnfm",
    "enabled":"true"
}
request structure
Field Meaning
type the VNFM type you are going to handle (specified in VirtualNetworkFunctionDescriptor → endpoint)
endpointType the VNFM type you are going to implement (REST or AMQP)
endpoint the VNFM endpoint to which the NFVO will connect (basically http://<IP>:<PORT>)

INSTANTIATE (Or-Vnfm)

This call sends the Virtual Network Function Descriptor (VNFD) to the VNFM, which shall be used to create the Virtual Network Funtion Record (VNFR) and also sends to the VNFM all the scripts which are executed in actions like INSTANTIATE, MODIFY or START. This call triggers the creation of a Virtual Machine for the VNFCInstances specified in the sent VNFD and triggers the execution of the scripts which are associated with the INSTANTIATE lifecycle event in the VNFD.

request path

POST request on VnfmEnpoint

request body
{
    "vnfd":{  ...  }, 
    "vnfdf":{  ...  },
    "vlrs":[  ...  ],
    "extention":{  
      "nsr-id":"...",
      "brokerIp":"...",
      ...
    },
    "action":"INSTANTIATE",
    "vimInstances": {
      "vdu_id":[
        { ... },
        { ... }
      ]
    },
    "vnfPackage": { ... },
    "keypairs":[
    { ... }
    ]  
}
request structure
Field Meaning
vnfd the VNFD used to create the VNFR
vnfdf the deployment flavours to be used
vlrs the list of VirtualLinkRecords of the NetworkServiceRecord
extention some info like the NetworkServiceRecord id
action the action to be executed
vimInstances a map containing per each VDU id the list of VimInstance objects
vnfPackage the VNFPackage of the VNFR
keypairs the list of additional keypairs to be added to the VM

GrantOperation (Vnfm-Or)

This call sends the VNFR to the NFVO in order to ask if there are enough resources

request path

POST request on OrEndpoint/admin/v1/vnfm-core-grant

request body
{
    "action":"GRANT_OPERATION",
    "virtualNetworkFunctionRecord":{..}
}
request structure
Field Meaning
action GRANT_OPERATION
virtualNetworkFunctionRecord the VNFR

GrantOperation (Or-Vnfm)

This call returns the NFVO's answer to the grant operation call

request path

POST request on VnfmEnpoint

request body
{
    "grantAllowed": true,
    "vduVim": {
      "vdu_id": {  }
    },
    "virtualNetworkFunctionRecord":{
        ...
    }
}
request structure
Field Meaning
grantAllowed if the NFVO has granted the allocate resources
vduVim which VIM was chosen per VDU
virtualNetworkFunctionRecord the VNFR

AllocateResources (Vnfm-Or)

This call sends the VNFR to the NFVO in order to allocate resources

request path

POST request on OrEndpoint/admin/v1/vnfm-core-allocate

request body
{
    "virtualNetworkFunctionRecord":{..},
    "vimInstances":{
      "vdu_id":{ ... }
    },
    "userdata":"",
    "keypairs":[
    { ... }
    ]
}
request structure
Field Meaning
virtualNetworkFunctionRecord the VNFR
vimInstances the chosen VIM per VDU
userdata the userdata
keypairs the keypairs to be added to the VM by the NFVO

AllocateResources (Or-Vnfm)

This call returns the new VNFR to the VNFM

request path

POST request on VnfmEnpoint

request body
{
    "vnfr": { ... }
}
request structure
Field Meaning
virtualNetworkFunctionRecord the updated VNFR

Instantiate (Vnfm-Or)

This call sends back the created Virtual Network Function Record to the NFVO.

request path

POST request on OrEndpoint/admin/v1/vnfm-core-actions

request body
{
    "virtualNetworkFunctionRecord":{  ...  }, 
    "action":"INSTANTIATE"
}
request structure
Field Meaning
virtualNetworkFunctionRecord the created VirtualNetworkFunctionRecord
action the action that was executed

Modify (aka AddRelations) (Or-Vnfm)

The Nfvo uses this request to provide dependencies of Virtual Network Functions to the VNFM. The scripts associated with the CONFIGURATION lifecycle event in the VNFR will be executed.

request path

POST request on

VnfmEnpoint

request body
{
    "vnfr":{ ... }, 
    "vnfrd":{ ... }, 
    "action":"MODIFY"
}
request structure
Field Meaning
vnfr the dependency's target VNFR
vnfrd the VNFDependency containing all the source parameters needed by the scripts
action the action to be executed

Modify (aka AddRelations) (Vnfm-Or)

This call sends back the modified Virtual Network Function Record to the NFVO.

request path

POST request on

OrEndpoint/admin/v1/vnfm-core-actions

request body
{
    "virtualNetworkFunctionRecord":{ ... },
    "action":"MODIFY"
}
request structure
Field Meaning
virtualNetworkFunctionRecord the VNFR
action the action that was executed

Start (Or-Vnfm)

This call will trigger the execution of the scripts associated with the START lifecycle event in the VNFR.

request path

POST request on

VnfmEnpoint

request body
{
    "vnfr":{  ...  },
    "action":"START"
}
request structure
Field Meaning
vnfr the VNFR to start
action the action to be executed

Start (Vnfm-Or)

request path

POST request on

OrEndpoint/admin/v1/vnfm-core-actions

request body
{
    "virtualNetworkFunctionRecord":{  ...  },
    "action":"START"
}
request structure
Field Meaning
virtualNetworkFunctionRecord the Virtual Network Function Record
action the action that was executed

With this last message the VNF managed by this VNFM will be set to ACTIVE. When all the VNF are set to ACTIVE also the NSR will be set to ACTIVE and the deployment succeeded.