支持 Tacker 中的基本 VNF 生命周期管理

https://blueprints.launchpad.net/tacker/+spec/support-fundamental-lcm

本规范描述了基于 ETSI NFV-SOL 规范的基本 VNF 生命周期管理 API。

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

问题描述

支持关键的 ETSI NFV 规范将显著减少 Tacker 集成到电信生产网络的工作量,并简化未来标准的发展和支持。

在之前的版本中,我们已经添加了对 ETSI NFV SOL 002 [2] 和 SOL 003 [3] 中定义的 VNF 生命周期管理的部分支持。Tacker 应该支持更多的 API 和属性,以符合 ETSI NFV SOL 规范,并扩展更广泛的使用场景。

提议的变更

本规范中的新 API 提供的操作如下。
  • 支持额外的 API
    • 通知端点 (GET)

    • VNF LCM 操作事件 (GET)

本规范中的附加属性提供的操作如下。
  • 支持额外的属性
    • 单个 VNF LCM 操作事件 (GET)

  • 支持过滤
    • 订阅 (POST, GET)

    • 单个订阅 (GET)

1) 通知端点 (GET) 的流程

../../_images/0129.png

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

  1. 客户端发送创建订阅请求。

  2. VNFM 发送通知以测试从创建订阅请求中获取的通知端点。

  3. 客户端返回 204 No Content 响应以指示成功。

  4. VNFM 返回 201 Created 响应。

2) VNF LCM 操作事件 (GET) 的流程

../../_images/0219.png

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

  1. 客户端向“VNF LCM 操作事件”资源发送 GET 请求,并可以使用符合 ETSI GS NFV SOL13 第 5.2 条的基于属性的过滤表达式 [4]

  2. VNFM 返回一个响应,其中包含有效负载主体中的零个或多个“VnfLcmOpOcc”类型的数据结构。

3) 单个 VNF LCM 操作事件 (GET) 的流程

../../_images/039.png
  1. 客户端向“单个 VNF LCM 操作事件”资源发送 GET 请求,并通过其资源 URI 中的适当的 VNF LCM 操作事件标识符进行寻址。

  2. VNFM 返回 200 OK 响应给客户端,并在有效负载主体中包含一个“VnfLcmOpOcc”类型的数据结构。“grantId”、“changedExtConnectivity”、“_links > retry”和“_links > fail”属性在 Wallaby 版本中得到新支持。

4) 订阅 (POST) 的流程

../../_images/045.png
  1. 客户端向“订阅”资源发送 POST 请求,并在有效负载主体中包含一个“LccnSubscriptionRequest”类型的数据结构。该数据结构包含过滤标准和 VNFM 将随后发送与过滤器匹配的事件通知的客户端 URI。“filter > vnfInstanceSubscriptionFilter”和“filter > operationStates”属性在 Wallaby 版本中得到新支持。

  2. VNFM 返回 201 Created 响应,其中包含一个“LccnSubscription”类型的数据结构,代表 VNFM 刚刚创建的“单个订阅”资源。“filter > vnfInstanceSubscriptionFilter”和“filter > operationStates”属性在 Wallaby 版本中得到新支持。

5) 订阅 (GET) 的流程

../../_images/054.png
  1. 客户端向代表订阅的资源发送 GET 请求。

  2. VNFM 返回 200 OK 响应,其中包含所有现有订阅的零个或多个表示形式。“filter > vnfInstanceSubscriptionFilter”和“filter > operationStates”属性在 Wallaby 版本中得到新支持。

6) 单个订阅 (GET) 的流程

../../_images/061.png
  1. 客户端向代表单个订阅的资源发送 GET 请求。

  2. VNFM 返回 200 OK 响应,其中包含该单个订阅的表示形式。“filter > vnfInstanceSubscriptionFilter”和“filter > operationStates”属性在 Wallaby 版本中得到新支持。

备选方案

数据模型影响

修改当前 Tacker 数据库中的以下表。相应的模式如下所示

vnf_lcm_op_occs

grant_id varchar(36)
changed_ext_connectivity json

vnf_lcm_filters

vnfd_ids MEDIUMBLOB
vnf_products_from_providers json
vnf_provider VARBINARY(255)
vnf_product_name vnf_product_name
vnf_software_version VARBINARY(255)
vnfd_versions MEDIUMBLOB
vnfd_versions_len int
vnf_instance_ids MEDIUMBLOB
vnf_instance_ids_len int
vnf_instance_names MEDIUMBLOB
vnf_instance_names_len int
operation_states MEDIUMBLOB
operation_states_len int

REST API 影响

A) 支持新的 API

将添加以下 API。这些属性基于 ETSI NFV SOL002 [2] 和 SOL003 [3]

订阅 API 的流程通过新的 API 得到增强。通知端点 API 允许服务器测试客户端在订阅期间提供的通知端点。

  • 名称: 通知端点
    描述: 该方法允许服务器测试客户端提供的通知端点。
    方法类型: GET
    资源的 URL: 资源 URI 由客户端在创建订阅时提供。
    响应:

    数据类型

    基数

    响应代码

    描述

    n/a

    n/a

    成功 204
    错误 4xx/ 5xx

    已成功测试通知端点。

注意:如果此 API 返回错误响应,则触发它的订阅 API 将返回 400 错误响应。

  • 名称: VNF LCM 操作事件
    描述: 请求 VNF 生命周期管理操作事件
    方法类型: GET
    资源的 URL: /vnflcm/v1/vnf_lcm_op_occs
    GET 方法支持的 URI 查询参数:

    URI 查询参数

    基数

    Wallaby 中的支持

    filter

    0..1

    all_fields

    0..1

    fields

    0..1

    exclude_fields

    0..1

    exclude_default

    0..1

    nextpage_opaque_marker

    0..1

    响应:

    数据类型

    基数

    响应代码

    描述

    VnfLcmOpOcc

    1

    成功 200
    错误 4xx

    已成功查询零个或多个 VNF 生命周期管理操作事件的状态信息。

    属性名称

    数据类型

    基数

    Wallaby 中支持

    id

    标识符

    1

    operationState

    LcmOperationStateType

    1

    stateEnteredTime

    DateTime

    1

    startTime

    DateTime

    1

    vnfInstanceId

    标识符

    1

    grantId

    标识符

    1

    operation

    LcmOperationType

    1

    isAutomaticInvocation

    布尔值

    1

    operationParams

    Object

    1

    isCancelPending

    布尔值

    0..N

    cancelMode

    CancelModeType

    0..N

    error

    ProblemDetails

    0..N

    resourceChanges

    结构(内联)

    0..1

    changedInfo

    VnfInfoModifications

    0..N

    changedExtConnectivity

    ExtVirtualLinkInfo

    0..1

    _links

    结构 (内联)

    1

    >self

    链接

    1

    >vnfInstance

    链接

    1

    >grant

    链接

    0..1

    >cancel

    链接

    0..1

    >retry

    链接

    0..1

    >rollback

    链接

    0..1

    >fail

    链接

    0..1

B) 支持已实现 API 的新属性

将添加 REST API 的以下属性。这些属性基于 ETSI NFV SOL002 [2] 和 SOL003 [3]。先前版本中实现的 API 的详细信息在 NFV Orchestration API v1.0 中描述 [5]

B-1) 支持附加属性

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

    名称

    描述

    vnfLcmOpOccId

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

    响应:

    数据类型

    基数

    响应代码

    描述

    VnfLcmOpOcc

    1

    成功 200
    错误 4xx

    操作已成功完成。

    属性名称

    数据类型

    基数

    Wallaby 中支持

    grantId

    标识符

    0..1

    _links

    结构 (内联)

    1

    >retry

    链接

    0..1

    >fail

    链接

    0..1

B-2) 支持过滤

  • 名称: 列出订阅
    描述: 请求 VNF 生命周期管理的所有现有订阅的列表
    方法类型: GET
    资源的 URL: /vnflcm/v1/subscriptions
    GET 方法支持的 URI 查询参数:

    URI 查询参数

    基数

    描述

    Wallaby 中支持

    filter

    0..1

    过滤以列出订阅

    响应:

    数据类型

    基数

    响应代码

    描述

    LccnSubscription

    0..N

    成功 200
    错误 4xx/ 5xx

    操作已成功完成。

    属性名称

    数据类型

    基数

    Wallaby 中支持

    filter

    LifecycleChangeNotificationsFilter

    0..1

    vnfInstanceSubscriptionFilter

    VnfInstanceSubscriptionFilter

    0..1

    >operationStates

    LcmOperationStateType

    0..N

  • 名称: 订阅
    描述: 订阅与 VNF 生命周期管理相关的通知
    方法类型: POST
    资源的 URL: /vnflcm/v1/subscriptions
    请求:

    数据类型

    基数

    描述

    LccnSubscriptionRequest

    1

    订阅的参数。

    属性名称

    数据类型

    基数

    Wallaby 中支持

    filter

    LifecycleChangeNotificationFilter

    0..1

    callbackUri

    Uri

    1

    authentication

    SubscriptionAuthentication

    0..1

    响应:

    数据类型

    基数

    响应代码

    描述

    LccnSubscription

    n/a

    成功 201
    重定向 303
    错误 4xx

    已成功创建订阅。

    属性名称

    数据类型

    基数

    Wallaby 中支持

    filter

    LifecycleChangeNotificationsFilter

    0..1

    >vnfInstanceSubscriptionFilter

    VnfInstanceSubscriptionFilter

    0..1

    >operationStates

    LcmOperationStateType

    0..N

  • 名称: 查询订阅
    描述: 按其 ID 请求单个订阅资源
    方法类型: GET
    资源的 URL: /vnflcm/v1/subscriptions/{subscriptionId}
    此资源的资源 URI 变量:

    名称

    描述

    subscriptionId

    订阅的标识符。

    响应:

    数据类型

    基数

    响应代码

    描述

    LccnSubscription

    1

    成功 200
    错误 错误 4xx/ 5xx

    操作已成功完成。

    属性名称

    数据类型

    基数

    Wallaby 中支持

    filter

    LifecycleChangeNotificationsFilter

    0..1

    >vnfInstanceSubscriptionFilter

    VnfInstanceSubscriptionFilter

    0..1

    >operationStates

    LcmOperationStateType

    0..N

安全影响

通知影响

本规范增强了与 VNF 生命周期管理订阅和通知相关的 API。

其他最终用户影响

  • 在 python-tackerclient 中添加新的 OSC 命令以调用 VNF LCM 操作事件和查询 VNF 事件。

  • 客户端必须配置为对通知端点 (GET) 的请求返回 204。

性能影响

其他部署者影响

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

开发人员影响

实现

负责人

主要负责人

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

其他贡献者

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

工作项

  • 将新的 REST API 和支持的属性添加到 Tacker-server。

  • 对 python-tackerclient 进行更改,以添加用于调用 VNF LCM 操作事件和查询 VNF 事件的 API 的新的 OSC 命令。

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

  • 更改 API Tacker 文档。

依赖项

测试

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

文档影响

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

参考资料