支持 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) 的流程¶
该过程包括以下步骤,如图所示
客户端发送创建订阅请求。
VNFM 发送通知以测试从创建订阅请求中获取的通知端点。
客户端返回 204 No Content 响应以指示成功。
VNFM 返回 201 Created 响应。
2) VNF LCM 操作事件 (GET) 的流程¶
该过程包括以下步骤,如图所示
客户端向“VNF LCM 操作事件”资源发送 GET 请求,并可以使用符合 ETSI GS NFV SOL13 第 5.2 条的基于属性的过滤表达式 [4]。
VNFM 返回一个响应,其中包含有效负载主体中的零个或多个“VnfLcmOpOcc”类型的数据结构。
3) 单个 VNF LCM 操作事件 (GET) 的流程¶
客户端向“单个 VNF LCM 操作事件”资源发送 GET 请求,并通过其资源 URI 中的适当的 VNF LCM 操作事件标识符进行寻址。
VNFM 返回 200 OK 响应给客户端,并在有效负载主体中包含一个“VnfLcmOpOcc”类型的数据结构。“grantId”、“changedExtConnectivity”、“_links > retry”和“_links > fail”属性在 Wallaby 版本中得到新支持。
4) 订阅 (POST) 的流程¶
客户端向“订阅”资源发送 POST 请求,并在有效负载主体中包含一个“LccnSubscriptionRequest”类型的数据结构。该数据结构包含过滤标准和 VNFM 将随后发送与过滤器匹配的事件通知的客户端 URI。“filter > vnfInstanceSubscriptionFilter”和“filter > operationStates”属性在 Wallaby 版本中得到新支持。
VNFM 返回 201 Created 响应,其中包含一个“LccnSubscription”类型的数据结构,代表 VNFM 刚刚创建的“单个订阅”资源。“filter > vnfInstanceSubscriptionFilter”和“filter > operationStates”属性在 Wallaby 版本中得到新支持。
5) 订阅 (GET) 的流程¶
客户端向代表订阅的资源发送 GET 请求。
VNFM 返回 200 OK 响应,其中包含所有现有订阅的零个或多个表示形式。“filter > vnfInstanceSubscriptionFilter”和“filter > operationStates”属性在 Wallaby 版本中得到新支持。
6) 单个订阅 (GET) 的流程¶
客户端向代表单个订阅的资源发送 GET 请求。
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_occsGET 方法支持的 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/subscriptionsGET 方法支持的 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 进行管理。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
- 其他贡献者
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 生命周期管理。