OpenStack API 文档

developer.openstack.org 的源文件

developer.openstack.org 网站旨在供使用 OpenStack API 构建应用程序的开发者使用。它包含指向特定编程语言的多个 SDK 的链接。API 参考和 API 指南存储在 docs.openstack.org 上。developer.openstack.org docs.openstack.org

对于现有的 API,参考信息来自 RST 和 YAML 源文件。RST 和 YAML 文件存储在您的项目仓库中的 api-ref 目录中。nova 项目提供了一个您可以遵循的示例,包括运行 api-ref 目录中的 tox -e api-ref 的 tox 作业来生成文档。

RST 概念和操作指南文件存储在每个项目的 doc/source/api-guide 目录中。这些构建到基于服务名称的位置,例如 Compute API 指南 https://docs.openstack.org/api-guide/compute

如果您希望生成参考信息,可以在源代码中嵌入注释。这里有一个 nova 项目的示例补丁 https://review.opendev.org/#/c/233446/。由于没有项目具有完整的注释,因此没有针对此场景的构建作业。

OpenStack 中 API 参考的标准

API 工作组制定了 API 文档指南,所有在 OpenStack 中提供 REST API 服务的团队都努力遵循。本文档告诉您应该编写什么以及编写多少。如果您遵循建议的提纲,您的 API 指南将准确完整。

如果您的项目没有任何文档,您可以在 API 文档指南中找到建议的提纲。Compute 项目提供了一些可以遵循的示例

对于服务名称,您必须遵守治理仓库中 reference/projects.yaml 文件中指示的服务的官方名称。这些名称用于文档的 URL,通过在 api-ref-jobs 指示符中说明内容的 target 目录来使用。如果您的服务在治理仓库中没有名称,请咨询您的 PTL 或技术委员会成员以了解如何进行。

API 参考信息的版本和发布

所有 API 参考作业都会从 master 发布,只要更改降落在各自的项目仓库中。这种发布实践意味着,当 API 发生版本间更改时,您必须编写内联信息。内联文本描述是向文档使用者传达相应发布信息的唯一方法。

与提供 API 的 OpenStack 服务相关联的不同类型的版本。例如,服务的版本与该服务提供的 API 的版本是分开的。此外,微版本 https://docs.openstack.org/api-guide/compute/microversions.html 是对单个 API 方法的小型、文档化的更改,仅适用于某些 OpenStack API,如 API 快速入门页面 https://docs.openstack.org/api-quick-start/ 中所示。

OpenStack Compute 服务版本的示例表示

  • Header 版本:OpenStack-API-Version: compute 2.1

  • 服务版本(发布名称):15.0 (Newton)

  • URI 版本:https://servers.api.openstack.org/v2.1/

  • MIME 类型版本:application/vnd.openstack.compute.v2.1+json

  • 微版本:2.6

遵循 cycle-with-milestones 发布模型的每个项目都具有包含特定时间点的 API 参考内容的稳定分支。如果需要,请参考该源仓库的内容以进行 API 参考信息的发布比较。

如何记录您的 OpenStack API 服务

如果您当前没有任何文档,或者希望将其更新为符合 OpenStack 标准,请使用以下说明。

基本步骤是

  1. 在您的项目仓库中创建一个 api-ref/source 目录。

  2. 创建一个 conf.py 文件,用于项目,类似于 nova 示例 https://github.com/openstack/nova/blob/2025.2/api-ref/source/conf.py。在其中,包括 html 主题、openstackdocstheme,使用 os-api-ref Sphinx 扩展,并将错误报告链接指向您的项目仓库

    extensions = [
        'os_api_ref',
        'openstackdocstheme'
    ]
    
    # The prefix and repo name like
    repository_name = 'openstack/glance'
    # Set Launchpad bug tag, default is empty
    bug_tag = ''
    # The launchpad project name like
    bug_project = 'glance'
    
    html_theme = 'openstackdocs'
    html_theme_options = {
        "sidebar_mode": "toc",
    }
    
  3. 使用 os-api-ref Sphinx 扩展更新项目的 test-requirements.txt 文件

    os-api-ref>=1.0.0 # Apache-2.0
    
  4. 为每个操作创建 RST 文件。

  5. 在 RST 文件中,对每个操作使用 .. rest_method::。

    示例:.. rest_method:: GET /v2.1/{tenant_id}/flavors

  6. 在 RST 文件中,添加指向 parameters.yaml 文件的请求和响应

    .. rest_parameters:: parameters.yaml
    
       - tenant_id: tenant_id
    

    这里是 parameters.yaml 中的一个示例条目

    admin_tenant_id:
      description: |
        The UUID of the administrative project.
      in: path
      required: true
      type: string
    
  7. 创建示例 JSON 请求和响应并将其存储在目录中,并在 RST 文件中指向它们。例如

    .. literalinclude:: samples/os-evacuate/server-evacuate-resp.json
       :language: javascript
    
  8. 更新项目的 tox.ini 文件以包含使用以下行在本地构建 API 参考的配置

    [testenv:api-ref]
    # This environment is called from CI scripts to test and publish
    # the API Ref to docs.openstack.org.
    whitelist_externals = rm
    commands =
      rm -rf api-ref/build
      sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html
    
  9. 通过运行此 tox 命令来测试 tox.ini 更改

    $ tox -e api-ref
    
  10. 将 api-ref-jobs 模板添加到您的项目中,修补存储在 openstack/project-config 仓库中的 zuul.d/projects.yaml 文件 https://opendev.org/openstack/project-config/src/branch/2025.2/zuul.d/projects.yaml

在源文件和构建作业存在之后,文档将构建到 docs.openstack.org。

如果您的文档完全是新的,您需要从 API 登录页面和 OpenStack 治理参考文档 projects.yaml 添加指向它的链接。

要将链接添加到项目的 API 文档到 API 登录页面,请修补存储在 openstack/api-site 仓库中的 index.rst 文件 https://opendev.org/openstack/api-site/src/branch/2025.2/api-quick-start/source/index.rst

为了确保 openstack/governance 仓库具有指向您的 API 文档的正确链接,请修补存储在 openstack/governance 仓库中的 reference/projects.yaml 文件 https://opendev.org/openstack/governance/src/branch/2025.2/reference/projects.yaml