Ironic/开发者指南
< Ironic
目录
开发者指南
开发者文档 提供了一个良好的起点。 这提供了进行开发的一些通用指南。
异常
通常情况下,ironic 应该只抛出 ironic 异常。 特别是
- 驱动程序应该处理(非 ironic 异常)并且只让 ironic 异常被抛出
- 内部方法不需要文档字符串(尽管 rloo 喜欢它们)
- 公共方法需要有文档字符串,并且包含所有已知该方法(或该方法调用的任何方法)可能抛出的异常的“:raises:”。
向后兼容性
我们需要确保我们不会无意中破坏向后兼容性。
这方面很重要的地方
- REST API。 客户端的先前版本不应因 API 的相同主要版本(例如 /v1/)的更改而严重损坏。 这即使在微版本中也是如此。
- 驱动程序 API。 我们鼓励使用树外驱动程序。 对在 /ironic/drivers/base.py 中定义的驱动程序 api 的任何更改都必须向后兼容。 重大的更改可以通过弃用周期来处理。
需要注意的一些事项
- 异常名称。 如果你想更改异常类的名称,请为原始名称添加一个别名。 提交应该有一个 DocImpact 标记,其中包含对已弃用内容、何时删除以及使用什么(如果有)的描述。
弃用
Ironic 遵循 OpenStack 的 标准弃用流程。 如果某些内容将被弃用,我们需要
- 通过电子邮件告知 Ironic 社区它已被弃用以及何时删除
- 在弃用期间,如果合理,我们应该警告和/或记录对已弃用内容的所有使用
- 弃用和删除之间应至少提供一个发布周期,并且必须经过至少 3 个月
- 删除后,通过电子邮件告知 Ironic 社区
Tempest 测试
[Tempest] 测试是黑盒功能测试。 [Ironic 使用 tempest] 进行 API 和功能测试。
如果你的更改包含重要的 API 可见功能,应该有相应的 tempest 测试覆盖。 例如,nova.virt.ironic 驱动程序所做的一切。 负责代码更改的开发人员也负责确保有 tempest 测试覆盖。 (开发人员不必进行 tempest 测试更改;他们可以与其他开发人员合作来帮助编写 tempest 测试。)
Tempest 通过 devstack 运行,其中克隆了 Ironic 的最新 master 分支,然后对其运行测试。 因此,更改必须在 Ironic 中才能通过 tempest 测试。 建议的流程是
- 代码更改准备好进行审查
- 相应的 tempest 更改准备好进行审查
- 如果没有相应的 tempest 更改,代码更改可能会被阻止批准
- 在代码更改合并后,将合并 tempest 更改。 如果 tempest 测试失败,我们都会尖叫。
文档
图表
- 对于规范,使用 http://asciiflow.com,所以我们决定也将其用于我们的 ironic 文档
自动化 CI 测试
*重新检查*失败的 CI 测试
- 检查从 CI 测试上传的日志,看看问题是否与你的更改有关。
- 如果你认为没有,请在 http://status.openstack.org/elastic-recheck/ 中检查问题是否之前已经报告过
- 如果你发现这是一个已知问题,请在 gerrit 审查中发布评论“recheck bug <bug#>”,其中 <bug#> 是错误的数字标识符。 例如“recheck bug 1408067”。 这也有助于跟踪一天内相同问题被击中的次数。
- 如果你找不到 bug #,你有以下选项
- 阅读 https://docs.openstack.org/infra/elastic-recheck/readme.html#adding-bug-signatures 并尝试找到与它相关的 bug #。
- 在 #openstack-ironic IRC 中查看是否有人了解此问题
- 最后,在 gerrit 上发布带有“recheck”的评论。