-{\r
- "swagger": "2.0",\r
- "info": {\r
- "version": "1.0.0",\r
- "title": "ONAP VNFM Driver Development Related API",\r
- "description": "ONAP VNFM Driver Development Related Rest API.",\r
- "contact": {\r
- "name": "ONAP VFC team",\r
- "email": "onap-discuss@lists.onap.org",\r
- "url": "https://gerrit.onap.org/r/#/admin/projects/vfc/nfvo/lcm"\r
- }\r
- },\r
- "basePath": "/api",\r
- "schemes": [\r
- "http",\r
- "https"\r
- ],\r
- "consumes": [\r
- "application/json"\r
- ],\r
- "produces": [\r
- "application/json"\r
- ],\r
- "paths": {\r
- "/{vnfmtype}/v1/{vnfmid}/vnfs": {\r
- "post": {\r
- "tags": [\r
- "VNFMDriver"\r
- ],\r
- "summary": "vnf create&instantiate",\r
- "description": "VNF create&instantiate Rest API should be provided by the VNFM Driver",\r
- "operationId": "vnf_instantiate",\r
- "consumes": [\r
- "application/json"\r
- ],\r
- "produces": [\r
- "application/json"\r
- ],\r
- "parameters": [\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfmtype should be the SVNFM driver service name",\r
- "name": "vnfmtype",\r
- "in": "path"\r
- },\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfmid should be the VNFM Instantiate ID",\r
- "name": "vnfmid",\r
- "in": "path"\r
- },\r
- {\r
- "in": "body",\r
- "name": "body",\r
- "description": "instantiate request param",\r
- "required": true,\r
- "schema": {\r
- "$ref": "#/definitions/VnfInstantiateRequest"\r
- }\r
- }\r
- ],\r
- "responses": {\r
- "201": {\r
- "description": "",\r
- "schema": {\r
- "$ref": "#/definitions/VnfInstantiateResponse"\r
- }\r
- }\r
- }\r
- }\r
- },\r
- "/{vnfmtype}/v1/{vnfmid}/vnfs/{vnfInstanceId}/scale": {\r
- "post": {\r
- "tags": [\r
- "VNFMDriver"\r
- ],\r
- "summary": "vnf Scale",\r
- "description": "VNF Scale Rest API should be provided by the VNFM Driver",\r
- "operationId": "vnf_scale",\r
- "consumes": [\r
- "application/json"\r
- ],\r
- "produces": [\r
- "application/json"\r
- ],\r
- "parameters": [\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfmtype should be the SVNFM driver service name",\r
- "name": "vnfmtype",\r
- "in": "path"\r
- },\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfmid should be the VNFM Instantiate ID",\r
- "name": "vnfmid",\r
- "in": "path"\r
- },\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfInstanceId should be the VNF Instantiate ID",\r
- "name": "vnfInstanceId",\r
- "in": "path"\r
- },\r
- {\r
- "in": "body",\r
- "name": "body",\r
- "description": "instantiate request param",\r
- "required": true,\r
- "schema": {\r
- "$ref": "#/definitions/VnfScaleRequest"\r
- }\r
- }\r
- ],\r
- "responses": {\r
- "201": {\r
- "description": "",\r
- "schema": {\r
- "$ref": "#/definitions/JobInfo"\r
- }\r
- },\r
- "404": {\r
- "description": "the VNF instance id is wrong"\r
- },\r
- "500": {\r
- "description": "the url is invalid"\r
- }\r
- }\r
- }\r
- },\r
- "/{vnfmtype}/v1/{vnfmid}/vnfs/{vnfInstanceId}/heal": {\r
- "post": {\r
- "tags": [\r
- "VNFMDriver"\r
- ],\r
- "summary": "vnf heal",\r
- "description": "VNF Heal Rest API should be provided by the VNFM Driver",\r
- "operationId": "vnf_heal",\r
- "consumes": [\r
- "application/json"\r
- ],\r
- "produces": [\r
- "application/json"\r
- ],\r
- "parameters": [\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfmtype should be the SVNFM driver service name",\r
- "name": "vnfmtype",\r
- "in": "path"\r
- },\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfmid should be the VNFM Instantiate ID",\r
- "name": "vnfmid",\r
- "in": "path"\r
- },\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfInstanceId should be the VNF Instantiate ID",\r
- "name": "vnfInstanceId",\r
- "in": "path"\r
- },\r
- {\r
- "in": "body",\r
- "name": "body",\r
- "description": "instantiate request param",\r
- "required": true,\r
- "schema": {\r
- "$ref": "#/definitions/VnfHealRequest"\r
- }\r
- }\r
- ],\r
- "responses": {\r
- "201": {\r
- "description": "",\r
- "schema": {\r
- "$ref": "#/definitions/JobInfo"\r
- }\r
- },\r
- "404": {\r
- "description": "the VNF instance id is wrong"\r
- },\r
- "500": {\r
- "description": "the url is invalid"\r
- }\r
- }\r
- }\r
- }, \r
- "/{vnfmtype}/v1/{vnfmid}/vnfs/{vnfInstanceId}/terminate": { \r
- "delete": {\r
- "tags": [\r
- "VNFMDriver"\r
- ],\r
- "summary": "delete vnf",\r
- "description": "VNF terminate Rest API should be provided by the VNFM Driver",\r
- "operationId": "delete_vnf",\r
- "consumes": [\r
- "application/json"\r
- ],\r
- "produces": [\r
- "application/json"\r
- ],\r
- "parameters": [\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfmtype should be the SVNFM driver service name",\r
- "name": "vnfmtype",\r
- "in": "path"\r
- },\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfmid should be the VNFM Instantiate ID",\r
- "name": "vnfmid",\r
- "in": "path"\r
- },\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfInstanceId should be the VNF Instantiate ID",\r
- "name": "vnfInstanceId",\r
- "in": "path"\r
- },\r
- {\r
- "in": "body",\r
- "name": "body",\r
- "description": "instantiate request param",\r
- "required": true,\r
- "schema": {\r
- "$ref": "#/definitions/VnfTerminateRequest"\r
- }\r
- }\r
- ],\r
- "responses": {\r
- "204": {\r
- "description": "successful operation",\r
- "schema": {\r
- "$ref": "#/definitions/JobInfo"\r
- }\r
- },\r
- "404": {\r
- "description": "the VNF instance id is wrong"\r
- },\r
- "500": {\r
- "description": "the url is invalid"\r
- }\r
- }\r
- }\r
- },\r
- "/{vnfmtype}/v1/{vnfmid}/vnfs/{vnfInstanceId}": {\r
- "get": {\r
- "tags": [\r
- "VNFMDriver"\r
- ],\r
- "summary": "query the specified vnf info",\r
- "description": "",\r
- "operationId": "query_vnf",\r
- "consumes": [\r
- "application/json"\r
- ],\r
- "produces": [\r
- "application/json"\r
- ],\r
- "parameters": [\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfmtype should be the SVNFM driver service name",\r
- "name": "vnfmtype",\r
- "in": "path"\r
- },\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfmid should be the VNFM Instantiate ID",\r
- "name": "vnfmid",\r
- "in": "path"\r
- },\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfInstanceId should be the VNF Instantiate ID",\r
- "name": "vnfInstanceId",\r
- "in": "path"\r
- }\r
- ],\r
- "responses": {\r
- "200": {\r
- "description": "successful operation",\r
- "schema": {\r
- "$ref": "#/definitions/VnfInfo"\r
- }\r
- },\r
- "404": {\r
- "description": "the vnf instance id is wrong"\r
- },\r
- "500": {\r
- "description": "the url is invalid"\r
- }\r
- }\r
- }\r
- }, \r
- "/nslcm/v1/ns/grantvnf": {\r
- "post": {\r
- "tags": [\r
- "NSLCM"\r
- ],\r
- "summary": "grantvnf",\r
- "description": "Grant VNF, provived by the NSLCM component",\r
- "operationId": "grantvnf",\r
- "parameters": [\r
- {\r
- "in": "body",\r
- "name": "grantvnf",\r
- "description": "Grant VNF Request",\r
- "required": true,\r
- "schema": {\r
- "$ref": "#/definitions/GrantVNFRequest"\r
- }\r
- }\r
- ],\r
- "responses": {\r
- "202": {\r
- "description": "",\r
- "schema": {\r
- "$ref": "#/definitions/GrantVNFResponse"\r
- }\r
- },\r
- "500": {\r
- "description": "the url is invalid"\r
- }\r
- }\r
- }\r
- },\r
- "/nslcm/v1/vnfs/{vnfInstanceId}/Notify": {\r
- "post": {\r
- "tags": [\r
- "NSLCM"\r
- ],\r
- "summary": "VNF LCM Notification",\r
- "description": "VNF LCM Notification API should be provided by NSLCM component",\r
- "operationId": "VNF_LCM_Notification",\r
- "parameters": [\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "VNF Instance Id",\r
- "name": "vnfInstanceId",\r
- "in": "path"\r
- },\r
- {\r
- "in": "body",\r
- "name": "vnf Notification",\r
- "description": "VNF LCM Notification",\r
- "required": true,\r
- "schema": {\r
- "$ref": "#/definitions/VNFLCMNotification"\r
- }\r
- }\r
- ],\r
- "responses": {\r
- "202": {\r
- "description": ""\r
- },\r
- "500": {\r
- "description": "the url is invalid"\r
- }\r
- }\r
- }\r
- },\r
- "/{vnfmid}/jobs/{jobid}": {\r
- "get": {\r
- "tags": [\r
- "VNFMDriver"\r
- ],\r
- "summary": "jobstatus",\r
- "description": "Job Infomation API should be provided by VNFM Driver",\r
- "operationId": "get_jobstatus",\r
- "parameters": [\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "job Id",\r
- "name": "jobid",\r
- "in": "path"\r
- },\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "The value of vnfmid should be the VNFM Instantiate ID",\r
- "name": "vnfmid",\r
- "in": "path"\r
- },\r
- {\r
- "required": true,\r
- "type": "string",\r
- "description": "job response message id",\r
- "name": "responseId",\r
- "in": "query"\r
- }\r
- ],\r
- "responses": {\r
- "202": {\r
- "description": "",\r
- "schema": {\r
- "$ref": "#/definitions/JobDetailInfo"\r
- }\r
- }\r
- }\r
- }\r
- },\r
- "/catalog/v1/vnfpackages/{csarId}": {\r
- "get": {\r
- "tags": [\r
- "Catalog"\r
- ],\r
- "summary": "query vnf package info",\r
- "description": "query one vnf package info via vnf package csarId",\r
- "operationId": "query_vnf_package",\r
- "consumes": [\r
- "application/json"\r
- ],\r
- "produces": [\r
- "application/json"\r
- ],\r
- "parameters": [\r
- {\r
- "name": "csarId",\r
- "in": "path",\r
- "description": "csar id of vnf package",\r
- "required": true,\r
- "type": "string"\r
- }\r
- ],\r
- "responses": {\r
- "200": {\r
- "description": "successful operation",\r
- "schema": {\r
- "$ref": "#/definitions/VnfPkgDetailInfo"\r
- }\r
- },\r
- "500": {\r
- "description": "internal error"\r
- }\r
- }\r
- }\r
- },\r
- "/nslcm/vl/vnfms/{vnfmid}":{\r
- "get": {\r
- "tags": [\r
- "NSLCM"\r
- ],\r
- "summary": "Query VNFM register info",\r
- "description": "query VNFM register info",\r
- "operationId": "query_vnfm_info",\r
- "consumes": [\r
- "application/json"\r
- ],\r
- "produces": [\r
- "application/json"\r
- ],\r
- "parameters": [\r
- {\r
- "name": "vnfmid",\r
- "in": "path",\r
- "description": "vnfm id",\r
- "required": true,\r
- "type": "string"\r
- }\r
- ],\r
- "responses": {\r
- "200": {\r
- "description": "successful operation",\r
- "schema": {\r
- "$ref": "#/definitions/VnfmInfo"\r
- }\r
- },\r
- "500": {\r
- "description": "internal error"\r
- }\r
- }\r
- }\r
- },\r
- "/nslcm/vl/vims/{vimid}":{\r
- "get": {\r
- "tags": [\r
- "NSLCM"\r
- ],\r
- "summary": "Query VIM register info",\r
- "description": "query VIM register info",\r
- "operationId": "query_VIM_info",\r
- "consumes": [\r
- "application/json"\r
- ],\r
- "produces": [\r
- "application/json"\r
- ],\r
- "parameters": [\r
- {\r
- "name": "vimid",\r
- "in": "path",\r
- "description": "vim id",\r
- "required": true,\r
- "type": "string"\r
- }\r
- ],\r
- "responses": {\r
- "200": {\r
- "description": "successful operation",\r
- "schema": {\r
- "$ref": "#/definitions/VimInfo"\r
- }\r
- },\r
- "500": {\r
- "description": "internal error"\r
- }\r
- }\r
- }\r
- }, \r
- },\r
- "definitions": {\r
- "jobResponseInfo": {\r
- "type": "object",\r
- "properties": {\r
- "status": {\r
- "type": "string"\r
- },\r
- "progress": {\r
- "type": "string"\r
- },\r
- "statusDescription": {\r
- "type": "string"\r
- },\r
- "errorCode": {\r
- "type": "string"\r
- },\r
- "responseId": {\r
- "type": "string"\r
- }\r
- }\r
- },\r
- "JobDetailInfo": {\r
- "type": "object",\r
- "properties": {\r
- "jobId": {\r
- "type": "string"\r
- },\r
- "responseDescriptor": {\r
- "type": "object",\r
- "properties": {\r
- "status": {\r
- "type": "string"\r
- },\r
- "progress": {\r
- "type": "string"\r
- },\r
- "statusDescription": {\r
- "type": "string"\r
- },\r
- "errorCode": {\r
- "type": "string"\r
- },\r
- "responseId": {\r
- "type": "string"\r
- },\r
- "responseHistoryList": {\r
- "type": "array",\r
- "items": {\r
- "$ref": "#/definitions/jobResponseInfo"\r
- }\r
- }\r
- }\r
- }\r
- }\r
- },\r
- "GrantVNFRequest": {\r
- "type": "object",\r
- "properties": {\r
- "vnfInstanceId": {\r
- "type": "string"\r
- },\r
- "vnfDescriptorId": {\r
- "type": "string"\r
- },\r
- "lifecycleOperation": {\r
- "type": "string",\r
- "description": "The value should be Instantiate,Scaleout,Scalein,Scaleup,Scaledown, Heal, Terminal"\r
- },\r
- "jobId": {\r
- "type": "string"\r
- },\r
- "addResource": {\r
- "type": "object",\r
- "properties": {\r
- "type": {\r
- "type": "string",\r
- "description": " The value should be VDU,VL,CP,Strorage."\r
- },\r
- "resourceDefinitionId": {\r
- "type": "string"\r
- },\r
- "vdu": {\r
- "type": "string"\r
- }\r
- }\r
- },\r
- "removeResource": {\r
- "type": "object",\r
- "properties": {\r
- "type": {\r
- "type": "string",\r
- "description": " The value should be VDU,VL,CP,Strorage."\r
- },\r
- "resourceDefinitionId": {\r
- "type": "string"\r
- },\r
- "vdu": {\r
- "type": "string"\r
- }\r
- }\r
- },\r
- "additionalParam": {\r
- "type": "object",\r
- "description": "The data type is KeyValuePair. Additional parameters passed by the NFVO, specific to the VNF and the LCM operation."\r
- }\r
- }\r
- },\r
- "GrantVNFResponse": {\r
- "type": "object",\r
- "properties": {\r
- "vim": {\r
- "type": "object",\r
- "properties": {\r
- "vimInfoId": {\r
- "type": "string"\r
- },\r
- "vimId": {\r
- "type": "string"\r
- },\r
- "interfaceInfo": {\r
- "type": "object",\r
- "properties": {\r
- "vimType": {\r
- "type": "string",\r
- "description": "The vim Type value wil be openstack"\r
- },\r
- "apiVersion": {\r
- "type": "string",\r
- "description": "The api Version Type value will be "\r
- },\r
- "protocolType": {\r
- "type": "string",\r
- "description": "The protocol Type value will be http or https"\r
- }\r
- }\r
- },\r
- "accessInfo": {\r
- "type": "string",\r
- "properties": {\r
- "tenant": {\r
- "type": "string",\r
- "description": "Tenant Name of tenant"\r
- },\r
- "username": {\r
- "type": "string",\r
- "description": "Username for login"\r
- },\r
- "password": {\r
- "type": "string",\r
- "description": "Password of login user"\r
- }\r
- }\r
- },\r
- "interfaceEndpoint": {\r
- "type": "string",\r
- "description": "Information about the interface endpoint. It is a URL"\r
- }\r
- }\r
- }\r
- }\r
- },\r
- "VNFLCMNotification": {\r
- "type": "object",\r
- "properties": {\r
- "status": {\r
- "type": "string"\r
- },\r
- "vnfInstanceId": {\r
- "type": "string"\r
- },\r
- "operation": {\r
- "type": "string"\r
- },\r
- "jobId": {\r
- "type": "string"\r
- },\r
- "affectedVnfc": {\r
- "type": "object",\r
- "properties": {\r
- "vnfcInstanceId": {\r
- "type": "string",\r
- "description": "Identifier of the VNFC instance"\r
- },\r
- "vduId": {\r
- "type": "string",\r
- "description": "Identifier of the VDU in the VNFD"\r
- },\r
- "changeType": {\r
- "type": "string",\r
- "description": "Signals the type of change: added,removed, modified"\r
- },\r
- "vimid": {\r
- "type": "string",\r
- "description": "Identifier of vim"\r
- },\r
- "vmid": {\r
- "type": "string",\r
- "description": "Identifier of virtual machine"\r
- },\r
- "vmname": {\r
- "type": "string",\r
- "description": "Name of virtual machine"\r
- }\r
- }\r
- },\r
- "affectedVl": {\r
- "type": "object",\r
- "properties": {\r
- "vlInstanceId": {\r
- "type": "string",\r
- "description": "Identifier of the VL instance"\r
- },\r
- "vldid": {\r
- "type": "string",\r
- "description": "Identifier of the VLD in the VNFD"\r
- },\r
- "changeType": {\r
- "type": "string",\r
- "description": "Signals the type of change: vl_added,vl_removed,vl_modified"\r
- },\r
- "networkResource": {\r
- "type": "object",\r
- "description": "storage Resource",\r
- "properties": {\r
- "resourceType": {\r
- "type": "string",\r
- "description": "The value should be vm,volume,network,port"\r
- },\r
- "resourceId": {\r
- "type": "string",\r
- "description": "Identifier of the resource in the scope of the VIM"\r
- },\r
- "resourceName": {\r
- "type": "string",\r
- "description": "Resource name in the vim"\r
- }\r
- }\r
- }\r
- }\r
- },\r
- "affectedVirtualStorage": {\r
- "type": "object",\r
- "properties": {\r
- "vsInstanceId": {\r
- "type": "string",\r
- "description": "Identifier of the VL instance"\r
- },\r
- "vsdId": {\r
- "type": "string",\r
- "description": "Identifier of the VLD in the VNFD"\r
- },\r
- "changeType": {\r
- "type": "string",\r
- "description": "Signals the type of change: vl_added,vl_removed,vl_modified"\r
- },\r
- "storageResource": {\r
- "type": "object",\r
- "description": "storage Resource",\r
- "properties": {\r
- "resourceType": {\r
- "type": "string",\r
- "description": "The value should be vm,volume,network,port"\r
- },\r
- "resourceId": {\r
- "type": "string",\r
- "description": "Identifier of the resource in the scope of the VIM"\r
- },\r
- "resourceName": {\r
- "type": "string",\r
- "description": "Resource name in the vim"\r
- }\r
- }\r
- }\r
- }\r
- }\r
- }\r
- },\r
- "VnfInstantiateRequest": {\r
- "type": "object",\r
- "properties": {\r
- "vnfInstanceName": {\r
- "type": "string"\r
- },\r
- "vnfPackageId": {\r
- "type": "string"\r
- },\r
- "vnfDescriptorId": {\r
- "type": "string"\r
- }, \r
- "vnfInstanceDescription": {\r
- "type": "string"\r
- },\r
- "extVirtualLink": {\r
- "type": "array",\r
- "items": {\r
- "$ref": "#/definitions/extVirtualLinkInfo"\r
- }\r
- },\r
- "additionalParam": {\r
- "type": "object"\r
- }\r
- }\r
- },\r
- "extVirtualLinkInfo":{\r
- "type": "object",\r
- "properties": {\r
- "vlInstanceId": {\r
- "type": "string"\r
- },\r
- "networkId": {\r
- "type": "string"\r
- },\r
- "cpdId": {\r
- "type": "string"\r
- },\r
- "vim": {\r
- "$ref": "#/definitions/vimInfo"\r
- }\r
- }\r
- },\r
- \r
- "VnfInstantiateResponse": {\r
- "type": "object",\r
- "properties": {\r
- "vnfInstanceId": {\r
- "type": "string"\r
- },\r
- "jobId": {\r
- "type": "string"\r
- }\r
- }\r
- },\r
- "VnfScaleRequest":{\r
- "type": "object",\r
- "properties": {\r
- "type": {\r
- "type": "string",\r
- "description": "The VNF scale type value should be SCALE_OUT, SCALE_IN"\r
- },\r
- "aspectId":{\r
- "type": "string",\r
- "description": "Identifies the aspect of the VNF that is requested to be scaled" \r
- },\r
- "numberOfSteps": {\r
- "type": "string",\r
- "description": "Number of scaling steps to be executed as part of this ScaleVnf operation. It shall be a positive number" \r
- },\r
- "additionalParam":{\r
- "type": "object",\r
- "description": "Additional parameters passed by the NFVO as input to the scaling process, specific to the VNF being scaled" \r
- } \r
- }\r
- },\r
- "VnfHealRequest":{\r
- "type": "object",\r
- "properties": {\r
- "action": {\r
- "type": "string"\r
- },\r
- "affectedvm": {\r
- "type": "object",\r
- "properties": {\r
- "vimid":{\r
- "type": "string"\r
- },\r
- "vduid": {\r
- "type": "string"\r
- },\r
- "vmname":{\r
- "type": "string"\r
- }\r
- }\r
- }\r
- }\r
- },\r
- "VnfTerminateRequest":{\r
- "type": "object",\r
- "properties": {\r
- "terminationType": {\r
- "type": "string"\r
- },\r
- "gracefulTerminationTimeout": {\r
- "type": "string"\r
- } \r
- } \r
- },\r
- "JobInfo": {\r
- "type": "object",\r
- "properties": {\r
- "jobId": {\r
- "type": "string"\r
- }\r
- }\r
- },\r
- "VnfInfo": {\r
- "type": "object",\r
- "properties": {\r
- "vnfInstanceId": {\r
- "type": "string"\r
- },\r
- "vnfInstanceName": {\r
- "type": "string"\r
- },\r
- "vnfInstanceDescription": {\r
- "type": "string"\r
- },\r
- "vnfdId": {\r
- "type": "string"\r
- }, \r
- "vnfPackageId": {\r
- "type": "string"\r
- }, \r
- "version": {\r
- "type": "string"\r
- }, \r
- "vnfProvider": {\r
- "type": "string"\r
- }, \r
- "vnfType": {\r
- "type": "string"\r
- }, \r
- "vnfStatus": {\r
- "type": "string"\r
- }\r
- }\r
- },\r
- "vimInfo": {\r
- "type": "object",\r
- "properties": {\r
- "vimInfoId": {\r
- "type": "string"\r
- },\r
- "vimId": {\r
- "type": "string"\r
- },\r
- "interfaceInfo": {\r
- "type": "object",\r
- "properties": {\r
- "vimType": {\r
- "type": "string",\r
- "description": "The vim Type value wil be openstack"\r
- },\r
- "apiVersion": {\r
- "type": "string",\r
- "description": "The api Version Type value will be "\r
- },\r
- "protocolType": {\r
- "type": "string",\r
- "description": "The protocol Type value will be http or https"\r
- }\r
- }\r
- },\r
- "accessInfo": {\r
- "type": "string",\r
- "properties": {\r
- "tenant": {\r
- "type": "string",\r
- "description": "Tenant Name of tenant"\r
- },\r
- "username": {\r
- "type": "string",\r
- "description": "Username for login"\r
- },\r
- "password": {\r
- "type": "string",\r
- "description": "Password of login user"\r
- }\r
- }\r
- },\r
- "interfaceEndpoint": {\r
- "type": "string",\r
- "description": "Information about the interface endpoint. It is a URL"\r
- }\r
- }\r
- },\r
- "VnfPkgDetailInfo": {\r
- "type": "object",\r
- "properties": {\r
- "csarId": {\r
- "type": "string",\r
- "description": "vnf package id, UUID"\r
- },\r
- "packageInfo": {\r
- "$ref": "#/definitions/VnfPkgInfo"\r
- },\r
- "imageInfo": {\r
- "$ref": "#/definitions/VnfPkgImgListInfo"\r
- },\r
- "vnfInstanceInfo": {\r
- "$ref": "#/definitions/VnfInstListInfo"\r
- }\r
- }\r
- },\r
- "VnfPkgInfo": {\r
- "type": "object",\r
- "description": "vnf package infomation",\r
- "properties": {\r
- "csarId": {\r
- "type": "string",\r
- "description": "vnf package id, UUID"\r
- },\r
- "vnfdId": {\r
- "type": "string",\r
- "description": "VNF descriptor ID"\r
- },\r
- "vnfdProvider": {\r
- "type": "string",\r
- "description": "VNF descriptor vendor ID"\r
- },\r
- "vnfdVersion": {\r
- "type": "string",\r
- "description": "VNF descriptor version"\r
- },\r
- "vnfVersion": {\r
- "type": "string",\r
- "description": "VNF Software version"\r
- },\r
- "downloadUri":{\r
- "type": "string",\r
- "description": "The download uri of VNF package"\r
- }\r
- }\r
- },\r
- "VnfInstListInfo": {\r
- "type": "array",\r
- "items": {\r
- "$ref": "#/definitions/VnfInstInfo"\r
- }\r
- },\r
- "VnfInstInfo": {\r
- "type": "object",\r
- "properties": {\r
- "vnfInstanceId": {\r
- "type": "string",\r
- "description": "VNF instance ID"\r
- },\r
- "vnfInstanceName": {\r
- "type": "string",\r
- "description": "VNF instance name"\r
- }\r
- }\r
- },\r
- "VnfPkgImgListInfo": {\r
- "type": "array",\r
- "items": {\r
- "$ref": "#/definitions/VnfPkgImgInfo"\r
- }\r
- },\r
- "VnfPkgImgInfo": {\r
- "type": "object",\r
- "properties": {\r
- "fileName": {\r
- "type": "string",\r
- "description": "image file name"\r
- },\r
- "imageUrl": {\r
- "type": "string",\r
- "description": "image file path in the csar or image url in external repository"\r
- }\r
- }\r
- },\r
- "VnfmInfo": {\r
- "type": "object",\r
- "properties": {\r
- "vnfmId": {\r
- "type": "string",\r
- "description": "vnfm Id"\r
- },\r
- "name": {\r
- "type": "string",\r
- "description": "vnfm name"\r
- },\r
- "type": {\r
- "type": "string",\r
- "description": "vnfm type"\r
- }, \r
- "url": {\r
- "type": "string",\r
- "description": "vnfm url"\r
- },\r
- "userName": {\r
- "type": "string",\r
- "description": "vnfm login username"\r
- },\r
- "password": {\r
- "type": "string",\r
- "description": "vnfm login password"\r
- }, \r
- "vimId": {\r
- "type": "string",\r
- "description": "vim Id"\r
- },\r
- "vendor": {\r
- "type": "string",\r
- "description": "vendor name"\r
- },\r
- "version": {\r
- "type": "string",\r
- "description": "vnfm version"\r
- }, \r
- "description": {\r
- "type": "string",\r
- "description": "vnfm description"\r
- }, \r
- "certificateUrl": {\r
- "type": "string",\r
- "description": "vnfm certificate Url"\r
- },\r
- "createTime": {\r
- "type": "string",\r
- "description": "vnfm info createTime"\r
- }\r
- } \r
- },\r
- "VimInfo": {\r
- "type": "object",\r
- "properties": {\r
- "vimId": {\r
- "type": "string",\r
- "description": "vim Id"\r
- },\r
- "name": {\r
- "type": "string",\r
- "description": "vnfm name"\r
- },\r
- "type": {\r
- "type": "string",\r
- "description": "vnfm type"\r
- }, \r
- "url": {\r
- "type": "string",\r
- "description": "vnfm url"\r
- },\r
- "userName": {\r
- "type": "string",\r
- "description": "vnfm login username"\r
- },\r
- "password": {\r
- "type": "string",\r
- "description": "vnfm login password"\r
- }, \r
- "vendor": {\r
- "type": "string",\r
- "description": "vendor name"\r
- },\r
- "version": {\r
- "type": "string",\r
- "description": "vnfm version"\r
- }, \r
- "description": {\r
- "type": "string",\r
- "description": "vnfm description"\r
- }, \r
- "createTime": {\r
- "type": "string",\r
- "description": "vnfm info createTime"\r
- }\r
- } \r
- }\r
- }\r
-}
\ No newline at end of file
+{
+ "swagger": "2.0",
+ "info": {
+ "version": "1.0.0",
+ "title": "ONAP VNFM Driver Development Related API",
+ "description": "ONAP VNFM Driver Development Related Rest API.",
+ "contact": {
+ "name": "ONAP VFC team",
+ "email": "onap-discuss@lists.onap.org",
+ "url": "https://gerrit.onap.org/r/#/admin/projects/vfc/nfvo/lcm"
+ }
+ },
+ "basePath": "/api",
+ "schemes": [
+ "http",
+ "https"
+ ],
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "paths": {
+ "/{vnfmtype}/v1/{vnfmid}/vnfs": {
+ "post": {
+ "tags": [
+ "VNFMDriver"
+ ],
+ "summary": "vnf create&instantiate",
+ "description": "VNF create&instantiate Rest API should be provided by the VNFM Driver",
+ "operationId": "vnf_instantiate",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfmtype should be the SVNFM driver service name",
+ "name": "vnfmtype",
+ "in": "path"
+ },
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfmid should be the VNFM Instantiate ID",
+ "name": "vnfmid",
+ "in": "path"
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "description": "instantiate request param",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/VnfInstantiateRequest"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "",
+ "schema": {
+ "$ref": "#/definitions/VnfInstantiateResponse"
+ }
+ }
+ }
+ }
+ },
+ "/{vnfmtype}/v1/{vnfmid}/vnfs/{vnfInstanceId}/scale": {
+ "post": {
+ "tags": [
+ "VNFMDriver"
+ ],
+ "summary": "vnf Scale",
+ "description": "VNF Scale Rest API should be provided by the VNFM Driver",
+ "operationId": "vnf_scale",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfmtype should be the SVNFM driver service name",
+ "name": "vnfmtype",
+ "in": "path"
+ },
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfmid should be the VNFM Instantiate ID",
+ "name": "vnfmid",
+ "in": "path"
+ },
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfInstanceId should be the VNF Instantiate ID",
+ "name": "vnfInstanceId",
+ "in": "path"
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "description": "instantiate request param",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/VnfScaleRequest"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "",
+ "schema": {
+ "$ref": "#/definitions/JobInfo"
+ }
+ },
+ "404": {
+ "description": "the VNF instance id is wrong"
+ },
+ "500": {
+ "description": "the url is invalid"
+ }
+ }
+ }
+ },
+ "/{vnfmtype}/v1/{vnfmid}/vnfs/{vnfInstanceId}/heal": {
+ "post": {
+ "tags": [
+ "VNFMDriver"
+ ],
+ "summary": "vnf heal",
+ "description": "VNF Heal Rest API should be provided by the VNFM Driver",
+ "operationId": "vnf_heal",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfmtype should be the SVNFM driver service name",
+ "name": "vnfmtype",
+ "in": "path"
+ },
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfmid should be the VNFM Instantiate ID",
+ "name": "vnfmid",
+ "in": "path"
+ },
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfInstanceId should be the VNF Instantiate ID",
+ "name": "vnfInstanceId",
+ "in": "path"
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "description": "instantiate request param",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/VnfHealRequest"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "",
+ "schema": {
+ "$ref": "#/definitions/JobInfo"
+ }
+ },
+ "404": {
+ "description": "the VNF instance id is wrong"
+ },
+ "500": {
+ "description": "the url is invalid"
+ }
+ }
+ }
+ },
+ "/{vnfmtype}/v1/{vnfmid}/vnfs/{vnfInstanceId}/terminate": {
+ "post": {
+ "tags": [
+ "VNFMDriver"
+ ],
+ "summary": "terminate&delete vnf",
+ "description": "VNF terminate&delete Rest API should be provided by the VNFM Driver",
+ "operationId": "terminate_vnf",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfmtype should be the SVNFM driver service name",
+ "name": "vnfmtype",
+ "in": "path"
+ },
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfmid should be the VNFM Instantiate ID",
+ "name": "vnfmid",
+ "in": "path"
+ },
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfInstanceId should be the VNF Instantiate ID",
+ "name": "vnfInstanceId",
+ "in": "path"
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "description": "instantiate request param",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/VnfTerminateRequest"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "successful operation",
+ "schema": {
+ "$ref": "#/definitions/JobInfo"
+ }
+ },
+ "404": {
+ "description": "the VNF instance id is wrong"
+ },
+ "500": {
+ "description": "the url is invalid"
+ }
+ }
+ }
+ },
+ "/{vnfmtype}/v1/{vnfmid}/vnfs/{vnfInstanceId}": {
+ "get": {
+ "tags": [
+ "VNFMDriver"
+ ],
+ "summary": "query the specified vnf info",
+ "description": "",
+ "operationId": "query_vnf",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfmtype should be the SVNFM driver service name",
+ "name": "vnfmtype",
+ "in": "path"
+ },
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfmid should be the VNFM Instantiate ID",
+ "name": "vnfmid",
+ "in": "path"
+ },
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfInstanceId should be the VNF Instantiate ID",
+ "name": "vnfInstanceId",
+ "in": "path"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "$ref": "#/definitions/VnfInfo"
+ }
+ },
+ "404": {
+ "description": "the vnf instance id is wrong"
+ },
+ "500": {
+ "description": "the url is invalid"
+ }
+ }
+ }
+ },
+ "/nslcm/v1/ns/grantvnf": {
+ "post": {
+ "tags": [
+ "NSLCM"
+ ],
+ "summary": "grantvnf",
+ "description": "Grant VNF, provived by the NSLCM component",
+ "operationId": "grantvnf",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "grantvnf",
+ "description": "Grant VNF Request",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/GrantVNFRequest"
+ }
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "",
+ "schema": {
+ "$ref": "#/definitions/GrantVNFResponse"
+ }
+ },
+ "404": {
+ "description": "URL not found"
+ },
+ "500": {
+ "description": "the url is invalid"
+ }
+ }
+ }
+ },
+ "/nslcm/v1/ns/{vnfmid}/vnfs/{vnfInstanceId}/Notify": {
+ "post": {
+ "tags": [
+ "NSLCM"
+ ],
+ "summary": "VNF LCM Notification",
+ "description": "VNF LCM Notification API should be provided by NSLCM component",
+ "operationId": "VNF_LCM_Notification",
+ "parameters": [
+ {
+ "required": true,
+ "type": "string",
+ "description": "VNFM Instance Id",
+ "name": "vnfmid",
+ "in": "path"
+ },
+ {
+ "required": true,
+ "type": "string",
+ "description": "VNF Instance Id",
+ "name": "vnfInstanceId",
+ "in": "path"
+ },
+ {
+ "in": "body",
+ "name": "vnf Notification",
+ "description": "VNF LCM Notification",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/VNFLCMNotification"
+ }
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": ""
+ },
+ "404": {
+ "description": "URL not found"
+ },
+ "500": {
+ "description": "the url is invalid"
+ }
+ }
+ }
+ },
+ "/{vnfmid}/jobs/{jobid}": {
+ "get": {
+ "tags": [
+ "VNFMDriver"
+ ],
+ "summary": "jobstatus",
+ "description": "Job Infomation API should be provided by VNFM Driver",
+ "operationId": "get_jobstatus",
+ "parameters": [
+ {
+ "required": true,
+ "type": "string",
+ "description": "job Id",
+ "name": "jobid",
+ "in": "path"
+ },
+ {
+ "required": true,
+ "type": "string",
+ "description": "The value of vnfmid should be the VNFM Instantiate ID",
+ "name": "vnfmid",
+ "in": "path"
+ },
+ {
+ "required": true,
+ "type": "string",
+ "description": "job response message id",
+ "name": "responseId",
+ "in": "query"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "",
+ "schema": {
+ "$ref": "#/definitions/JobDetailInfo"
+ }
+ }
+ }
+ }
+ },
+ "/catalog/v1/vnfpackages/{csarId}": {
+ "get": {
+ "tags": [
+ "Catalog"
+ ],
+ "summary": "query vnf package info",
+ "description": "query one vnf package info via vnf package csarId",
+ "operationId": "query_vnf_package",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "csarId",
+ "in": "path",
+ "description": "csar id of vnf package",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "$ref": "#/definitions/VnfPkgDetailInfo"
+ }
+ },
+ "500": {
+ "description": "internal error"
+ }
+ }
+ }
+ },
+ "/nslcm/v1/vnfms/{vnfmid}":{
+ "get": {
+ "tags": [
+ "NSLCM"
+ ],
+ "summary": "Query VNFM register info",
+ "description": "query VNFM register info",
+ "operationId": "query_vnfm_info",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "vnfmid",
+ "in": "path",
+ "description": "vnfm id",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "$ref": "#/definitions/VnfmInfo"
+ }
+ },
+ "404": {
+ "description": "URL not found"
+ },
+ "500": {
+ "description": "internal error"
+ }
+ }
+ }
+ },
+ "/nslcm/v1/vims/{vimid}":{
+ "get": {
+ "tags": [
+ "NSLCM"
+ ],
+ "summary": "Query VIM register info",
+ "description": "query VIM register info",
+ "operationId": "query_VIM_info",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "vimid",
+ "in": "path",
+ "description": "vim id",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "$ref": "#/definitions/VimInfo"
+ }
+ },
+ "404": {
+ "description": "URL not found"
+ },
+ "500": {
+ "description": "internal error"
+ }
+ }
+ }
+ }
+ },
+ "definitions": {
+ "jobResponseInfo": {
+ "type": "object",
+ "properties": {
+ "status": {
+ "type": "string"
+ },
+ "progress": {
+ "type": "string"
+ },
+ "statusDescription": {
+ "type": "string"
+ },
+ "errorCode": {
+ "type": "string"
+ },
+ "responseId": {
+ "type": "string"
+ }
+ }
+ },
+ "JobStatus" : {
+ "description": "The status of the job",
+ "type": "string",
+ "enum": [
+ "started",
+ "processing",
+ "finished",
+ "error",
+ "timeout"
+ ]
+ },
+ "JobDetailInfo": {
+ "type": "object",
+ "properties": {
+ "jobId": {
+ "type": "string"
+ },
+ "responseDescriptor": {
+ "type": "object",
+ "properties": {
+ "status": {
+ "$ref": "#/definitions/JobStatus",
+ "description": "The status of the job"
+ },
+ "progress": {
+ "type": "string",
+ "description": "The progress of the job. Value between 0 and 100."
+ },
+ "statusDescription": {
+ "type": "string",
+ "description": "The reason of the current status of the job."
+ },
+ "errorCode": {
+ "type": "string"
+ },
+ "responseId": {
+ "type": "string"
+ },
+ "responseHistoryList": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/jobResponseInfo"
+ }
+ }
+ }
+ }
+ }
+ },
+ "ChangeType" : {
+ "description": "The type of the change",
+ "type": "string",
+ "enum": [
+ "VDU"
+ ]
+ },
+ "ResourceChange" : {
+ "type": "object",
+ "properties": {
+ "type": {
+ "$ref": "#/definitions/ChangeType",
+ "description": "The type of the resource."
+ },
+ "resourceDefinitionId": {
+ "description": "The identifier of the resource within the grant request.",
+ "type": "string"
+ },
+ "vdu": {
+ "description": "The identifier of the VDU.",
+ "type": "string"
+ }
+ }
+ },
+ "OperationType" : {
+ "description": "The type of operation",
+ "type": "string",
+ "enum": [
+ "Terminal",
+ "Instantiate",
+ "Scalein",
+ "Scaleout",
+ "Scaledown",
+ "Scaleup",
+ "Heal"
+ ]
+ },
+ "GrantVNFRequest": {
+ "type": "object",
+ "properties": {
+ "vnfInstanceId": {
+ "type": "string"
+ },
+ "vnfDescriptorId": {
+ "type": "string"
+ },
+ "lifecycleOperation": {
+ "description" : "The type of the operation.",
+ "$ref": "#/definitions/OperationType"
+ },
+ "jobId": {
+ "type": "string"
+ },
+ "addResource": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ResourceChange"
+ }
+ },
+ "removeResource": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ResourceChange"
+ }
+ },
+ "additionalParam": {
+ "type": "object",
+ "description": "The data type is KeyValuePair. Additional parameters passed by the NFVO, specific to the VNF and the LCM operation."
+ }
+ }
+ },
+ "GrantVNFResponse": {
+ "type": "object",
+ "properties": {
+ "vim": {
+ "type": "object",
+ "properties": {
+ "vimInfoId": {
+ "type": "string"
+ },
+ "vimId": {
+ "type": "string"
+ },
+ "interfaceInfo": {
+ "type": "object",
+ "properties": {
+ "vimType": {
+ "type": "string",
+ "description": "The vim Type value wil be openstack"
+ },
+ "apiVersion": {
+ "type": "string",
+ "description": "The api Version Type value will be "
+ },
+ "protocolType": {
+ "type": "string",
+ "description": "The protocol Type value will be http or https"
+ }
+ }
+ },
+ "accessInfo": {
+ "type": "object",
+ "properties": {
+ "tenant": {
+ "type": "string",
+ "description": "Tenant Name of tenant"
+ },
+ "username": {
+ "type": "string",
+ "description": "Username for login"
+ },
+ "password": {
+ "type": "string",
+ "description": "Password of login user"
+ }
+ }
+ },
+ "interfaceEndpoint": {
+ "type": "string",
+ "description": "Information about the interface endpoint. It is a URL"
+ }
+ }
+ }
+ }
+ },
+ "VnfNotificationType": {
+ "description": "The type of the notification",
+ "type": "string",
+ "enum": [
+ "added",
+ "removed",
+ "modified"
+ ]
+ },
+ "AffectedVnfc": {
+ "type": "object",
+ "properties": {
+ "vnfcInstanceId": {
+ "type": "string",
+ "description": "Identifier of the VNFC instance"
+ },
+ "vduId": {
+ "type": "string",
+ "description": "Identifier of the VDU in the VNFD"
+ },
+ "changeType": {
+ "$ref": "#/definitions/VnfNotificationType",
+ "description": "The type of the change"
+ },
+ "vimid": {
+ "type": "string",
+ "description": "Identifier of vim"
+ },
+ "vmid": {
+ "type": "string",
+ "description": "Identifier of virtual machine"
+ },
+ "vmname": {
+ "type": "string",
+ "description": "Name of virtual machine"
+ }
+ }
+ },
+ "AffectedVirtualLinkType": {
+ "description": "The type of the affected virtual link",
+ "type": "string",
+ "enum": [
+ "network",
+ "port"
+ ]
+ },
+ "AffectedVirtualLink":{
+ "type": "object",
+ "properties": {
+ "vlInstanceId": {
+ "type": "string",
+ "description": "Identifier of the VL instance"
+ },
+ "vldid": {
+ "type": "string",
+ "description": "Identifier of the VLD in the VNFD"
+ },
+ "changeType": {
+ "$ref": "#/definitions/VnfNotificationType",
+ "description": "The type of the change"
+ },
+ "networkResource": {
+ "type": "object",
+ "description": "network Resource",
+ "properties": {
+ "resourceType": {
+ "$ref": "#/definitions/AffectedVirtualLinkType",
+ "description": "Must be network"
+ },
+ "resourceId": {
+ "type": "string",
+ "description": "Identifier of the resource in the scope of the VIM"
+ }
+ }
+ }
+ }
+ },
+ "VnfCpNotificationType": {
+ "description": "The type of the notification for connection points",
+ "type": "string",
+ "enum": [
+ "added",
+ "removed",
+ "changed"
+ ]
+ },
+ "AffectedCp": {
+ "type": "object",
+ "properties": {
+ "virtualLinkInstanceId": {
+ "type": "string",
+ "description": "Identifier of the VL instance"
+ },
+ "cpinstanceid": {
+ "type": "string",
+ "description": "Identifier of the connection point"
+ },
+ "cpdid": {
+ "type": "string",
+ "description": "Identifier of the connection point in the VNFD"
+ },
+ "ownerType": {
+ "type": "string",
+ "description": "The type of the owner."
+ },
+ "ownerId": {
+ "type": "string",
+ "description": "Identifier of the owner. Mandatory if ownerType is specified."
+ },
+ "changeType": {
+ "$ref": "#/definitions/VnfCpNotificationType",
+ "description": "The type of the change"
+ },
+ "portResource": {
+ "type": "object",
+ "description": "port Resource",
+ "properties": {
+ "vimid": {
+ "type": "string",
+ "description": "Identifier of the VIM"
+ },
+ "resourceid": {
+ "type": "string",
+ "description": "Identifier of the resource in the scope of the VIM"
+ },
+ "resourceName": {
+ "type": "string",
+ "description": "Resource name in the vim"
+ },
+ "tenant": {
+ "type": "string",
+ "description": "The identifier of the tenant"
+ },
+ "ipAddress": {
+ "type": "string",
+ "description": "The IP address of the port"
+ },
+ "macAddress": {
+ "type": "string",
+ "description": "The MAC address of the port"
+ },
+ "instId": {
+ "type": "string",
+ "description": "The instance id of the server to which the port is attached to"
+ }
+ }
+ }
+ }
+ },
+ "AffectedVirtualStorage" : {
+ "type": "object"
+ },
+ "VnfLcmNotificationStatus" : {
+ "description": "The status of the operation",
+ "type": "string",
+ "enum": [
+ "result",
+ "start"
+ ]
+ },
+ "VNFLCMNotification": {
+ "type": "object",
+ "properties": {
+ "status": {
+ "description" : "The status of the operation that triggered the LCN.",
+ "$ref": "#/definitions/VnfLcmNotificationStatus"
+ },
+ "vnfInstanceId": {
+ "type": "string"
+ },
+ "operation": {
+ "description" : "The type of the operation that tiggered the LCN.",
+ "$ref": "#/definitions/OperationType"
+ },
+ "jobId": {
+ "description" : "The identifier fo the job that triggered the LCN.",
+ "type": "string"
+ },
+ "affectedVnfc": {
+ "type": "array",
+ "description": "The affected VNFCs",
+ "items": {
+ "$ref": "#/definitions/AffectedVnfc"
+ }
+ },
+ "affectedCp": {
+ "type": "array",
+ "description": "The affected Connected Points",
+ "items": {
+ "$ref": "#/definitions/AffectedCp"
+ }
+ },
+ "affectedVl": {
+ "type": "array",
+ "description": "The affected virtual links",
+ "items": {
+ "$ref": "#/definitions/AffectedVirtualLink"
+ }
+ },
+ "affectedVirtualStorage": {
+ "type": "array",
+ "description": "The affected virtual storages. (Not supported)",
+ "items": {
+ "$ref": "#/definitions/AffectedVirtualStorage"
+ }
+ }
+ }
+ },
+ "VnfInstantiateRequest": {
+ "type": "object",
+ "properties": {
+ "vnfInstanceName": {
+ "type": "string"
+ },
+ "vnfPackageId": {
+ "type": "string"
+ },
+ "vnfDescriptorId": {
+ "type": "string"
+ },
+ "vnfInstanceDescription": {
+ "type": "string"
+ },
+ "extVirtualLink": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/extVirtualLinkInfo"
+ }
+ },
+ "additionalParam": {
+ "type": "object"
+ }
+ }
+ },
+ "extVirtualLinkInfo":{
+ "type": "object",
+ "properties": {
+ "vlInstanceId": {
+ "type": "string"
+ },
+ "networkId": {
+ "type": "string"
+ },
+ "cpdId": {
+ "type": "string"
+ },
+ "vim": {
+ "$ref": "#/definitions/vimInfo"
+ }
+ }
+ },
+
+ "VnfInstantiateResponse": {
+ "type": "object",
+ "properties": {
+ "vnfInstanceId": {
+ "type": "string"
+ },
+ "jobId": {
+ "type": "string"
+ }
+ }
+ },
+ "ScaleDirection" : {
+ "description": "The direction of the scaling",
+ "type": "string",
+ "enum": [
+ "SCALE_IN",
+ "SCALE_OUT"
+ ]
+ },
+ "VnfScaleRequest":{
+ "type": "object",
+ "properties": {
+ "type": {
+ "description" : "The direction of the scaling.",
+ "$ref": "#/definitions/ScaleDirection"
+ },
+ "aspectId":{
+ "type": "string",
+ "description": "Identifies the aspect of the VNF that is requested to be scaled"
+ },
+ "numberOfSteps": {
+ "type": "string",
+ "description": "Number of scaling steps to be executed as part of this ScaleVnf operation. It shall be a positive number"
+ },
+ "additionalParam":{
+ "type": "object",
+ "description": "Additional parameters passed by the NFVO as input to the scaling process, specific to the VNF being scaled"
+ }
+ }
+ },
+ "VnfHealRequest":{
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "affectedvm": {
+ "type": "object",
+ "properties": {
+ "vimid":{
+ "type": "string"
+ },
+ "vduid": {
+ "type": "string"
+ },
+ "vmname":{
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "VnfTerminationType": {
+ "description": "The type of the termination.",
+ "type": "string",
+ "enum": [
+ "graceful",
+ "forceful"
+ ]
+ },
+ "VnfTerminateRequest":{
+ "type": "object",
+ "properties": {
+ "terminationType": {
+ "description" : "The type of the termination",
+ "$ref": "#/definitions/VnfTerminationType"
+ },
+ "gracefulTerminationTimeout": {
+ "description": "The time interval(second) to wait for the VNF to be taken out of service during graceful termination.",
+ "type": "string"
+ }
+ }
+ },
+ "JobInfo": {
+ "type": "object",
+ "properties": {
+ "jobId": {
+ "type": "string"
+ }
+ }
+ },
+ "VnfInfo": {
+ "type": "object",
+ "properties": {
+ "vnfInstanceId": {
+ "type": "string"
+ },
+ "vnfInstanceName": {
+ "type": "string"
+ },
+ "vnfInstanceDescription": {
+ "type": "string"
+ },
+ "vnfdId": {
+ "type": "string"
+ },
+ "vnfPackageId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "vnfProvider": {
+ "type": "string"
+ },
+ "vnfType": {
+ "type": "string"
+ },
+ "vnfStatus": {
+ "type": "string"
+ }
+ }
+ },
+ "vimInfo": {
+ "type": "object",
+ "properties": {
+ "vimInfoId": {
+ "type": "string"
+ },
+ "vimId": {
+ "type": "string"
+ },
+ "interfaceInfo": {
+ "type": "object",
+ "properties": {
+ "vimType": {
+ "type": "string",
+ "description": "The vim Type value wil be openstack"
+ },
+ "apiVersion": {
+ "type": "string",
+ "description": "The api Version Type value will be "
+ },
+ "protocolType": {
+ "type": "string",
+ "description": "The protocol Type value will be http or https"
+ }
+ }
+ },
+ "accessInfo": {
+ "type": "object",
+ "properties": {
+ "tenant": {
+ "type": "string",
+ "description": "Tenant Name of tenant"
+ },
+ "username": {
+ "type": "string",
+ "description": "Username for login"
+ },
+ "password": {
+ "type": "string",
+ "description": "Password of login user"
+ }
+ }
+ },
+ "interfaceEndpoint": {
+ "type": "string",
+ "description": "Information about the interface endpoint. It is a URL"
+ }
+ }
+ },
+ "VnfPkgDetailInfo": {
+ "type": "object",
+ "properties": {
+ "csarId": {
+ "type": "string",
+ "description": "vnf package id, UUID"
+ },
+ "packageInfo": {
+ "$ref": "#/definitions/VnfPkgInfo"
+ },
+ "imageInfo": {
+ "$ref": "#/definitions/VnfPkgImgListInfo"
+ },
+ "vnfInstanceInfo": {
+ "$ref": "#/definitions/VnfInstListInfo"
+ }
+ }
+ },
+ "VnfPkgInfo": {
+ "type": "object",
+ "description": "vnf package infomation",
+ "properties": {
+ "csarId": {
+ "type": "string",
+ "description": "vnf package id, UUID"
+ },
+ "vnfdId": {
+ "type": "string",
+ "description": "VNF descriptor ID"
+ },
+ "vnfdProvider": {
+ "type": "string",
+ "description": "VNF descriptor vendor ID"
+ },
+ "vnfdVersion": {
+ "type": "string",
+ "description": "VNF descriptor version"
+ },
+ "vnfVersion": {
+ "type": "string",
+ "description": "VNF Software version"
+ },
+ "downloadUri":{
+ "type": "string",
+ "description": "The download uri of VNF package"
+ }
+ }
+ },
+ "VnfInstListInfo": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VnfInstInfo"
+ }
+ },
+ "VnfInstInfo": {
+ "type": "object",
+ "properties": {
+ "vnfInstanceId": {
+ "type": "string",
+ "description": "VNF instance ID"
+ },
+ "vnfInstanceName": {
+ "type": "string",
+ "description": "VNF instance name"
+ }
+ }
+ },
+ "VnfPkgImgListInfo": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/VnfPkgImgInfo"
+ }
+ },
+ "VnfPkgImgInfo": {
+ "type": "object",
+ "properties": {
+ "fileName": {
+ "type": "string",
+ "description": "image file name"
+ },
+ "imageUrl": {
+ "type": "string",
+ "description": "image file path in the csar or image url in external repository"
+ }
+ }
+ },
+ "VnfmInfo": {
+ "type": "object",
+ "properties": {
+ "vnfmId": {
+ "type": "string",
+ "description": "vnfm Id"
+ },
+ "name": {
+ "type": "string",
+ "description": "vnfm name"
+ },
+ "type": {
+ "type": "string",
+ "description": "vnfm type"
+ },
+ "url": {
+ "type": "string",
+ "description": "vnfm url"
+ },
+ "userName": {
+ "type": "string",
+ "description": "vnfm login username"
+ },
+ "password": {
+ "type": "string",
+ "description": "vnfm login password"
+ },
+ "vimId": {
+ "type": "string",
+ "description": "vim Id"
+ },
+ "vendor": {
+ "type": "string",
+ "description": "vendor name"
+ },
+ "version": {
+ "type": "string",
+ "description": "vnfm version"
+ },
+ "description": {
+ "type": "string",
+ "description": "vnfm description"
+ },
+ "certificateUrl": {
+ "type": "string",
+ "description": "vnfm certificate Url"
+ },
+ "createTime": {
+ "type": "string",
+ "description": "vnfm info createTime"
+ }
+ }
+ },
+ "VimInfo": {
+ "type": "object",
+ "properties": {
+ "vimId": {
+ "type": "string",
+ "description": "vim Id"
+ },
+ "name": {
+ "type": "string",
+ "description": "vim name"
+ },
+ "type": {
+ "type": "string",
+ "description": "vim type"
+ },
+ "url": {
+ "type": "string",
+ "description": "vim url"
+ },
+ "userName": {
+ "type": "string",
+ "description": "vim login username"
+ },
+ "password": {
+ "type": "string",
+ "description": "vim login password"
+ },
+ "vendor": {
+ "type": "string",
+ "description": "vendor name"
+ },
+ "version": {
+ "type": "string",
+ "description": "vim version"
+ },
+ "description": {
+ "type": "string",
+ "description": "vim description"
+ },
+ "createTime": {
+ "type": "string",
+ "description": "vim info createTime"
+ },
+ "sslCacert": {
+ "type": "string",
+ "description": "The collection of trusted certificates towards the VIM connection."
+ },
+ "sslInsecure": {
+ "type": "string",
+ "description": "Whether to verify VIM's certificate"
+ },
+ "status": {
+ "type": "string",
+ "description": "The status of external system"
+ }
+ }
+ }
+ }
+}