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 来导入设计好的模板。

备选方案

  • Heat Dashboard 项目 [5] 采用拖放 UI 来生成 heat 模板,这对于用户来说非常高级和复杂。

  • 开源 MANO (OSM) 开发了一个 GUI [6],允许用户使用非常简单的 Web 表单生成 VNFD 和 NSD 模板(包)。

数据模型影响

在未来的工作中,我们可以使用 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>

工作项

  1. 构建一个新的 Horizon 面板,该面板插入到 NFV 仪表板

  2. 开发一组 Python 模块,提供以下功能

  • Django 表单,用于输入 Tacker 的 TOSCA 模板属性,

  • 导出到 yaml 文件,

  • 导入 yaml 文件并显示它们,

  • 将模板保存到 tacker-horizon 内部的草稿文件,

  • 从草稿文件中加载模板并显示它,

  • 删除现有的草稿,

  • 从草稿模板调用 tacker api 以 onboarding vnfd、vnffgd、nsd。

  1. 添加所有上述功能的单元测试用例

  2. 编写 Tacker Studio 的用户指南

依赖项

测试

需要开发一组新的单元测试用例来检查生成的模板是否具有正确的 TOSCA 格式和正确的语法。

文档影响

将添加 Tacker Studio 的新用户指南。

参考资料