Tacker Studio¶
https://blueprints.launchpad.net/tacker/+spec/tacker-studio
本文档描述了为 NFV 仪表板实现一个新的 horizon 面板的计划,该面板有助于可视化设计 Tacker 的 TOSCA 模板。
+----------------------+ +---------------------+
| | +---> Django form |
| NFV dashboard | | | to define VNFD, |
| | | | VNFFGD, NSD |
+---------+------------+ | | properties |
| | +---------------------+
+---------v------------+ | +---------------------+
| | | | Save to files |
| +---+ | & store in |
| Django Views | | Tacker DB or in a |
| +-------> tacker-horizon's |
| | | static dir or |
| +-+ | an NFS share(+) |
+-----------+-----+----+ | +---------------------+
| | | +---------------------+
| | +-----> Load and display |
| | | saved files content |
| | +---------------------+
| | +---------------------+
| +------------> Export and import |
| | external YAML files |
| +---------------------+
| +---------------------+
+------------------> Onboard templates |
+----------+----------+
|
+-----------------------------------------v----------+
| |
| Tacker API |
| |
+----------------------------------------------------+
问题描述¶
为了启动一个新的 VNF、VNFFG 或 NS,我们必须手动准备一个 TOSCA 模板 YAML [1] 文件,该文件可能存在拼写错误、意外的缩进、错误的字段等… 本文档建议构建一个 Web 界面(horizon 面板 [3]),帮助我们设计、存储和导出 VNFD、VNFFGD、NSD 模板,减少错误并使其更美观。
拟议的变更¶
将实现一个新的 horizon 面板并将其插入到 NFV 仪表板 [2] 中,该面板包含一个用于生成各种描述符(VNFD、VNFFGD、NSD)的表单。这些表单将包含这些输入字段以及模板属性(名称、描述等…)
+----------------+-------------------------+
| Resource type | Description |
+================+=========================+
| VDU | Virtual Deployment Unit |
+----------------+-------------------------+
| CP | Connection Point |
+----------------+-------------------------+
| VL | Virtual Link |
+----------------+-------------------------+
| FIP | Floating IPs |
+----------------+-------------------------+
| policies | Policies |
+----------------+-------------------------+
及其属性。
上述表单将基于 Django 表单实现。这些表单将集成到上述面板中,并为我们提供以下功能
输入 VDU(Tacker 的资源和属性)的信息
将设计好的模板保存并存储到文件(YAML 格式)中,存储在 tacker-horizon 的静态目录中,
一个 Django 视图(控制器)可以帮助我们将设计好的模板存储到 tacker-horizon 的静态目录中的文件中。 这样,我们就可以使 tacker-horizon 数据库与 Tacker 服务器独立。
包含上传模板的目录可以在 tacker-horizon 的 Django 设置中设置为以下内容 [4]
MEDIA_ROOT = /path/to/uploaded/templates/
- (+) 如果用户决定在
HAProxy 后面放置多个 tacker-horizon 实例,确保这些实例之间复制模板是他的责任。 这不在本文档的范围内。
- (+) 该路径可以是放置 tacker-horizon 的本地目录,也可以是 NFS
路径。
- (+) 未来工作将把模板存储到 Tacker 的数据库中,并且
我们可以使用 tacker API 进行查询。
加载、解析并在面板视图上显示保存的模板(YAML),
将设计好的模板导出为 yaml 文件
需要实现一个 YAML 解析器 Python 模块来处理模板到 YAML 的转换。 另外,将使用另一个模块来处理 YAML 文件的下载。
导入并在面板上显示外部 YAML 文件,
借助 YAML 解析器和上传/下载模块,我们可以提供将外部 YAML 文件导入到 Tacker Studio 并重新配置它们(修改其属性)的能力。
将设计好的模板(VNFD、VNFFGD、NSD)直接导入到 Tacker 服务器。
Tacker Studio 将调用 Tacker 的 API 来导入设计好的模板。
备选方案¶
数据模型影响¶
在未来的工作中,我们可以使用 Tacker API 将设计好的模板保存到 Tacker 数据库中。 在这种情况下,需要创建一个新的表来存储模板。 表模型如下
+----------------------------------------------------------------+
| Table name: tosca_templates |
+------------------+--------+------------------------------------+
| Column | Type | Default value |
+------------------+--------+------------------------------------+
| template_name | string | |
+------------------+--------+------------------------------------+
| tosca_version | string | tosca_simple_profile_for_nfv_1_0_0 |
+------------------+--------+------------------------------------+
| template_type | int | 0 |
+------------------+--------+------------------------------------+
| template_content | text | |
+------------------+--------+------------------------------------+
注意: template_type 值是
0: VNFD
1: VNFFGD
2: NSD
REST API 影响¶
需要创建一组新的 Tacker API 函数来操作新的 tosca_templates 表(CRUD)。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
Trinh Nguyen <dangtrinhnt@gmail.com>
工作项¶
构建一个新的 Horizon 面板,该面板插入到 NFV 仪表板
开发一组 Python 模块,提供以下功能
Django 表单,用于输入 Tacker 的 TOSCA 模板属性,
导出到 yaml 文件,
导入 yaml 文件并显示它们,
将模板保存到 tacker-horizon 内部的草稿文件,
从草稿文件中加载模板并显示它,
删除现有的草稿,
从草稿模板调用 tacker api 以 onboarding vnfd、vnffgd、nsd。
添加所有上述功能的单元测试用例
编写 Tacker Studio 的用户指南
依赖项¶
无
测试¶
需要开发一组新的单元测试用例来检查生成的模板是否具有正确的 TOSCA 格式和正确的语法。
文档影响¶
将添加 Tacker Studio 的新用户指南。