支持基于 ETSI NFV-SOL 的错误处理操作

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

ETSI 规范在 NFV 架构框架内 [1] 描述了基于行业需求、SDN/NFV 供应商和电信运营商反馈的 NFV 开发和使用的主要方面。这些规范包括 REST API 和数据模型架构,这些架构被 NFV 用户和开发人员用于相关产品。

问题描述

在当前的基于 ETSI NFV-SOL 的 Tacker 实现中,Tacker 会执行自身的错误处理操作,以响应 VNFM 遇到的错误。

然而,这些操作与当前的 ETSI NFV 数据模型不一致。因此,可能与根据 ETSI NFV 规范开发的 第三方 VNFs [2] 存在兼容性问题。支持关键的 ETSI NFV 规范将显著减少 Tacker 集成到电信生产网络的工作量,并简化未来标准的进一步开发和支持。

提议的变更

为错误处理添加新的 VNFM API。通过这些 API 提供的操作包括

  • 重试操作任务

    客户端可以使用此 API 来启动重试 VNF 生命周期操作。

  • 失败操作任务

    客户端可以使用此 API 将 VNF 生命周期管理操作实例标记为“最终失败”。一旦操作被标记为“最终失败”,就不能再重试或回滚。根据 ETSI NFV 规范,“FAILED”表示“最终失败”。

1) 重试操作流程

前提条件:VNF 生命周期管理操作实例处于 FAILED_TEMP 状态。可以执行重试操作的 LCM 操作包括实例化、终止、修复、扩展和更改外部连接性。

../../_images/0128.png
  1. 客户端向“重试操作任务”资源发送一个带有空主体的 POST 请求。

  2. VNFM 向客户端发送一个 VNF 生命周期管理操作实例通知,状态为“PROCESSING”,以指示生命周期管理操作的进行中实例。

  3. 重试成功后,VNFM 向客户端发送一个 VNF 生命周期管理操作实例通知,状态为“COMPLETED”,以指示操作成功完成。

  4. 重试失败后,VNFM 向客户端发送一个 VNF 生命周期管理操作实例通知,状态为“FAILED_TEMP”,以指示操作的中间错误(重试失败)。

后置条件:VNF 生命周期管理操作实例处于以下状态之一:FAILED_TEMP、COMPLETED。

2) 失败操作流程

前提条件:VNF 生命周期管理操作实例处于 FAILED_TEMP 状态。可以执行失败操作的 LCM 操作包括实例化、终止、修复、扩展和更改外部连接性。

../../_images/0218.png

该过程包括以下步骤,如图所示

  1. 客户端向“失败操作任务”资源发送一个带有空主体的 POST 请求。

  2. VNFM 将操作标记为失败。

  3. VNFM 向客户端发送一个 VNF 生命周期管理操作实例通知,状态为“FAILED”,以指示操作的最终失败。

后置条件:VNF 生命周期管理操作实例处于 FAILED 状态。

备选方案

数据模型影响

REST API 影响

将添加以下 REST API。此 REST API 将基于 ETSI NFV SOL002 [3] 和 SOL003 [4]

  • 名称:重试 VNF 操作
    描述:请求重试 VNF 生命周期操作
    方法类型: POST
    资源的 URL:/vnflcm/v1/ vnf_lcm_op_occs/{vnfLcmOpOccId}/retry
    请求:此资源的资源 URI 变量

    名称

    描述

    vnfLcmOpOccId

    要重试的关联 VNF 生命周期管理操作实例的标识符。

    响应:

    数据类型

    基数

    响应代码

    描述

    n/a

    n/a

    成功 202

    请求已被接受处理,但处理尚未完成。

    ProblemDetails

    0..1

    错误 404

    错误:API 生产者未找到目标资源的当前表示形式,或不愿意公开该表示形式。此错误的通用原因及其处理在 ETSI GS NFV-SOL 013 的 6.4 条中指定 [5],尚未完成。

    ProblemDetails

    1

    错误 409

    错误:由于与 VNF LCM 操作实例资源的冲突,当前无法执行该操作。

  • 名称:失败 VNF 操作
    描述:请求将 VNF 生命周期操作标记为“FAILED”。
    方法类型: POST
    资源的 URL:/vnflcm/v1/vnf_lcm_op_occs/{vnfLcmOpOccId}/fail
    请求:此资源的资源 URI 变量

    名称

    描述

    vnfLcmOpOccId

    要标记为“失败”的关联 VNF 生命周期管理操作实例的标识符。

    响应:

    数据类型

    基数

    响应代码

    描述

    VnfInstance

    0..N

    成功: 200

    VNF 生命周期管理操作实例的状态已成功更改。

    ProblemDetails

    0..1

    错误 404

    错误:API 生产者未找到目标资源的当前表示形式,或不愿意公开该表示形式。此错误的通用原因及其处理在 ETSI GS NFV-SOL 013 的 6.4 条中指定 [5],尚未完成。

    ProblemDetails

    1

    错误 409

    错误:由于与 VNF LCM 操作实例资源的冲突,当前无法执行该操作。

    属性名称

    数据类型

    基数

    Wallaby 中的支持

    id

    标识符

    1

    operationState

    LcmOperationStateType

    1

    stateEnteredTime

    DateTime

    1

    startTime

    DateTime

    1

    vnfInstanceId

    标识符

    1

    grantId

    标识符

    0..1

    operation

    LcmOperationType

    1

    isAutomaticInvocation

    布尔值

    1

    operationParams

    Object

    0..1

    isCancelPending

    布尔值

    1

    cancelMode

    CancelModeType

    0..1

    error

    ProblemDetails

    0..1

    >type

    URI

    0..1

    >title

    字符串

    0..1

    >status

    Integer

    1

    >detail

    字符串

    1

    >instance

    URI

    0..N

    附加属性

    未指定。

    0..1

    resourceChanges

    结构 (内联)

    0..1

    >affectedVnfcs

    AffectedVnfc

    0..N

    >>id

    IdentifierInVnf

    1

    >>vduId

    IdentifierInVnfd

    1

    >>changeType

    Enum (内联)

    1

    >>computeResource

    ResourceHandle

    1

    >>metadata

    KeyValuePairs

    0..N

    >>affectedVnfcCPIds

    IdentifierInVnf

    0..N

    >>addedStorageResourceIds

    VnfVirtualLinkResourceInfo

    0..N

    >>removedStorageResourceIds

    IdentifierInVnf

    0..N

    >>removedStorageResourceIds

    IdentifierInVnf

    0..N

    >affectedVirtualLinks

    AffectedVirtualLink

    0..N

    >>id

    IdentifierInVnf

    1

    >>vnfVirtualLinkDescId

    IdentifierInVnfd

    1

    >>changeType

    Enum (内联)

    1

    >>networkResource

    resourceHandle

    1

    >>metadata

    KeyValuePairs

    0..1

    >affectedVirtualStorages

    AffectedVirtualStorage

    0..N

    >>id

    IdentifierInVnf

    1

    >>VirtualStorageDescId

    IdentifierInVnfd

    1

    >>changeType

    Enum (内联)

    1

    >>storageResource

    resourceHandle

    1

    >>metadata

    KeyValuePairs

    0..1

    changedInfo

    VnfInfoModifications

    0..1

    >vnfInstanceName

    字符串

    0..1

    >vnfInstanceDescription

    字符串

    0..1

    >vnfConfigurableProperties

    KeyValuePairs

    0..1

    >metadata

    KeyValuePairs

    0..1

    >extensions

    KeyValuePairs

    0..1

    >vimConnectionInfo

    vimConnectionInfo

    0..N

    >>id

    标识符

    1

    >>vimId

    标识符

    0..1

    >>vimType

    字符串

    1

    >>interfaceInfo

    KeyValuePairs

    0..1

    >>accessInfo

    KeyValuePairs

    0..1

    >>extra

    KeyValuePairs

    0..1

    >vimConnectionInfoDeleteIds

    标识符

    0..N

    >vnfPkgId

    标识符

    0..1

    >vnfdid

    标识符

    0..1

    >vnfProvider

    字符串

    0..1

    >vnfProductName

    字符串

    0..1

    >vnfSotwareVersion

    版本

    0..1

    >vnfdVersion

    版本

    0..1

    changedExtConnectivity

    ExtVirtualLinkInfo

    0..N

    >id

    标识符

    1

    >resourceHandle

    ResourceHandle

    1

    >>vimConnectionId

    标识符

    0..1

    >>resourceProviderId

    标识符

    0..1

    >>resourceId

    IdentifierInVim

    1

    >>vimLevelResourceType

    字符串

    0..1

    >linkPorts/ extLinkPorts

    ExtLinkPortInfo

    0..N

    >>id

    标识符

    1

    >>resourceHandle

    ResourceHandle

    1

    >>cpInstanceId

    IdentifierInVnf

    0..1

    _links

    结构 (内联)

    1

    >self

    链接

    1

    >vnfInstance

    链接

    1

    >grant

    链接

    0..1

    >cancel

    链接

    0..1

    >retry

    链接

    0..1

    >rollback

    链接

    0..1

    >fail

    链接

    0..1

REST API 的以下属性将被添加。先前版本中实现的 API 的详细信息在 NFV 编排 API v1.0 中描述 [7]

  • 名称: 查询 VNF 事件
    描述: 按其 ID 请求单个 VNF 生命周期管理操作事件
    方法类型: GET
    资源的 URL: /vnflcm/v1/vnf_lcm_op_occs/{vnfLcmOpOccId}
    此资源的资源 URI 变量:

    名称

    描述

    vnfLcmOpOccId

    VNF 生命周期管理操作事件的标识符。

    响应:

    数据类型

    基数

    响应代码

    描述

    VnfLcmOpOcc

    1

    成功 200
    错误 4xx

    操作已成功完成。

    属性名称

    数据类型

    基数

    Wallaby 中支持

    _links

    结构 (内联)

    1

    >retry

    链接

    0..1

    >fail

    链接

    0..1

安全影响

通知影响

其他最终用户影响

在 python-tackerclient 中添加新的 OSC 命令以调用重试 VNF 操作和失败 VNF 操作。

性能影响

其他部署者影响

先前创建的 VNF 将不允许使用新引入的 API 进行管理。

开发人员影响

实现

负责人

主要负责人

野口宏文 <hirofumi.noguchi.rs@hco.ntt.co.jp>

其他贡献者

Keiko Kuriu <keiko.kuriu.wa@hco.ntt.co.jp>

工作项

  • 为 VNF 实例的 LCM 通知接口向 Tacker-server 添加新的 REST API 端点。

  • 对 python-tackerclient 进行更改,以添加用于调用重试 VNF 操作和失败 VNF 操作 API 的新的 OSC 命令。

  • 添加新的单元和功能测试。

  • 更改 API Tacker 文档。

依赖项

要执行重试操作或失败操作,消费者应提前调用订阅操作 [6],以便获取与目标 LCM 操作相关的“vnfLcmOpOccId”。

测试

将为 VNF 实例的 VNF 生命周期管理添加单元和功能测试用例。

文档影响

将添加完整的用户指南,以说明如何使用示例调用 VNF 实例的 VNF 生命周期管理。

参考资料