增强 Tacker 中的 VNF 生命周期管理¶
https://blueprints.launchpad.net/tacker/+spec/support-etsi-nfv-specs
本规范描述了 Tacker 中 VNF 生命周期管理的增强。
问题描述¶
在 Ussuri 版本中,我们添加了对 ETSI NFV SOL 002 [1] 和 SOL 003 [2] 中定义的 VNF 生命周期管理的支持。Tacker 应该支持更多的属性以符合 ETSI NFV SOL 规范,并扩展更广泛的使用场景。
提议的变更¶
为了向后兼容,VNFM 支持以下功能
将 vnfPkgId 设置为相关的 API。该参数存在于 SOL003 版本 2.4.1 [3] 中,但已在 SOL003 版本 2.6.1 中删除。
创建 VNF 标识符(响应)
查询 VNF(响应)
列出 VNF 实例(响应)
修改 VNF 实例(请求)
为了支持属性过滤,以便获取 vnfPkgId,VNFM 支持基于属性的过滤
1) vnfPkgId 支持¶
1-1) 创建 VNF 请求流程¶
VNFM 向 NFVO 发送一个按“vnfdId”过滤的 GET 请求,以查询 VNF 包的信息以获取“vnfPkgId”,因为使用“vnfdId”获取 VNF 包的 API 不受支持。由于需要从 NFVO 获取 VNF 包,因此获得的“vnfPkgId”保存在 DB 中,并作为从 VNFM 获取 VNF 包请求的参数使用。之后,VNFM 启动通过配置启用的信息收集序列,并收集内容/VNFD/artifact。这些 GET 请求,“VNF 包内容”,“单个 VNF 包中的 VNFD”和“单个 VNF 包 artifact”可以配置为每个 API 的执行与否。成功获取目标 VNF 包后,VNFM 返回一个 201 Created 响应,其中 payload body 包含“vnfPkgId”属性。
1-2) 查询 VNF 请求流程¶
VNFM 返回一个包含 payload body 中“vnfPkgId”的“200 OK”响应。
1-3) 列出 VNF 请求流程¶
VNFM 返回一个包含 payload body 中“vnfPkgId”的“200 OK”响应。
1-4) 修改 VNF 请求流程¶
客户端发送一个包含“vnfPkgId”属性的修改 VNF 信息请求。之后,启动通过配置启用的信息收集序列,并收集内容/VNFD/artifact。这些 GET 请求,“VNF 包内容”,“单个 VNF 包中的 VNFD”和“单个 VNF 包 artifact”可以配置为每个 API 的执行与否。VNFM 在正确收集所有 VNF 包信息后将继续修改 VNF 信息。
2) 支持基于属性的过滤¶
为了增强带有基于属性过滤功能的 LCM 支持,SOL013 [4] 第 5.2.2 节中定义的过滤规范将在 Victoria 版本中得到支持。
此功能可以在以下情况下运行
vnf_instances(GET)
基于属性过滤的运算符
带有参数的运算符 |
含义 |
|---|---|
eq,<attrName>,<value> |
属性等于 <value> |
neq,<attrName>,<value> |
属性不等于 <value> |
in,<attrName>,<value>[,<value>]* |
属性等于列表中的一个值(“in set”关系) |
nin,<attrName>,<value>[,<value>]* |
属性不等于列表中的任何值(“not in set”关系) |
gt,<attrName>,<value> |
属性大于 <value> |
gte,<attrName>,<value> |
属性大于或等于 <value> |
lt,<attrName>,<value> |
属性小于 <value> |
lte,<attrName>,<value> |
属性小于或等于 <value> |
cont,<attrName>,<value>[,<value>]* |
字符串属性包含(至少)列表中的一个值 |
ncont,<attrName>,<value>[,<value>]* |
字符串属性不包含列表中的任何值 |
运算符对数据类型的适用性
运算符 |
字符串 |
数字 |
DateTime |
枚举 |
布尔值 |
|---|---|---|---|---|---|
eq |
x |
x |
x |
x |
|
neq |
x |
x |
x |
x |
|
在 |
x |
x |
x |
||
nin |
x |
x |
x |
||
gt |
x |
x |
x |
||
gte |
x |
x |
x |
||
lt |
x |
x |
x |
||
lte |
x |
x |
x |
||
cont |
x |
||||
ncont |
x |
上述表格定义了哪些运算符适用于哪些数据类型。所有标有“x”的组合都应支持。
备选方案¶
无
数据模型影响¶
修改 ‘tacker’ 数据库中的以下表格。相应的 schemas 详见如下:-
- vnf_instances:
vnf_pkg_id vnf_pkg_id varchar(36) vnf_metadata vnf_metadata json
REST API 影响(需要更新)¶
以下属性将被添加到 restFul API。这些属性基于 ETSI NFV SOL002 [1] 和 SOL003 [2]。
- 名称: 创建 VNF 标识符描述: 创建新的 VNF 实例资源方法类型: POST资源的 URL:/vnflcm/v1/vnf_instances请求:
数据类型
基数
描述
CreateVnfRequest
1
VNF 创建参数。
属性名称
数据类型
基数
Victoria 中的支持
vnfdId
标识符
1
Ussuri 中已支持
vnfInstanceName
字符串
0..1
Ussuri 中已支持
vnfInstanceDescription
字符串
0..1
Ussuri 中已支持
metadata
KeyValuePairs
0..1
是
响应:数据类型
基数
响应代码
描述
VnfInstance
1
成功 201错误 400 401 403VNF 实例标识符已成功创建。
- 名称:查询 VNF描述:通过其 id 请求现有的 VNF 实例资源方法类型: GET资源的 URL:/vnflcm/v1/vnf_instances/{vnfInstanceId}此资源的资源 URI 变量:
名称
描述
vnfInstanceId
VNF 实例的标识符。
响应:数据类型
基数
响应代码
描述
VnfInstance
1
成功: 200错误:401 403 404成功查询了单个 VNF 实例的信息。
- 名称:列出 VNF 实例描述:请求列出所有现有的 VNF 实例方法类型: GET资源的 URL:/vnflcm/v1/vnf_instances响应:
数据类型
基数
响应代码
描述
VnfInstance
0..N
成功: 200错误:401 403成功查询了零个或多个 VNF 实例的信息。
属性名称
数据类型
基数
Victoria 中的支持
id
标识符
1
Ussuri 中已支持
vnfInstanceName
字符串
0..1
Ussuri 中已支持
vnfInstanceDescription
字符串
0..1
Ussuri 中已支持
vnfdId
标识符
1
Ussuri 中已支持
vnfProvider
字符串
1
Ussuri 中已支持
vnfProductName
字符串
1
Ussuri 中已支持
vnfSoftwareVersion
版本
1
Ussuri 中已支持
vnfdVersion
版本
1
Ussuri 中已支持
vnfPkgId
标识符
1
是
vnfConfigurableProperties
KeyValuePairs
0..1
否
vimConnectionInfo
VimConnectionInfo
0..N -> 0..1
是
instantiationState
Enum
1
Ussuri 中已支持
instantiatedVnfInfo
结构
0..1
Ussuri 中已支持
>flavourId
IdentifierInVnfd
1
Ussuri 中已支持
>vnfState
VnfOperationalStateType
1
Ussuri 中已支持
>scaleStatus
ScaleInfo
0..N
是
>extCpInfo
VnfExtCpInfo
1..N
Ussuri 中已支持
>extVirtualLinkInfo
ExtVirtualLinkInfo
0..N
Ussuri 中已支持
>extManagedVirtualLinkInfo
ExtManagedVirtualLinkInfo
0..N
Ussuri 中已支持
>monitoringParameters
MonitoringParameter
0..N
否
>localizationLanguage
字符串
0..1
否
>vnfcResourceInfo
VnfcResourceInfo
0..N
Ussuri 中已支持
>vnfVirtualLinkResourceInfo
VnfVirtualLinkResourceInfo
0..N
Ussuri 中已支持
>virtualStorageResourceInfo
VirtualStorageResourceInfo
0..N
Ussuri 中已支持
>vnfcInfo
VnfcInfo
0..N
是
metadata
KeyValuePairs
0..1
否
extensions
KeyValuePairs
0..1
否
_links
结构
1
Ussuri 中已支持
>self
链接
1
Ussuri 中已支持
>indicators
链接
0..1
否
>instantiate
链接
0..1
Ussuri 中已支持
>terminate
链接
0..1
Ussuri 中已支持
>scale
链接
0..1
是
>scaleToLevel
链接
0..1
否
>changeFlavour
链接
0..1
否
>heal
链接
0..1
Ussuri 中已支持
>operate
链接
0..1
否
>changeExtConn
链接
0..1
否
- 名称:实例化 VNF 任务描述: 此任务资源表示“实例化 VNF”操作。客户端可以使用此资源来实例化 VNF 实例。方法类型: POST资源的 URL:/vnflcm/v1/vnf_instances/{vnfInstanceId}/instantiate此资源的资源 URI 变量:
名称
定义
vnfInstanceId
要实例化的 VNF 实例的标识符。
请求:数据类型
基数
描述
InstantiateVnfRequest
1
传递给 instantiate 任务的参数。
属性名称
数据类型
基数
Victoria 中的支持
描述
flavourId
IdentifierInVnfd
1
Ussuri 中已支持
要实例化的 VNF 部署 flavor 的标识符。
instantiationLevelId
IdentifierInVnfd
0..1
Ussuri 中已支持
要实例化的部署 flavor 的实例化级别标识符。如果未提供,则实例化 VNFD 中声明的默认实例化级别。
extVirtualLinks
ExtVirtualLinkData
0..N
Ussuri 中已支持
有关连接到 VNF 的外部 VL 的信息。
vimConnectionInfo
VimConnectionInfo
0..N -> 0..1
Ussuri 中已支持
用于管理 VNF 实例资源的 VIM 连接信息。在 U 版本中,仅接受 0..1 VIMConnectionInfo。
additionalParams
KeyValuePairs
0..1
Ussuri 中已支持
实例化过程的附加参数,特定于正在实例化的 VNF。
extManagedVirtualLinks
ExtManagedVirtualLinkData
0..N
Ussuri 中已支持
localizationLanguage
字符串
0..1
否
extensions
KeyValuePairs
0..1
否
响应:数据类型
基数
响应代码
描述
n/a
成功:202错误:400、401、403、404、409请求已被接受处理,但处理尚未完成。
- 名称: 终止 VNF 任务描述: 此任务资源表示“终止 VNF”操作。客户端可以使用此资源来终止 VNF 实例。方法类型: POST资源的 URL:/vnflcm/v1/vnf_instances/{vnfInstanceId}/terminate此资源的资源 URI 变量:
名称
描述
vnfInstanceId
要终止的 VNF 实例的标识符。
请求:数据类型
基数
描述
TerminateVnfRequest
1
传递给 Terminate VNF 任务的参数。
属性名称
数据类型
可能的值
基数
支持
描述
terminationType
Enum (内联)
FORCEFUL GRACEFUL
1
Ussuri 中已支持
指示请求强制终止还是优雅终止。- FORCEFUL:VNFM 将立即关闭 VNF 并释放资源。- GRACEFUL:VNFM 将首先安排将 VNF 退出服务。完成退出服务操作后,它将等待 gracefulTerminationTimeout 中指定的时间,然后 VNFM 将关闭 VNF 并释放资源。additionalParams
KeyValuePairs
0..1
是
终止过程的附加参数,特定于正在终止的 VNF。
gracefulTerminationTimeout
Integer
0..1
Ussuri 中已支持
此属性仅在优雅终止的情况下适用。它定义了在关闭 VNF 并释放资源之前等待 VNF 退出服务的时间。单位为秒。
响应:数据类型
基数
响应代码
描述
n/a
成功:202错误:400、401、403、404、409请求已被接受处理,但处理尚未完成。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
先前创建的 VNF 将不允许使用新引入的 API 进行管理。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
Keiko Kuriu <keiko.kuriu.wa@hco.ntt.co.jp>
工作项¶
将新的 REST API 属性添加到 Tacker-server。
添加新的单元和功能测试。
更改 API Tacker 文档。
依赖项¶
“修改 VNF”在“Proposed change”中引用的是 spec [5] 中提出的基于 ETSI SOL 的 API。
测试¶
将为 VNF 实例的 VNF 生命周期管理添加单元和功能测试用例。
文档影响¶
将添加完整的用户指南,以说明如何使用示例调用 VNF 实例的 VNF 生命周期管理。