Contents
VNFM Driver API V0.1
1. Scope
The scope of the present document is to describe the VNFM driver integrated related API specification. Some content has been updated, about the API Swagger definition, you can find here ‘VNFM driver development related API<https://gerrit.onap.org/r/gitweb?p=vfc/nfvo/lcm.git;a=blob;f=lcm/swagger/vfc.vnfdriver.swagger.json;h=fc35adbdc75df1307ca2c43a11bfb472da2a27c6;hb=HEAD>’
2. Terms, Definitions and Abbreviations
For the purposes of the present document, the following abbreviations apply:
Table 2-1 abbreviations
3. Interfaces provided by VNFM Driver
Interfaces use RESTful API and the format is as follows: http(s)://[hostname][:port]/api/{vnfmtype}/v1/{vnfm_id}/[……] R1 vnfmtype: zte-vnfm hw-vnfm juju
3.1 Instantiate VNF
If Definition |
Description |
---|---|
URI |
http(s)://[hostname][:port]/api/{vnfmtype}/v1/{vnfmid}/vnfs |
Operation |
POST |
Direction |
NSLCM->VNFMDriver |
3.1.1 Request
Parameter |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
vnfInstanceName |
M |
1 |
String |
Human-readable name of the VNF instance to be created. |
vnfPackageId |
M |
1 |
String |
VNF packageId |
vnfDescriptorId |
M |
1 |
String |
Information sufficient to identify the VNF Descriptor which defines the VNF to be created. |
flavourId |
M |
0..1 |
String |
Reserved |
vnfInstanceDescription |
M |
0..1 |
String |
Human-readable description of the VNF instance to be created. |
extVirtualLink |
M |
0..N |
Ext Virtual LinkData |
References to external virtual links to connect the VNF to. |
additionalParam |
M |
0..N |
Object |
Additional parameters passed by the NFVO as input to the instantiation process, specific to the VNF being instantiated. |
ExtVirtualLinkData:
Attribute |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
vlInstanceId |
M |
0..1 |
String |
Identifier of the VL instance |
vim |
CM |
0..1 |
VimInfo |
Information about the VIM that manages this resource. This attribute shall be supported and present if VNF-related resource management is direct applicable. |
networkId |
M |
1 |
String |
The network UUID of VIM |
cpdId |
M |
0..1 |
String |
Identifier of the external CPD in VNFD |
VimInfo:
Attribute |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
vimInfoId |
M |
1 |
Identifier |
The identifier of this VimInfo instance, for the purpose of referencing it from other information elements. |
vimId |
M |
1 |
Identifier |
The identifier of the VIM. |
interfaceInfo |
M |
0..N |
KeyValuePair |
Information about the interface to the VIM, including VIM provider type, API version, and protocol type. |
accessInfo |
M |
0..N |
KeyValuePair |
Authentication credentials for accessing the VIM. Examples may include those to support different authentication schemes, e.g., OAuth, Token, etc. |
interfaceEndpoint |
M |
1 |
String |
Information about the interface endpoint. An example is a URL. |
interfaceInfo:
Attribute |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
vimType |
M |
1 |
String |
Type of the VIM |
apiVersion |
M |
1 |
String |
|
protocolType |
M |
1 |
String |
http, https |
accessInfo:
Attribute |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
tenant |
M |
1 |
String |
Tenant Name of tenant |
username |
M |
1 |
String |
Username for login |
password |
M |
1 |
String |
Password of login user |
{
"vnfInstanceName":"vFW",
"vnfPackageId":"1",
"vnfDescriptorId":"1",
"vnfInstanceDescription":"vFW_1",
"extVirtualLinkLink":[
{
"vlInstanceId":"1",
"resourceId":"1246" ,
" cpdId":"11111",
"vim":
{
"vimInfoId":"1",
"vimid":"1",
"interfaceInfo":{
"vimType":"openstack",
"apiVersion":"v2",
"protocolType":"http"
}
"accessInfo":{
"tenant":"tenant_vCPE",
"username":"vCPE",
"password":"vCPE_321"
}
"interfaceEndpoint":"http://10.43.21.105:80/"
}
}
]
"additionalParam":{
……
}
}
3.1.2 Response
Parameter |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
jobId |
M |
1 |
Identifier |
Tenant Name of tenant operation occurrence.
|
vnfInstanceId |
M |
1 |
String |
VNF instance identifier. |
{
"jobId":"1",
"vnfInstanceId":"1"
}
3.2 Terminate VNF
IF Definition |
Description |
---|---|
URI |
http(s)://[hostname][:port]/api/{vnfmtype}/v1/{vnfmid}/vnfs/ {vnfInstanceId}/terminate |
Operation |
POST |
Direction |
NSLCM->VNFMDriver |
3.2.1 Request
Parameter |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
terminationType |
M |
1 |
Enum |
Signals whether forceful or graceful termination is requested. In case of forceful termination, the VNF is shut down immediately, and resources are released. Note that if the VNF is still in service, this may adversely impact network service, and therefore, operator policies apply to determine if forceful termination is allowed in the particular situation. In case of graceful termination, the VNFM first arranges to take the VNF out of service (by means out of scope of the present specification, e.g. involving interaction with EM, if required). Once this was successful, or after a timeout, the VNFM shuts down the VNF and releases the resources. |
graceful Termination Timeout |
M |
0..1 |
Time Duration |
The time interval (second) to wait for the VNF to be taken out of service during graceful termination, before shutting down the VNF and releasing the resources. If not given, it is expected that the VNFM waits for the successful taking out of service of the VNF, no matter how long it takes, before shutting down the VNF and releasing the resources (see note). Minimum timeout or timeout range are specified by the VNF Provider (e.g. defined in the VNFD or communicated by other means). Not relevant in case of forceful termination. |
{
"vnfInstanceId":"1",
"terminationType":"graceful",
"gracefulTerminationTimeout":"60"
}
3.2.2 Response
Parameter |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
jobId |
M |
1 |
Identifier |
Identifier of the VNF lifecycle operation occurrence.
|
{
"jobId":"1"
}
3.3 Query VNF
IF Definition |
Description |
---|---|
URI |
http(s)://[hostname][:port]/api/{vnfmtype}/v1/{vnfmid}/vnfs/ {vnfInstanceId} |
Operation |
GET |
Direction |
NSLCM->VNFMDriver |
3.3.1 Request
VNF filter: vnfInstanceId via url [R1]
3.3.2 Response
Parameter |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
vnfInfo |
M |
o..N |
vnfInfo |
The information items about the selected VNF instance(s) that are returned. If attributeSelector is present, only the attributes listed in attributeSelector will be returned for the selected VNF instance(s). |
VnfInfo Table
Attribute |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
vnfInstanceId |
M |
1 |
String |
VNF instance identifier. |
vnfInstanceName |
M |
o..1 |
String |
VNF instance name. |
vnfInstance Description |
M |
o..1 |
String |
Human-readable description of the VNF instance. |
vnfdId |
M |
1 |
String |
Identifier of the VNFD on which the VNF instance is based. |
vnfPackageId |
M |
o..1 |
String |
Identifier of the VNF Package used to manage the lifecycle of the VNF instance. See note. Shall be present for an instantiated VNF instance. |
version |
M |
1 |
String |
Version of the VNF. |
vnfProvider |
M |
1 |
String |
Name of the person or company providing the VNF. |
vnfType |
M |
1 |
String |
VNF Application Type |
vnfStatus |
M |
1 |
Enum |
The instantiation state of the VNF. Possible values: INACTIVE (Vnf is terminated or not instantiated ), ACTIVE (Vnf is instantiated). [instantiationState] |
{
"vnfInfo":
{
"nfInstanceId":"1",
"vnfInstanceName":"vFW",
"vnfInstanceDescription":"vFW in Nanjing TIC Edge",
"vnfdId":"1",
"vnfPackageId":"1",
"version":"V1.1",
"vnfProvider":"ZTE",
"vnfType":"vFW",
"vnfStatus":" ACTIVE",
}
}
3.4 Get operation status
IF Definition |
Description |
---|---|
URI |
http(s)://[hostname][:port]/api/{vnfmtype} /v1/{vnfmid}/jobs/{jobid}&responseId={ responseId } |
Operation |
GET |
Direction |
NSLCM->VNFMDriver |
3.4.1 Request
None
3.4.2 Response
Parameter |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
jobId |
M |
1 |
String |
Job ID |
responseDescriptor |
M |
1 |
Including: vnfStatus, statusDescription, errorCode,progress, responseHistoryList, responseId |
|
status |
M |
1 |
String |
JOB status started processing finished error |
progress |
M |
1 |
Integer |
progress (1-100) |
statusDescription |
M |
1 |
String |
Progress Description |
errorCode |
M |
1 |
Integer |
Errorcode |
responseId |
M |
1 |
Integer |
Response Identifier |
response HistoryList |
M |
o..N |
ArrayList<> |
History Response Messages from the requested responseId to lastest one. Including fields: vnfStatus, statusDescription, errorCode, progress, responseId |
{
"jobId" : "1234566",
"responseDescriptor" : {
"progress" : "40",
"status" : "proccessing",
"statusDescription" : "OMC VMs are decommissioned in VIM",
"errorCode" : null,
"responseId" : "42",
"responseHistoryList" : [{
"progress" : "40",
"status" : "proccessing",
"statusDescription" : "OMC VMs are decommissioned in VIM",
"errorCode" : null,
"responseId" : "1"
}, {
"progress" : "41",
"status" : "proccessing",
"statusDescription" : "OMC VMs are decommissioned in VIM",
"errorCode" : null,
"responseId" : "2"
}
]
}
}
3.5 Scale VNF
IF Definition |
Description |
---|---|
URI |
http(s)://[hostname][:port]/api/{vnfmtype}/v1/{vnfmid}/vnfs/ {vnfInstanceId}/scale |
Operation |
POST |
Direction |
NSLCM->VNFMDriver |
3.5.1 Request
Parameter |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
type |
M |
1 |
Enum |
Defines the type of the scale operation requested (scale out, scale in). The set of types actually supported depends on the capabilities of the VNF being managed, as declared in the VNFD. See note 1. |
aspectId |
M |
1 |
Identifier |
Identifies the aspect of the VNF that is requested to be scaled |
numberOfSteps |
M |
1 |
Integer |
Number of scaling steps to be executed as part of this ScaleVnf operation. It shall be a positive number. Defaults to 1. The VNF Provider defines in the VNFD whether or not a particular VNF supports performing more than one step at a time. Such a property in the VNFD applies for all |
additional Param |
M |
1 |
KeyValuePair |
Additional parameters passed by the NFVO as input to the scaling proccess, specific to the VNF being scaled. Reserved |
|
{
"vnfInstanceId":"5",
"type":" SCALE_OUT",
"aspectId":"101",
"numberOfSteps":"1",
"additionalParam":{
……
}
}
3.5.2 Response
Parameter |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
jobId |
M |
1 |
String |
The identifier of the VNF lifecycle operation occurrence. |
{
"jobId":"1"
}
3.6 Heal VNF
IF Definition |
Description |
---|---|
URI |
http(s)://[hostname][:port]/api/{vnfmtype}/v1/{vnfmid}/vnfs {vnfInstanceId}/heal |
Operation |
POST |
Direction |
NSLCM->VNFMDriver |
3.6.1 Request
Parameter |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
action |
M |
1 |
String |
Indicates the action to be done upon the given virtual machine. Only “vmReset” is supported currently. |
affectedvm |
M |
1 |
AffectedVm |
Defines the information of virtual machines. |
AffectedVm
Parameter |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
vimid |
M |
1 |
String |
Defines the UUID of virtual machine. |
vduid |
M |
1 |
String |
Defines the id of vdu. |
vmname |
M |
1 |
Defines the name of virtual machine. |
{
"action": "vmReset",
"affectedvm":
{
"vmid": "804cca71-9ae9-4511-8e30-d1387718caff",
"vduid": "vdu_100",
"vmname": "ZTE_SSS_111_PP_2_L"
}
}
3.6.2 Response
Parameter |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
jobId |
M |
1 |
Identifier |
The identifier of the VNF healing operation occurrence. |
{
"jobId":"1"
}
4. Interfaces provided by VFC to integrate with VNFM driver
4.1 VNF Lifecycle Operation Granting Interface
IF Definition |
Description |
---|---|
URI |
http(s)://[hostname][:port]/api/nslcm/v1/ns/grantvnf |
Operation |
POST |
Direction |
VNFMDriver -> NSLCM |
4.1.1 Request
{
"vnfInstanceId": "string",
"vnfDescriptorId": "string",
"lifecycleOperation": "Terminal",
"jobId": "string",
"addResource": [
{
"type": "string",
"resourceDefinitionId": "string",
"vdu": "string"
}
],
"removeResource": [
{
"type": "string",
"resourceDefinitionId": "string",
"vdu": "string"
}
],
"additionalParam": {}
}
4.1.2 Response
{
"vim": {
"vimInfoId": "string",
"vimId": "string",
"interfaceInfo": {
"vimType": "string",
"apiVersion": "string",
"protocolType": "string"
},
"accessInfo": {
"tenant": "string",
"username": "string",
"password": "string"
},
"interfaceEndpoint": "string"
}
}
4.2 VNF LCM Notification Interface
IF Definition |
Description |
---|---|
URI |
http(s)://[hostname][:port]/api/nslcm/v1/ns/{vnfmid}/vnfs/ {vnfInstanceId}/Notify |
Operation |
POST |
Direction |
VNFMDriver -> NSLCM |
4.2.1 Request
{
"status": "result",
"vnfInstanceId": "string",
"operation": "Terminal",
"jobId": "string",
"affectedVnfc": [
{
"vnfcInstanceId": "string",
"vduId": "string",
"changeType": "added",
"vimid": "string",
"vmid": "string",
"vmname": "string"
}
],
"affectedCp": [
{
"virtualLinkInstanceId": "string",
"cpinstanceid": "string",
"cpdid": "string",
"ownerType": "string",
"ownerId": "string",
"changeType": "added",
"portResource": {
"vimid": "string",
"resourceid": "string",
"resourceName": "string",
"tenant": "string",
"ipAddress": "string",
"macAddress": "string",
"instId": "string"
}
}
],
"affectedVl": [
{
"vlInstanceId": "string",
"vldid": "string",
"changeType": "added",
"networkResource": {
"resourceType": "network",
"resourceId": "string"
}
}
],
"affectedVirtualStorage": [
{}
]
}
4.2.2 Response
N/A
4.3 Query VNFM Register Info Interface
IF Definition |
Description |
---|---|
URI |
http(s)://[hostname][:port]/api/nslcm/v1/vnfms/{vnfmid} |
Operation |
GET |
Direction |
VNFMDriver -> NSLCM |
4.3.1 Request N/A
4.3.2 Response
{
"vnfmId": "string",
"name": "string",
"type": "string",
"url": "string",
"userName": "string",
"password": "string",
"vimId": "string",
"vendor": "string",
"version": "string",
"description": "string",
"certificateUrl": "string",
"createTime": "string"
}
4.4 Query VIM Register Info Interface
IF Definition |
Description |
---|---|
URI |
http(s)://[hostname][:port]/api/nslcm/v1/vims/{vimid} |
Operation |
GET |
Direction |
VNFMDriver -> NSLCM |
4.4.1 Request N/A
4.4.2 Response
Parameter |
Qualifier |
Cardinality |
Content |
Description |
---|---|---|---|---|
vimId |
M |
1 |
string |
The identifier of the VIM |
name |
M |
1 |
string |
The name of the VIM |
type |
M |
1 |
string |
The type of the VIM |
url |
M |
1 |
string |
The access URL of the VIM |
userName |
M |
1 |
string |
The user name of the VIM |
password |
M |
1 |
string |
The password of the VIM |
vendor |
M |
1 |
string |
The vendor of the VIM |
version |
M |
1 |
version |
The version of the VIM |
description |
O |
1 |
description |
The description of the VIM |
sslCacert |
O |
1 |
Identifier |
The collection of trusted certificates towards the VIM. |
sslInsecure |
O |
1 |
Identifier |
Whether to verify VIM’s certificate. |
status |
O |
1 |
Identifier |
The status of external system |
{
"vimId": "string",
"name": "string",
"type": "string",
"url": "string",
"userName": "string",
"password": "string",
"vendor": "string",
"version": "string",
"description": "string",
"createTime": "string",
"sslCacert": "string",
"sslInsecure": "string",
"status": "string"
}