Heat 模板验证改进¶
https://blueprints.launchpad.net/heat/+spec/heat-template-validate-improvements
改进模板特征的验证,使其更简单和可定制。
问题描述¶
Heat 中的模板验证需要改进,原因如下
1. Heat 在第一次出现错误时会中止模板验证。这使得用户需要验证模板并采用试错方法,可能需要多次迭代。
2. Heat 不会报告发生错误的行号。有时,这给用户定位问题带来困难,尤其是在大型模板中。
3. 当 Heat 云中缺少相应的服务时,Heat 会中止模板验证。因此,模板设计者/架构师需要安装 Heat 云中的所有必需服务才能进行验证,即使他们的意图是创建有效的模板。
4. 有时用户只想验证模板的结构,而无需考虑属性中使用的值。这将帮助用户创建“正确的模板”。
5. 当用户使用已弃用的功能时,没有提供推荐使用替代新功能的选项。
提议的变更¶
这些问题或改进可以如下实现
验证模板并报告模板中的所有警告和错误,而不是在第一个错误时失败。输出将提供带有“errors”(错误)和“warnings”(警告)的新部分,以列表形式提供如下所示。并提供一个在出错时继续的选项如下。如果省略 ignore-errors 选项,则将忽略所有错误,否则,它将仅忽略指定的错误列表。这将解决上述第一和第三个问题。
template-validate --ignore-errors
errors:
- 10 ERR100 some error occurred.
warnings:
- 10 WARN100 some warning occurred.
以“<行号> [ERRxxx|WARNxxx] <错误标题>”的形式提供报告的警告或错误的行号。这里,错误是指验证错误,警告是指弃用详情,以及希望为资源中的给定属性提供的任何推荐资源。这将解决上述第二个问题。
提供一个选项,仅验证模板的结构,忽略值的验证。这将帮助用户识别模板结构中的问题。可以如下所示,这将解决上述第四个问题
template-validate --only-schematics
默认情况下,将所有弃用警告作为验证的一部分报告。如果用户想忽略某些警告,提供一个类似于 ignore-errors 的选项如下。如果没有提供警告,则将报告所有警告,否则,将仅忽略给定的警告。这将解决第五个问题。
template-validate --ignore-warnings
备选方案¶
无
实现¶
负责人¶
主要负责人
kanagaraj-manickam ishant-tyagi
里程碑¶
- 完成目标里程碑
mitaka-1
工作项¶
使用适当的错误代码(如“HExxx”)标记用户可见的 HeatException
改进 heat.engine.service 模块中的 validate_template() 方法,以捕获所有错误和警告,例如弃用。
- 在报告时,如果这些错误中的一些是 ignore-errors 列表的一部分,
可以从输出响应中删除它们。
- 如果未提供 report-deprecated 选项,则从输出响应中忽略这些弃用
警告。
改进 validate_template() 方法,以根据所需的输出(如参数、参数组、描述和资源)验证模板。优化时,应使用 preview_stack() 方法代替资源输出
改进 validate_template() 方法,以避免在提供 only-schematics 选项时进行约束验证。
改进 cli 以解析响应,并以 yaml 或 json 的适当格式打印输出。
添加所需的测试用例
依赖项¶
无