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.
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.