策略示例文件生成

https://blueprints.launchpad.net/oslo?searchtext=policy-sample-generation

对于部署者来说,拥有一个概述所有可用选项的示例配置文件很有用,但让项目尝试保持该示例文件最新却是一项负担。 最好以与配置选项相同的方式,从项目中注册的策略中生成该文件。

问题描述

提供示例策略文件的项目需要手动将其与代码中检查的内容保持同步。 在实践中,它通常会过时。 如果所有使用的策略都已经注册在代码中,那么应该生成该示例文件。

提议的变更

该提案是在 oslo.policy 中添加一些辅助工具。 这些工具旨在帮助部署者维护和修剪他们的策略文件。

  1. 一个类似于 oslo.config 中 oslo-config-generator 的 oslo-policy-sample-generator。 将在 oslo.policy 中添加一个控制台脚本 ‘oslo-policy-sample-generator’。 该脚本将查看 oslo.policy.policies 入口点中的命名空间,并从中加载 oslo_policy.policy.RuleDefault 对象列表。 示例文件将从此列表生成。 RuleDefault 对象可能包含一个描述字符串,该字符串将作为注释包含在内。 输出将采用 yaml 格式,因为它包含注释。

  2. 一种生成包含有效配置策略的策略文件的方法。 这将合并策略文件中定义的规则与注册的默认规则,并输出包含结果的完整策略文件。 通过引用此文件,部署者可以确切地知道如何设置规则。

  3. 一种检索从策略文件中加载的与默认注册规则匹配的策略列表的方法。 这些策略不必包含在策略文件中,因此此输出将帮助部署者修剪文件覆盖。

  4. 一种生成策略文件的 yaml 版本的方法。 这将读取当前的策略文件,并输出这些规则的 yaml 版本。 这可用于将 json 格式的策略文件转换为 yaml 格式。 必须注意的是,规则不会排序,因此输出可能无法直接与上述 #1 或 #2 的输出进行差异比较。

要更改的文件

  • oslo_policy/generator.py (新文件)

  • setup.cfg (注册一个入口点)

备选方案

策略示例文件可以继续手动维护。

Impact on Existing APIs

将在 setup.cfg 中注册一个新的“oslo-policy-sample-generator”控制台脚本。 这不会影响现有的 API,纯粹是添加功能。

安全影响

性能影响

无。 这项工作是在服务运行和提供请求之外完成的。

Configuration Impact

可以生成示例 policy.yaml 文件。 这不会影响任何当前配置,它是一个帮助那些希望配置其策略的人的工具。

开发人员影响

希望利用此功能的项目需要在示例文件中注册所有策略检查。 开发人员应为现有的策略检查添加此注册,并在添加新策略检查时注册它们。

Testing Impact

这里没有直接的测试影响。 但是,这使得其他项目可以拥有一个测试作业,以确保可以生成示例文件。 如何完成此操作的详细信息将在本次更改中记录。

实现

负责人

主要负责人

alaski

其他贡献者

里程碑

完成目标里程碑

newton-1

工作项

  • 添加一个基于 oslo.config 的 oslo_policy/generator.py。

  • 添加策略示例文件生成。

  • 添加有效策略生成。

  • 添加确定策略文件中默认规则定义的方法。

  • 添加从当前策略文件生成 yaml 策略文件。

  • 在 oslo.policy setup.cfg 中添加一个入口点以创建控制台脚本。

  • 记录消费项目如何配置自身以使用文件生成功能,或设置用于测试的 tox 目标。

孵化

N/A

采用

Nova 希望使用此功能

N/A

预计 API 稳定

N/A

文档影响

策略文件生成的能力将在面向开发者的文档中记录。 任何面向部署者的更改将由消费项目负责记录,因为它们切换到使用策略注册。

依赖项

‘policy-in-code’ 规范。

参考资料

注意

本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode