本作品采用知识共享署名 3.0 未移植许可协议授权。

http://creativecommons.org/licenses/by/3.0/legalcode

Inline VNF 模板

https://blueprints.launchpad.net/tacker/+spec/vnf-inline-template

此蓝图将引入对 tacker vnf-create 命令的支持,使其 VNFD ID 可选。相反,支持一种选项,可以直接将 VNFD 模板传递给 vnf-create API / CLI。

问题描述

目前 VNF Catalog 是 Tacker 解决方案不可或缺的一部分。在实例化之前,VNFD 模板应该已经填充到 VNF Catalog 中。但是,当 Tacker 仅用作 G-VNFM 时,存在 VNF/NFV Catalog 存在于 Tacker 之外的情况。对于这些解决方案,使用 Tacker 的 VNF Catalog 没有意义。

在这种情况下,VNFD 模板将通过 CLI/API 在 VNF 创建期间直接提供。

提议的变更

VNFD 模板将直接提供给 CLI/API,同时创建 VNF。模板将不会作为 VNFD 入板。Tacker DB 将保存有关所用模板性质的信息。Tacker 服务器在创建 VNF 时,将绕过获取 VNFD 的逻辑,而是调用 tosca-parser 和 Heat APIs 来生成 VNF。Inline VNF 模板将优先于在 VNF 创建期间指定的 VNFD 名称或 ID。

备选方案

有两种方法可以实现这一点。

  1. 根本不在 Tacker DB 中存储模板。这似乎完全符合此 BP 的最初想法。但是,当存在过多的 VNF 时,将 VNF 映射到所用模板会变得困难。

  2. 将模板存储在 Tacker DB 的 VNFD 表中。模板将通过 “–all” 标志在 “vnfd list” 中显示。

此规范讨论的是选项 2。

数据模型影响

需要向 VNFD 表添加一列 “template-source”,指示模板的性质。该字段将具有 2 个值,即 “inline”(表示直接传递的模板)或 “onboarded”(表示从 Tacker DB 使用的模板)。

需要实现从 vnf 名称派生模板名称的逻辑。模板名称将为 “tmpl-<random-hex>-vnf-name”。

REST API 影响

‘Create VNF’ API 将具有一个 “vnf-template” 字段,该字段将保存用于 VNF 的模板。

‘Show VNFD’ API 将具有逻辑,根据是否提供了 “–all” 标志来删除 “template” 字段。

安全影响

通知影响

其他最终用户影响

客户端和 Horizon 变更

  1. 在 “create vnf” 命令中添加 “vnf-template” 参数

  2. 实现偏好逻辑,在同时指定模板和 vnfd ID 或名称时,优先考虑 vnfd-template

  3. 向 “vnfd list” API 添加 “all” 标志,以同时列出 inline 模板。这仅适用于 CLI,不适用于 Horizon

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

Janki Chhatbar <jchhatba@redhat.com>

工作项

  1. 将 “vnf-template” 和 “all” 参数添加到 Tackerclient

  2. 实现优先考虑 inline 模板的逻辑

  3. 在服务器上实现变更

  4. 添加功能测试用例

  5. 添加有关使用此功能的用法指南

  6. 更新 API 参考指南,网址为 [1]

依赖项

测试

添加此功能的函数和单元测试。

文档影响

将提供用户指南。

参考资料

[1]. https://opendev.org/openstack/tacker/src/branch/master/api-ref/source/v1/vnfs.inc