跳转到: 导航, 搜索

Cinder/如何贡献驱动程序

如何向 Cinder 贡献驱动程序

当前开发周期的截止日期

新后端驱动程序的截止日期是当前开发周期的里程碑 2在此截止日期之前,您的驱动程序应具有可用的第三方 CI,并且没有代码审查问题。 您可以在当前发布计划中找到里程碑 2 的日期。(选择“系列”名称的链接,页面顶部将有一个指向发布计划的链接。)如果您正在为下一个周期工作,并且尚未发布计划,您可以查看以前的发布计划以获得大致的了解。

为了明确起见,当驱动程序引入新的协议时,补丁也被视为新的驱动程序。例如,如果您的驱动程序支持 iSCSI,但您的补丁提出了对 FibreChannel 的支持,那么这是一个新的驱动程序补丁。

关于 Cinder 驱动程序的一切

请参阅 关于 Cinder 驱动程序的一切,以获取有关驱动程序的常规信息,包括“支持”与“不支持”驱动程序以及驱动程序合规性的讨论。

第三方 CI 要求策略

请参阅 第三方 CI wiki。

对于正在努力使其 CI 处理 Python 3 的人,请参阅 Cinder 第三方 CI 更新到 Python 3.7

在编写任何代码之前

  • 了解 Cinder 的工作原理、用途,以及 OpenStack 中的其他项目可能使用或不使用它的原因。完全理解 Nova 侧的临时存储与 Cinder 提供的持久存储之间的区别
  • Cinder 提供了一个参考实现,应将其用作模型。参考实现驱动程序文件是 cinder/volume/drivers/lvm.py,不要与 cinder/volume/driver.py 混淆,后者是所有驱动程序继承的基础类。请注意,那里有很多关于 iSCSI 目标等的选项,但这让您了解了对已实现的功能的期望以及一些行为。我强烈建议您启动 devstack(您无论如何都需要它来测试您的驱动程序)并试用默认的 LVM。在深入研究之前,了解 Cinder 的工作方式以及它如何与其他 OpenStack 项目交互非常重要。
  • 您必须在 Blueprints 中提交一个蓝图到 Launchpad,介绍您的驱动程序,以便将其定位到发布版本,并优先获得代码审查。 这也将使您贡献驱动程序的努力在 Cinder 社区中获得一些可见性。 立即执行此操作,以免日后出现任何意外情况。 大多数驱动程序不需要 cinder spec。(如果由于某种原因需要规范,我们会通知您。)
  • 我们有 OFTC 上的开发频道:#openstack-cinder。这里有全天候的开发人员,对于您入门来说,这是一个很好的资源。登录,提问,不要孤立地盯着代码看一个星期……如果您遇到问题,请直接提问。 也不需要从“我可以问一个问题吗……”开始……您可能得不到回复。 直接输入您的问题,这样任何监控频道并可能知道答案的人都可以介入回答。

编写代码

  • 您的驱动程序不得进行任何状态更改。(例如,对 Cinder 数据库进行调用)。卷管理器负责在驱动程序与存储后端对话完成后进行状态更改。 您的驱动程序应尽可能避免从数据库读取。
  • 需要对新代码进行单元测试。
  • 确保您没有复制已存在的配置选项。 要验证此操作,您需要查看 cinder/etc/cinder.conf.sample 文件
    • 应尽一切努力重用常见的配置选项,然后再引入特定于驱动程序的选项。
    • 如果添加了选项,您需要运行“tox -e genopts”来更新用于生成我们的配置引用的 opts.py 文件。
  • 请务必遵循 OpenStack 风格指南。 否则,您很可能会收到吹毛求疵的审查,这两种方式都不高效。
  • Cinder 的 管理器层将记录有用的信息,例如驱动程序引发的故障。 但是,您可以添加其他日志记录,但请遵循我们的 日志记录指南。(注意:为了帮助使用公共互联网搜索引擎的运营商解决问题,日志消息不再被翻译。)
  • 密码学
    • 驱动程序不得将 md5 用于任何与安全性相关目的。(实际上,驱动程序应避免使用它,因为某些安全审核仅允许对 md5 使用“是/否”复选框……但这取决于供应商。)
    • 驱动程序执行的任何密码术都应通过使用受人尊敬的密码库来实现。在任何情况下,驱动程序都不应实现自己的密码函数。

提交驱动程序进行审查

提交驱动程序时,请务必附带一个发布说明。 请参阅 Reno 文档,了解如何生成新的发布说明的详细信息。

发布说明应如下所示

---
features:
 - Added backend driver for vendor storage.
  • 所有新代码必须仅为 Python 3。 单元测试将使用当前周期的所有受支持的运行时运行,但应执行其他运行时测试。 检查 受支持的运行时 以获取当前周期。
    • 对于 Yoga 周期:python 3.8 和 python 3.9
  • 不要打扰 Cinder 团队进行审查。 我们知道您发布了补丁。
  • 文档现在保存在 openstack/cinder 仓库中。 至少,请在 卷驱动程序部分的配置参考中添加有关您的驱动程序及其配置选项的基本描述。

驱动程序添加后

恭喜! 但您还没有完成。 在您的驱动程序合并后,仍然需要做一些事情。

  • 确保为您的驱动程序提供文档,以便操作员知道如何配置它
    • 文档存储在您提交驱动程序代码的同一个仓库中
    • 文件位于 cinder/doc/source/configuration/block-storage/drivers
    • 查看该目录中的其他文件,以了解预期的内容
      • 注意:对于备份驱动程序,您的文档位于 cinder/doc/source/configuration/block-storage/backup
  • 使用适当的信息更新 cinder/doc/source/reference/support-matrix.ini
  • 继续在 IRC 上可用并参加每周会议,以防出现问题。
  • 订阅以接收与您的驱动程序相关的错误! Cinder 团队将对错误进行分类,并使用与您的驱动程序相关的公司名称标记错误。 要订阅
    • 转到 https://bugs.launchpad.net/openstack/cinder/+bug
    • 单击“订阅错误邮件”
    • 单击单选按钮“被添加和更改的任何方式”
    • 单击复选框“错误必须匹配此过滤器(...)”
    • 单击标签
    • 在“匹配所有标签”被选中时,在字段中输入您的公司名称。