Vitrage 模板验证 API

https://blueprints.launchpad.net/vitrage/+spec/template-validate-api

用于验证模板的 API

问题描述

我们希望能够在将模板上传到 Vitrage 之前,通过 API 验证单个模板(或多个模板)。

提议的变更

创建 API 以验证 Vitrage 模板的内容和语法。

  1. 通过提供模板文件的完整路径,验证单个模板。

  2. 通过提供目录的完整路径,验证其中的所有模板文件。

模板验证 API 返回一个包含以下字段的结果

  1. status - 验证成功/失败

  2. file path - 模板文件的完整路径

  3. description

  4. message - 错误消息

  5. 状态码

REST API 影响

模板验证

验证 Vitrage 模板

POST /

头部

  • X-Auth-Token (字符串, 必需) - Keystone 认证令牌

  • Accept (字符串) - application/json

  • User-Agent (字符串)

  • Content-Type (字符串): application/json

路径参数

无。

查询参数

  • path (字符串(255), 必需) - 模板文件或目录的路径

请求体

无。

请求示例

POST /v1/template/?path=[file/dir path]
Host: 135.248.18.122:8999
User-Agent: keystoneauth1/2.3.0 python-requests/2.9.1 CPython/2.7.6
Content-Type: application/json
Accept: application/json
X-Auth-Token: 2b8882ba2ec44295bf300aecb2caa4f7
响应

状态码

  • 200 - 确定

  • 400 - 请求错误

响应体

返回一个 JSON 对象,该对象是一个结果列表。每个结果描述了单个模板文件的完整验证(语法和内容)。

响应示例

{
  "results": [
    {
      "status": "validation failed",
      "file path": "/tmp/templates/basic_no_meta.yaml",
      "description": "Template syntax validation",
      "message": "metadata is a mandatory section.",
      "status code": 62
    },
    {
      "status": "validation OK",
      "file path": "/tmp/templates/basic.yaml",
      "description": "Template validation",
      "message": "Template validation is OK",
      "status code": 4
    }
  ]
}

实现

负责人

liat har-tal <liat.har-tal@nokia.com>

依赖项

依赖于模板验证蓝图

测试

还需要添加 Tempest 测试来测试

  1. 验证单个模板

  2. 验证多个模板

文档影响

新的 api 应该被记录

参考资料