支持基于 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 操作包括实例化、终止、修复、扩展和更改外部连接性。
客户端向“重试操作任务”资源发送一个带有空主体的 POST 请求。
VNFM 向客户端发送一个 VNF 生命周期管理操作实例通知,状态为“PROCESSING”,以指示生命周期管理操作的进行中实例。
重试成功后,VNFM 向客户端发送一个 VNF 生命周期管理操作实例通知,状态为“COMPLETED”,以指示操作成功完成。
重试失败后,VNFM 向客户端发送一个 VNF 生命周期管理操作实例通知,状态为“FAILED_TEMP”,以指示操作的中间错误(重试失败)。
后置条件:VNF 生命周期管理操作实例处于以下状态之一:FAILED_TEMP、COMPLETED。
2) 失败操作流程¶
前提条件:VNF 生命周期管理操作实例处于 FAILED_TEMP 状态。可以执行失败操作的 LCM 操作包括实例化、终止、修复、扩展和更改外部连接性。
该过程包括以下步骤,如图所示
客户端向“失败操作任务”资源发送一个带有空主体的 POST 请求。
VNFM 将操作标记为失败。
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
成功: 200VNF 生命周期管理操作实例的状态已成功更改。
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 进行管理。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
- 其他贡献者
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 生命周期管理。