Support LCM notifications for VNF based on ETSI NFV-SOL specification¶
https://blueprints.launchpad.net/tacker/+spec/support-etsi-nfv-specs
ETSI specifications within the NFV Architecture Framework [1] describe the main aspects of NFV development and usage based on of the industry needs, feedback from SDN/NFV vendors and telecom operators. These specifications include the REST API and data model architecture which is used by NFV users and developers in related products.
Problem description¶
In the current Tacker implementation based on ETSI NFV-SOL, Tacker uses its own API which describes VNF lifecycle change notifications which is Ability to inform the receiver that LCM operations has been changed.
However, those operations are not aligned with the current ETSI NFV data-model. As a result, there might be lack of compatibility with 3rd party VNFs [4], as they are developed according to ETSI NFV specifications. Support of key ETSI NFV specifications will significantly reduce efforts for Tacker integration into Telecom production networks and also will simplify further development and support of future standards.
Proposed change¶
Introduces new interfaces to VNFM in order to notify VNF lifecycle management operations status for VNF instances. The operation provided through the interfaces are:
Subscription (GET/POST/DELETE)
Notification endpoint (POST)
Individual Subscription (GET)
individual VNF occurrence (GET)
1)Flow of managing subscriptions¶
Register subscription
Delete subscription
Show subscription
List subscription
VNFM holds the Callback URL sent by consumer via “Subscription API” in advance.
Notify the issuer of the ID associated with the received Subscription request.
For the registered Subscription status, read by specifying ID, reading of all ID data and deletion of specified ID are allowed.
2)Flow of sending notifications¶
Depending on the progress status of the sequence, VNFM send notification (Notify) to notify the status change and update the internal operation_status.
Precondition: Requesting Node has subscribed previously to notifications related to VNF lifecycle management.
When the LCM request is accepted, the operation status is sent to the consumer which registers subscription via “Subscription API”. This will be sent for the number of registrations.
The following operation states can be notified: STARTING/PROCESSING/COMPLETED/ROLLINGBACK/ROLLEDBACK/FAILED_TEMP
STARTING state is sent from Tacker Server, and other Operation_state notifications are sent from Tacker-Conductor.
Modify VNF does not send STARTING state.
NFVO which recieved notification infomation sends 204 No Content to Tacker.
3) Flow of LCM Operation with notification¶
Instantiate VNF
Scale VNF
Heal VNF
Terminate VNF
Modify VNF
Rollback
4) Flow of VNF instance resource with notification¶
CereateVNFRequest
DeleteVNFRequest
5)Flow of Getting Operation Status¶
Operation status can be obtained from VNFM.
The transmission source node specifies the vnfLcmOpOccId issued at the time of subscription and reads the information about the resource in the Subscription state.
If the VNFM information read is successful, Response 200 OK is responded.
Alternatives¶
None
Data model impact¶
Add below new tables in ‘tacker’ database. The corresponding schemas are detailed below:-
- A list of added tables:
vnf_lcm_filters
details of added table:
vnf_lcm_filters:
id id varchar(36) Not Null subscription_uuid subscription_uuid varchar(36) Not Null filter filter json Not Null notification_types notification_types MEDIUMBLOB notification_types_len notification_types_len int operation_types operation_types MEDIUMBLOB operation_types_len operation_types_len int
subscription_uuid will be foreign key of vnf_lcm_subscriptions.`id`. This table has current status of LCM. Table for accumulating information for each event.
vnf_lcm_op_occs:
id id varchar(36) Not Null operation_state operation_state varchar(16) Not Null state_entered_time state_entered_time datetime Not Null start_time start_time datetime Not Null vnf_instance_id vnf_instance_id varchar(36) Not Null operation operation varchar(16) Not Null is_cancel_pending is_cancel_pending tinyint(1) Not Null is_automatic_invocation is_automatic_invocation tinyint(1) Not Null operation_params operation_params json error error json resource_changes resource_changes json error_point error_point int changed_info changed_info json created_at created_at datetime Not Null updated_at updated_at datetime deleted_at deleted_at datetime deleted deleted tinyint(1) Not Null
vnf_instance_id will be foreign key of vnf_instances.`id`. This table has current status of operation occurrence
vnf_lcm_subscriptions:
id id varchar(36) Not Null callback_uri callback_uri varchar(255) Not Null subscription_authentication subscription_authentication json deleted deleted tinyint(1)
This table has registration information of Subscription
REST API impact¶
The following restFul API will be added. This restFul API will be based on ETSI NFV SOL002 [2] and SOL003 [3].
- Name: SubscriptionsDescription: Subscribe to notifications related to VNF lifecycle managementMethod type: POSTURL for the resource: /vnflcm/v1/subscriptionsRequest:
Data type
Cardinality
Description
LccnSubscriptionRequest
1
Parameters for the Subscription.
Attribute name
Data type
Cardinality
Supported in (V)
filter
LifecycleChangeNotificationFilter
0..1
Yes
callbackUri
Uri
1
Yes
authentication
SubscriptionAuthentication
0..1
Yes
Response:Data type
Cardinality
Response Codes
Description
LccnSubscription
n/a
Success 201Redirection 303Error 4xxThe subscription has been created successfully.
- Name: List SubscriptionsDescription: Request to list all existing subscriptionsMethod type: GETURL for the resource: /vnflcm/v1/subscriptionsRequest:
Data type
Cardinality
Description
Supported in (V)
filter
0..1
Filter to list subscriptions
No
Response:Data type
Cardinality
Response Codes
Description
LccnSubscription
n/a
Success 200Error 400 4xxThe list of subscriptions has been queried successfully.
- Name: Query SubscriptionsDescription: Request to show individual subscription resource by its idMethod type: GETURL for the resource: /vnflcm/v1/subscriptions/{subscriptionId}Request:
Name
Description
subscriptionId
Identifier of the subscriptions.
Response:Data type
Cardinality
Response Codes
Description
LccnSubscription
n/a
Success 200Error 400 4xxThe operation has completed successfully.
- Name: Delete SubscriptionsDescription: Request to delete individual subscription resource by its idMethod type: DELETEURL for the resource: /vnflcm/v1/subscriptions/{subscriptionId}Request:
Name
Description
subscriptionId
Identifier of the subscriptions.
Response:Data type
Cardinality
Response Codes
Description
n/a
n/a
Success 204Error 400 4xxThe individual subscription resource has been deleted successfully.
- Name: Notification endpointDescription: Send notifications related to VNF lifecycle changesMethod type: POSTURL for the resource: The resource URI is provided by the client when creating the subscription.Request:
Data type
Cardinality
Description
VnfLcmOperationOccurrenceNotification
1
A notification about lifecycle changes triggered by a VNF LCM operation occurrence.
VnfIdentifierCreationNotification
1
A notification about lthe creation of a VNF identifier and the related individual VNF instance resource.
VnfIdentifierDeletionNotification
1
A notification about the deletion of a VNF identifier and the related individual VNF instance resource.
Attribute name
Data type
Cardinality
Supported in (V)
id
Identifier
1
Yes
notificationType
String
1
Yes
subscriptionId
Identifier
1
Yes
timeStamp
DateTime
1
Yes
notificationStatus
Enum (inlined)
1
Yes
operationState
LcmOperationStateType
1
Yes
vnfInstanceId
Identifier
1
Yes
operation
LcmOperationType
1
Yes
isAutomaticInvocation
Boolean
1
Yes
vnfLcmOpOccId
Identifier
1
Yes
affectedVnfcs
AffectedVnfc
0..N
Yes
affectedVirtualLinks
AffectedVirtualLink
0..N
Yes
affectedVirtualStorages
AffectedVirtualStorage
0..N
Yes
changedInfo
VnfInfoModifications
0..1
Yes
changedExtConnectivity
ExtVirtualLinkInfo
0..N
No
error
ProblemDetails
0..1
Yes
_links
LccnLinks
1
Yes
Response:Data type
Cardinality
Response Codes
Description
n/a
n/a
Success 204Error 4xxThe notification has been delivered successfully.
Note
virtualLinkDescId, one of the attribute contained in affectedVirtualLinks, is removed upon SOL003 version 2.6.1. However, in order to enable Tacker to expand a wide range of NFV compliant product, virtualLinkDescId will be supported in Victoria release.
- Name: Query VNF occurrenceDescription: Request to show individual VNF lifecycle management operation occurrence by its idMethod type: GETURL for the resource: /vnflcm/v1/vnf_lcm_op_occs/{vnfLcmOpOccId}Response:
Data type
Cardinality
Response Codes
Description
VnfLcmOpOcc
1
Success 200Error 4xxThe operation has completed successfully.
Attribute name
Data type
Cardinality
Supported in (V)
id
Identifier
1
Yes
operationState
LcmOperationStateType
1
Yes
stateEnteredTime
DateTime
1
Yes
startTime
DateTime
1
Yes
vnfInstanceId
Identifier
1
Yes
grantId
Identifier
1
No
operation
LcmOperationType
1
Yes
isAutomaticInvocation
Boolean
1
Yes
operationParams
Object
1
Yes
isCancelPending
Boolean
0..N
No
cancelMode
CancelModeType
0..N
No
error
ProblemDetails
0..N
Yes
resourceChanges
Structure(inlined)
0..1
Yes
changedInfo
VnfInfoModifications
0..N
No
changedExtConnectivity
ExtVirtualLinkInfo
0..1
No
_links
LccnLinks
1
Yes
Security impact¶
None
Notifications impact¶
Tacker will creates a new subscription to notifications related to VNF lifecycle changes and send notification to consumer.
Other end user impact¶
None
Performance Impact¶
None
Other deployer impact¶
The previously created VNFs will not be allowed to be managed using the newly introduced APIs.
Developer impact¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
Keiko Kuriu <keiko.kuriu.wa@hco.ntt.co.jp>
Work Items¶
Add new REST API endpoints to Tacker-server for LCM notifications interface of VNF instances.
Add features which Tacker consumes Rest API for Notifications
Add new unit and functional tests.
Change API Tacker documentation.
Dependencies¶
None
Testing¶
Unit and functional test cases will be added for VNF lifecycle management of VNF instances.
Documentation Impact¶
Complete user guide will be added to explain how to invoke VNF lifecycle management of VNF instances with examples.