Support ETSI NFV-SOL based error-handling operation

https://blueprints.launchpad.net/tacker/+spec/support-error-handling

ETSI specifications within the NFV Architecture Framework [1] describe the main aspects of NFV development and usage based on 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 executes its own error-handling operation which reacts to errors the VNFM encounters.

However, those operations are not aligned with the current ETSI NFV data-model. As a result, there might be a lack of compatibility with 3rd party VNFs [2], 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

Adding new APIs to VNFM regarding error handling. The operations provided through these APIs are:

  • Retry operation task

    The client can use this API to initiate retrying a VNF lifecycle operation.

  • Fail operation task

    The client can use this API to mark a VNF lifecycle management operation occurrence as “finally failed”. Once the operation is marked as “finally failed”, it cannot be retried or rolled back anymore. On the basis of the ETSI NFV specification, “FAILED” represents “finally failed”.

1) Flow of Retry operation

Precondition: VNF lifecycle management operation occurrence is in FAILED_TEMP state. LCM operation that can perform Retry operation are Instantiation, Termination, Healing, Scaling, and ChangeExternalConnectivity.

../../_images/0128.png
  1. The Client sends a POST request with an empty body to the “Retry operation task” resource.

  2. VNFM sends the Client a VNF lifecycle management operation occurrence notification with the “PROCESSING” state to indicate the processing occurrence of the lifecycle management operation.

  3. On successful retry, VNFM sends the Client a VNF lifecycle management operation occurrence notification with the “COMPLETED” state to indicate successful completion of the operation.

  4. On unsuccessful retry, VNFM sends the Client a VNF lifecycle management operation occurrence notification with the “FAILED_TEMP” state to indicate an intermediate error (retry failed) of the operation.

Postcondition: The VNF lifecycle management operation occurrence is in one of the following states: FAILED_TEMP, COMPLETED.

2) Flow of Fail operation

Precondition: VNF lifecycle management operation occurrence is in FAILED_TEMP state. LCM operation that can perform Fail operation are Instantiation, Termination, Healing, Scaling, and ChangeExternalConnectivity.

../../_images/0218.png

The procedure consists of the following steps as illustrated in above sequence:

  1. The client sends a POST request with an empty body to the “Fail operation task” resource.

  2. VNFM marks the operation as failed.

  3. VNFM sends the Client a VNF lifecycle management operation occurrence notification with the “FAILED” state to indicate the final failure of the operation.

Postcondition: The VNF lifecycle management operation occurrence is FAILED state.

Alternatives

None

Data model impact

None

REST API impact

The following REST API will be added. This REST API will be based on ETSI NFV SOL002 [3] and SOL003 [4].

  • Name: Retry VNF operation
    Description: Request to retry VNF lifecycle operations
    Method type: POST
    URL for the resource: /vnflcm/v1/ vnf_lcm_op_occs/{vnfLcmOpOccId}/retry
    Request: Resource URI variables for this resource

    Name

    Description

    vnfLcmOpOccId

    Identifier of the related VNF lifecycle management operation occurrence to be retried.

    Response:

    Data type

    Cardinality

    Response Codes

    Description

    n/a

    n/a

    Success 202

    The request has been accepted for processing, but processing has not been completed.

    ProblemDetails

    0..1

    Error 404

    Error: The API producer did not find a current representation for the target resource or is not willing to disclose that one exists. The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [5], not been completed.

    ProblemDetails

    1

    Error 409

    Error: The operation cannot be executed currently, due to a conflict with the state of the VNF LCM operation occurrence resource.

  • Name: Fail VNF operation
    Description: Request to mark VNF lifecycle operations as “FAILED”.
    Method type: POST
    URL for the resource: /vnflcm/v1/vnf_lcm_op_occs/{vnfLcmOpOccId}/fail
    Request: Resource URI variables for this resource

    Name

    Description

    vnfLcmOpOccId

    Identifier of the related VNF lifecycle management operation occurrence to be marked as “failed”.

    Response:

    Data type

    Cardinality

    Response Codes

    Description

    VnfInstance

    0..N

    Success: 200

    The state of the VNF lifecycle management operation occurrence has been changed successfully.

    ProblemDetails

    0..1

    Error 404

    Error: The API producer did not find a current representation for the target resource or is not willing to disclose that one exists. The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [5], not been completed.

    ProblemDetails

    1

    Error 409

    Error: The operation cannot be executed currently, due to a conflict with the state of the VNF LCM operation occurrence resource.

    Attribute name

    Data type

    Cardinality

    Support in Wallaby

    id

    Identifier

    1

    Yes

    operationState

    LcmOperationStateType

    1

    Yes

    stateEnteredTime

    DateTime

    1

    Yes

    startTime

    DateTime

    1

    Yes

    vnfInstanceId

    Identifier

    1

    Yes

    grantId

    Identifier

    0..1

    Yes

    operation

    LcmOperationType

    1

    Yes

    isAutomaticInvocation

    Boolean

    1

    Yes

    operationParams

    Object

    0..1

    Yes

    isCancelPending

    Boolean

    1

    Yes

    cancelMode

    CancelModeType

    0..1

    No

    error

    ProblemDetails

    0..1

    Yes

    >type

    URI

    0..1

    No

    >title

    String

    0..1

    Yes

    >status

    Integer

    1

    Yes

    >detail

    String

    1

    Yes

    >instance

    URI

    0..N

    No

    additional attributes

    Not specified.

    0..1

    Yes

    resourceChanges

    Structure (inlined)

    0..1

    Yes

    >affectedVnfcs

    AffectedVnfc

    0..N

    Yes

    >>id

    IdentifierInVnf

    1

    Yes

    >>vduId

    IdentifierInVnfd

    1

    Yes

    >>changeType

    Enum (inlined)

    1

    Yes

    >>computeResource

    ResourceHandle

    1

    Yes

    >>metadata

    KeyValuePairs

    0..N

    No

    >>affectedVnfcCPIds

    IdentifierInVnf

    0..N

    Yes

    >>addedStorageResourceIds

    VnfVirtualLinkResourceInfo

    0..N

    Yes

    >>removedStorageResourceIds

    IdentifierInVnf

    0..N

    Yes

    >>removedStorageResourceIds

    IdentifierInVnf

    0..N

    Yes

    >affectedVirtualLinks

    AffectedVirtualLink

    0..N

    Yes

    >>id

    IdentifierInVnf

    1

    Yes

    >>vnfVirtualLinkDescId

    IdentifierInVnfd

    1

    Yes

    >>changeType

    Enum (inlined)

    1

    Yes

    >>networkResource

    resourceHandle

    1

    Yes

    >>metadata

    KeyValuePairs

    0..1

    No

    >affectedVirtualStorages

    AffectedVirtualStorage

    0..N

    Yes

    >>id

    IdentifierInVnf

    1

    Yes

    >>VirtualStorageDescId

    IdentifierInVnfd

    1

    Yes

    >>changeType

    Enum (inlined)

    1

    Yes

    >>storageResource

    resourceHandle

    1

    Yes

    >>metadata

    KeyValuePairs

    0..1

    No

    changedInfo

    VnfInfoModifications

    0..1

    Yes

    >vnfInstanceName

    String

    0..1

    Yes

    >vnfInstanceDescription

    String

    0..1

    Yes

    >vnfConfigurableProperties

    KeyValuePairs

    0..1

    No

    >metadata

    KeyValuePairs

    0..1

    Yes

    >extensions

    KeyValuePairs

    0..1

    No

    >vimConnectionInfo

    vimConnectionInfo

    0..N

    Yes

    >>id

    Identifier

    1

    Yes

    >>vimId

    Identifier

    0..1

    Yes

    >>vimType

    String

    1

    Yes

    >>interfaceInfo

    KeyValuePairs

    0..1

    Yes

    >>accessInfo

    KeyValuePairs

    0..1

    Yes

    >>extra

    KeyValuePairs

    0..1

    No

    >vimConnectionInfoDeleteIds

    Identifier

    0..N

    No

    >vnfPkgId

    Identifier

    0..1

    Yes

    >vnfdid

    Identifier

    0..1

    Yes

    >vnfProvider

    String

    0..1

    Yes

    >vnfProductName

    String

    0..1

    Yes

    >vnfSotwareVersion

    Version

    0..1

    Yes

    >vnfdVersion

    Version

    0..1

    Yes

    changedExtConnectivity

    ExtVirtualLinkInfo

    0..N

    Yes

    >id

    Identifier

    1

    Yes

    >resourceHandle

    ResourceHandle

    1

    Yes

    >>vimConnectionId

    Identifier

    0..1

    Yes

    >>resourceProviderId

    Identifier

    0..1

    No

    >>resourceId

    IdentifierInVim

    1

    Yes

    >>vimLevelResourceType

    String

    0..1

    No

    >linkPorts/ extLinkPorts

    ExtLinkPortInfo

    0..N

    Yes

    >>id

    Identifier

    1

    Yes

    >>resourceHandle

    ResourceHandle

    1

    Yes

    >>cpInstanceId

    IdentifierInVnf

    0..1

    Yes

    _links

    Structure (inlined)

    1

    Yes

    >self

    Link

    1

    Yes

    >vnfInstance

    Link

    1

    Yes

    >grant

    Link

    0..1

    Yes

    >cancel

    Link

    0..1

    No

    >retry

    Link

    0..1

    Yes

    >rollback

    Link

    0..1

    Yes

    >fail

    Link

    0..1

    Yes

The following attributes of REST APIs will be added. Details of APIs implemented in previous versions are described in NFV Orchestration API v1.0 [7].

  • Name: Query VNF occurrence
    Description: Request individual VNF lifecycle management operation occurrence by its id
    Method type: GET
    URL for the resource: /vnflcm/v1/vnf_lcm_op_occs/{vnfLcmOpOccId}
    Resource URI variables for this resource::

    Name

    Description

    vnfLcmOpOccId

    Identifier of a VNF lifecycle management operation occurrence.

    Response:

    Data type

    Cardinality

    Response Codes

    Description

    VnfLcmOpOcc

    1

    Success 200
    Error 4xx

    The operation has completed successfully.

    Attribute name

    Data type

    Cardinality

    Supported in Wallaby

    _links

    Structure (inlined)

    1

    Yes

    >retry

    Link

    0..1

    Yes

    >fail

    Link

    0..1

    Yes

Security impact

None

Notifications impact

None

Other end user impact

Add new OSC commands in python-tackerclient to invoke Retry VNF operation and Fail VNF operation.

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:

Hirofumi Noguchi <hirofumi.noguchi.rs@hco.ntt.co.jp>

Other contributors:

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.

  • Make changes in python-tackerclient to add new OSC commands for calling APIs of Retry VNF operation and Fail VNF Operation.

  • Add new unit and functional tests.

  • Change API Tacker documentation.

Dependencies

To execute retry operation or fail operation, consumer should invoke subscription operation [6] in advance in order to get “vnfLcmOpOccId” related to the target LCM operation.

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.

References