Add sample coordinateVNF script for coordination IF¶
https://blueprints.launchpad.net/tacker/+spec/add-sample-coordinate-script
This specification proposes a sample coordinateVNF script for rolling update with external management systems (e.g., Operations Support Systems (OSS)/Element Manager (EM)). This specification focuses on only VNF update by the ChangeCurrentVNFPackage API.
Problem description¶
Tacker has supported rolling update by the ChangeCurrentVNFPackage API. In some telecom systems, rolling update scenarios may require coordination with external components (e.g., changing load balancer settings from external components for authorization reasons). To address such scenarios, ETSI NFV SOL002 v3.5.1 [1] defines the VNF LCM Coordination interface. However, the current Tacker does not support this API nor have other explicit functions for coordination with external components.
Proposed change¶
This specification proposes implementing the client function of Coordination API in the Coordinate VNF script [2], which can be customized by the user without affecting common implementation. Formally, coordination action and execution timing during LCM are specified by VNFD according to ETSI NFV SOL001 [3]. However, there are few products that act as the Coordination API server because this interface is not yet mature. Therefore, formal support of this API is excessive now and Tacker should focus on rolling update which has specific requirements. For the same reason, this specification targets only the ChangeCurrentVNFPackage API for VNF. The support of other APIs and CNF is future work.
Support VNF LCM Coordination interface¶
The following shows the VNF LCM Coordination interface defined in SOL002 v3.5.1. VNFM acts as a client and the external component acts as a server.
- Name: Coordinate an LCM operationDescription: Request a VNF LCM CoordinationMethod type: POSTURL for the resource: /lcmcoord/v1/coordinationsRequest:
Data type
Cardinality
Description
LcmCoordRequest
1
Parameters for the coordination action.
Attribute name
Data type
Cardinality
Description
vnfInstanceId
Identifier
1
Identifier of the VNF instance which this coordination request is related to.
vnfLcmOpOccId
Identifier
1
The identifier of the VNF lifecycle management operation occurrence related to the coordination.
lcmOperationType
LcmOperationForCoordType
1
The type of the LCM operation with which coordination is requested.
coordinationActionName
IdentifierInVnfd
1
Indicates the LCM coordination action.
inputParams
KeyValuePairs
0..1
Additional parameters passed as input to the coordination action.
_links
Structure
1
Links to resources related to this request.
>vnfLcmOpOcc
Link
1
Related lifecycle management operation occurrence.
>vnfInstance
Link
1
Related VNF instance.
Response:Data type
Cardinality
Response Codes
Description
LcmCoord
1
Success: 201
Shall be returned to indicate a finished coordination action when the API producer has chosen the synchronous mode, which may be selected for coordination actions that finish within the time frame in which an HTTP response is expected.
n/a
Success: 202
Shall be returned when the API producer has chosen the asynchronous mode and the request has been accepted for processing. Further, the HTTP response may include a “RetryAfter” HTTP header that indicates the time to wait before sending the next GET request to the “individual coordination” resource indicated in the “Location” header. If the header is provided, the VNFM shall record the signalled delay value in the “delay” attribute of the applicable entry in the “lcmCoordinations” array in the “VnfLcmOpOcc” structure.
ProblemDetails
1
Error: 403
The starting of the coordination operation has been rejected. No “individual coordination action” resource shall be created.
ProblemDetails
1
Error: 409
The operation cannot be executed currently, due to a conflict with the state of the “Coordinations” resource.
ProblemDetails
1
Error: 503
The API producer has chosen the synchronous mode and cannot perform the requested coordination currently, but expects to be able to perform it sometime in the future. The HTTP response shall include a “Retry-After” HTTP header that indicates the delay after which it is suggested to repeat the coordination request with the same set of parameters. The VNFM shall record the signalled delay value in the “delay” attribute of the applicable entry in the “rejectedLcmCoordinations” array in the “VnfLcmOpOcc” structure.
ProblemDetails
See clause 6.4 of [4]
Error: 4xx, 5xx
Any common error response code as defined in clause 6.4 of ETSI GS NFV-SOL 013 [4] may be returned.
Attribute name
Data type
Cardinality
Description
id
Identifier
1
Identifier of this coordination result
coordinationResult
LcmCoordResultType
1
The result of executing the coordination action which also implies the action to be performed by the VNFM as the result of this coordination.
vnfInstanceId
Identifier
1
Identifier of the VNF instance which this coordination request is related to.
vnfLcmOpOccId
Identifier
1
The identifier of the VNF lifecycle management operation occurrence related to the coordination.
lcmOperationType
LcmOperationForCoordType
1
The type of the LCM operation with which coordination is requested.
coordinationActionName
String
1
Indicates the LCM coordination action.
outputParams
KeyValuePairs
0..1
Additional parameters returned by the coordination action.
warnings
String
0..N
Warning messages that were generated while the operation was executing.
error
ProblemDetails
0..1
Error information related to the coordination.
_links
Structure
1
Links to resources related to this resource.
>self
Link
1
URI of this resource.
>vnfLcmOpOcc
Link
1
Related lifecycle management operation occurrence.
>vnfInstance
Link
1
Related VNF instance.
- Name: Show Individual coordination actionDescription: Query individual Coordination actionMethod type: GETURL for the resource: /lcmcoord/v1/coordinations/{coordinationId}Request:Resource URI variables for this resource:
Name
Description
coordinationId
Identifier of the LCM Coordination.
Response:Data type
Cardinality
Response Codes
Description
LcmCoord
1
Success: 200
Shall be returned when the coordination is finished and the coordination result has been read successfully.
n/a
Success: 202
Shall be returned when the management operation with which coordination is requested is still ongoing or in the process of being cancelled, i.e. no coordination result is available yet.
ProblemDetails
See clause 6.4 of [4]
Error: 4xx, 5xx
Any common error response code as defined in clause 6.4 of ETSI GS NFV-SOL 013 [4] may be returned.
Attribute name
Data type
Cardinality
Description
id
Identifier
1
Identifier of this coordination result
coordinationResult
LcmCoordResultType
1
The result of executing the coordination action which also implies the action to be performed by the VNFM as the result of this coordination.
vnfInstanceId
Identifier
1
Identifier of the VNF instance which this coordination request is related to.
vnfLcmOpOccId
Identifier
1
The identifier of the VNF lifecycle management operation occurrence related to the coordination.
lcmOperationType
LcmOperationForCoordType
1
The type of the LCM operation with which coordination is requested.
coordinationActionName
String
1
Indicates the LCM coordination action.
outputParams
KeyValuePairs
0..1
Additional parameters returned by the coordination action.
warnings
String
0..N
Warning messages that were generated while the operation was executing.
error
ProblemDetails
0..1
Error information related to the coordination.
_links
Structure
1
Links to resources related to this resource.
>self
Link
1
URI of this resource.
>vnfLcmOpOcc
Link
1
Related lifecycle management operation occurrence.
>vnfInstance
Link
1
Related VNF instance.
Flow of VNF update¶
The following diagram shows the rolling update using coordinateVNF script.
+---------+
| VNFD |
| |
+----+----+
|
(Script is included v +-------------------+
+--------------------+ in the package) +----------+ | Change current |
+------------>| CoordinateVNF +--------------------->| | | VNF Package |
| | script | | CSAR | | Request with |
| +---------+ | | | | Additional Params |
| | +-------+------------+ +-----+----+ +--+----------------+
| | | ^ | | 1. Change current VNF Package
| | | | +-----v----------v------------------------------+
| | 8. Coordination| | Coordination | +-----------------------+ VNFM |
| | request | | Result | | Tacker-server | |
| | | | | +--+--------------------+ |
| | v | | | 2. Change current VNF Package request |
| | +------------+-------+ | v |
| | | | | +-----------------------------------------+ |
| | | EM | | | | |
| | | | | | +-------------------+ | |
| | +--------------------+ | | | VnfLcmDriver | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | 7. Coordinate | | +-+-----------------+ | |
| | resource | | | 3. change_vnfpkg_process | |
| | +--------------------+ | | v | |
| | | | 4. Get stack resource| | +-------------------+ | |
| | | +--------------+ | to update | | | InfraDriver | 9. Repeat steps | |
| | | | Resource |<-+----------------------+--+---+ | 5 through 8 | |
| +---------+->| | | 5. Update VNFC | | | | for each VNFC| |
| | | |<-+----------------------+--+---+ +--------+ | |
| | +--------------+ | | | | | | | |
| | VNF | | | | |<-------+ | |
| +--------------------+ | | | | | |
| 6. Execute CoordinateVNF script | | | | | |
+---------------------------------------------------------+--+---+ | | |
| | +-------------------+ | |
| | Tacker-conductor | |
+--------------------+ | +-----------------------------------------+ |
| Hardware Resources | | |
+--------------------+ +-----------------------------------------------+
Sequence for Rolling update operation
The Client sends a ChangeCurrentVNFPackage request to the “Individual VNF instance” resource.
Tacker-server calls Tacker-conductor, then Tacker-conductor fetches an on-boarded VNF package and calls VnfLcmDriver.
VnfLcmDriver sends a request to the InfraDriver to change vnfpkg process.
InfraDriver sends a request to the VIM to get stack resource to update.
InfraDriver sends a request to the VIM to update stack.
InfraDriver runs CoordinateVNF script.
CoordinateVNF script sends a request to the VNF to Coordinate VNF.
CoordinateVNF script sends a Coordination request to the external component. The endpoint URL of the external component is obtained from the ChangeCurrentVNFPackage request. The target VNFC obtained from Tacker is specified as inputParams in the LcmCoordRequest. (e.g. it is specified by vnfcInstanceId). The process after receiving Coordination response diverges depending on whether the Synchronous or Asynchronous mode. See note below.
Repeat steps 5 through 8 for each VNFC.
Note
Data model impact¶
None
REST API impact¶
To enable users to specify the information
of the external coordination server,
coordination_server_param
in the ChangeCurrentVnfPkgRequest
will be supported.
This parameter must be set when using the coordinateVNF script
which calls Coordination API.
ChangeCurrentVnfPkgRequest
Attribute name
Data type
Cardinality
Description
vnfdId
Identifier
1
Identifier of the VNFD which defines the destination VNF Package for the change.
extVirtualLinks
ExtVirtualLinkData
0..N
Information about external VLs to connect the VNF to.
extManagedVirtualLinks
ExtManagedVirtualLinkData
0..N
Information about internal VLs that are managed by the NFVO.
vimConnectionInfo
map (VimConnectionInfo)
0..N
Information about VIM connections to be used for managing the resources for the VNF instance, or refer to external/externally-managed virtual links.
additionalParams
KeyValuePairs
0..1
Additional parameters passed by the EM as input to the process.
extensions
KeyValuePairs
0..1
“extensions” attribute in “VnfInstance”.
vnfConfigurableProperties
KeyValuePairs
0..1
“vnfConfigurableProperties” attribute in “VnfInstance”.
User can set following parameter in additionalParams.
additionalParams
Attribute name
Cardinality
Parameter description
upgrade_type
1
Type of file update operation method. Specify Blue-Green or Rolling update.
lcm-operation-coordinate-old-vnf
1
The file path of the script that simulates the behavior of CoordinateVNF for old VNF.
lcm-operation-coordinate-new-vnf
1
The file path of the script that simulates the behavior of CoordinateVNF for new VNF.
vdu_params
0..N
VDU information of target VDU to update. Specifying a vdu_params is required for OpenStack VIM and not required for Kubernetes VIM.
> vdu_id
1
VDU name of target VDU to update.
> old_vnfc_param
0..1
Old VNFC connection information. Required for ssh connection in CoordinateVNF operation for application configuration to VNFC.
>> cp_name
1
Connection point name of old VNFC to update.
>> username
1
User name of old VNFC to update.
>> password
1
Password of old VNFC to update.
>> coordination_server_param
0..1
Information to access coordination server. It is required when using coordinateVNF script which calling Coordination API.
>>> endpoint
1
Endpoint URL of coordination server.
>>> access_info
1
Profile required for access coordination server (e.g. User name and password).
> new_vnfc_param
0..1
New VNFC connection information. Required for ssh connection in CoordinateVNF operation for application configuration to VNFC.
>> cp_name
1
Connection point name of new VNFC to update.
>> username
1
User name of new VNFC to update.
>> password
1
Password of new VNFC to update.
>> coordination_server_param
0..1
Information to access coordination server. It is required when using coordinateVNF script which calling Coordination API.
>>> endpoint
1
Endpoint URL of coordination server.
>>> access_info
1
Profile required for access coordination server (e.g. User name and password).
external_lb_param
0..1
Load balancer information that requires configuration changes. Required only for the Blue-Green deployment process of OpenStack VIM.
> ip_address
1
IP address of load balancer server.
> username
1
User name of load balancer server.
> password
1
Password of load balancer server.
Security impact¶
None
Notifications impact¶
None
Other end user impact¶
None
Performance Impact¶
None
Other deployer impact¶
None
Developer impact¶
None
Implementation¶
Assignee(s)¶
Hirofumi Noguchi <hirofumi.noguchi.rs@hco.ntt.co.jp>
Work Items¶
Add new sample VNF packages containing new coordinate VNF scripts.
Add new functional tests.
Add new utility functions to act as a coordination client.
Dependencies¶
None
Testing¶
Functional test cases will be added for rolling update with the new sample coordinateVNF script.
Documentation Impact¶
New utility functions to act as a coordination client will be described in user manual.