跳转到: 导航, 搜索

Oslo


修订日期: 2021年6月16日,由 Bnemec 修改

OpenStack Project Oslo mascot.jpg

官方标题: OpenStack 常用库

PTL: Ben Nemec <openstack@nemebean.com>

使命宣言
旨在创建一个包含 OpenStack 项目共享代码的 Python 库集合。这些库提供的 API 应该具有高质量、稳定、一致、文档完善且普遍适用性。

Oslo 团队

Oslo 项目将通用代码审查员和专业 API 维护者聚集在一起。他们共同致力于解决 OpenStack 项目中重复代码带来的技术债务。

项目领导联络人

截至 Wallaby 周期,Oslo 项目已采用分布式领导模式。以下人员可以联系到与他们联络领域相关的问题。

项目领导联络人

联络人类型 IRC 昵称 姓名 电子邮件 时区
安全 bnemec Ben Nemec openstack@nemebean.com UTC-5
会议主席 hberaud Hervé Beraud hberaud@redhat.com UTC+1
发布 hberaud Hervé Beraud hberaud@redhat.com UTC+1
发布 damani
TaCT SIG moguimar Moisés Guimarães moguimar@redhat.com UTC+2
TaCT SIG sboyron Sébastien Boyron sboyron@redhat.com UTC+2

通用代码审查员

Oslo 的核心审查员 在项目中承担通用角色。他们是具有良好 Python 代码品味的专家,在审查中提供建设性意见,并花时间审查提交到项目的任何补丁,无论补丁针对的领域如何。

通用核心团队联系方式

IRC 昵称 姓名 电子邮件 时区
bnemec Ben Nemec openstack@nemebean.com UTC-5
stephenfin
hberaud Hervé Beraud hberaud@redhat.com UTC+2
smcginnis Sean McGinnis sean.mcginnis@gmail.com UTC-5
moguimar Moisés Guimarães moguimar@redhat.com UTC+2
kgiusti Ken Giusti kgiusti@gmail.com UTC-5

专业 API 维护者

每个 API 通常有一到多个专业维护者,他们负责演进所涉及的 API。他们致力于确保 API 满足所有 OpenStack 项目的需求,并且一旦 API 稳定且有用。每个库都有自己的核心团队,其中可能包括在该库领域具有专业知识但不是通用 Oslo 核心成员的专家。由于 Oslo 项目的范围已经变得非常大,这些特定于库的核心团队对于项目的长期健康至关重要,并且鼓励任何对库感兴趣的人参与其中。

专业核心团队联系方式

IRC 昵称 姓名 电子邮件 时区 项目
johnsom Michael Johnson johnsomor@gmail.com UTC-7 taskflow
zzzeek oslo.db
ttx oslo.rootwrap

招募中

多年来,Oslo 项目的贡献者来来去去。在某些情况下,这给我们留下了一些重要项目上的专业知识差距。非常欢迎对以下项目的新贡献者

  • oslo.privsep
  • oslo.service
  • taskflow

项目会议

请参阅 Meetings/Oslo

联系方式

我们使用 openstack-discuss@lists.openstack.org 邮件列表进行讨论,并且我们都在 OFTC 的 #openstack-oslo 和 #openstack-dev 中闲逛。将与 Oslo 相关的任何内容发送到邮件列表时,建议在主题中包含 [oslo] 标签,以便引起相关人员的注意。

每个项目还指定了一个联络人来处理集成问题。请参阅 Oslo/ProjectLiaisons

向后兼容性

在 Newton 峰会上,经过 10 名 Oslo 核心成员的投票,结果为 7 赞成、0 反对、3 弃权,Oslo 项目保持一个发布周期向后兼容性:最长 12 个月(从一个发布周期开始到下一个周期结束)。我们这样做是为了让 master 中的重要改进,即使不适合回移植到稳定分支,也能被部署者使用。例如,我们以这种方式修复了 oslo.messaging 中的 heartbeat,并且即将推出一个需要升级我们使用的不兼容版本的 kafka 支持更改:我们的用户不会受到影响,但直接使用 python-kafka 的人会受到影响,使其不适合稳定的回移植。

为了测试这一点,我们将实施 master oslo 更改的稳定作业(在 master oslo 上运行稳定的 devstack)以及稳定服务器更改的不稳定作业(使用最新版本的 oslo 运行服务器)。

我们不专门旨在支持单个 Python 环境中的部分混合升级(例如 Nova Mitaka + Neutron Newton):从 Oslo 方面来看,没有明显的障碍,但客户端库 Python API 兼容性不受 Oslo 策略的约束。

工作

这些作业的历史记录: https://etherpad.openstack.org/p/dims-periodic-jobs

周期性

Oslo (dvsm) 最新版本与 master 对比

Oslo 最新版本与(许多项目)master 对比

其他周期性作业: http://logs.openstack.org/periodic/

以下库当前由 Oslo 项目发布。如果我认为一个库具有在 OpenStack 之外广泛使用的真正潜力,我选择不将其包含在 oslo 命名空间中(即,不以 oslo 为前缀)。

新库需要小心避免引入循环依赖。请参阅 Oslo/Dependencies

专用库拥有自己的核心审查团队,其中成员可能不是 Oslo 主核心团队的一部分。除非另有说明,否则 Oslo 库由 oslo-core 维护。

automaton

摘要: 用于构建状态机的框架。

提案: 141961

源代码: http://git.openstack.org/cgit/openstack/automaton

错误: 请在 automaton 项目的 launchpad 中提交错误。

核心审查团队: oslo-core

文档: https://docs.openstack.org/developer/automaton/

castellan

摘要: OpenStack 的通用密钥管理接口。

提案: adopt-castellan

源代码: http://git.openstack.org/cgit/openstack/castellan

错误: 请在 castellan 项目的 launchpad 中提交错误。

核心审查团队: castellan-core

文档: https://docs.openstack.org/developer/castellan/

cookiecutter

摘要: 一个从一组模板创建 OpenStack 项目骨架的项目。

提案: 42530

源代码: http://git.openstack.org/cgit/openstack-dev/cookiecutter

错误: 请在 oslo 项目的 launchpad 中提交错误。

核心审查团队: oslo-core

文档:

debtcollector

摘要: 一系列 Python 模式,可帮助您以非破坏性方式收集技术债务(遵循弃用模式和策略等)。

提案: 141220

源代码: http://git.openstack.org/cgit/openstack/debtcollector

错误: 请在 debtcollector 项目的 launchpad 中提交错误。

核心审查团队: oslo-core

文档: https://docs.openstack.org/developer/debtcollector/

futurist

摘要: 包含异步功能和来自未来的添加内容的集合。

提案: 179890

源代码: http://git.openstack.org/cgit/openstack/futurist

错误: 请在 futurist 项目的 launchpad 中提交错误。

核心审查团队: oslo-core

文档: https://docs.openstack.org/developer/futurist/

mox3

摘要: mox 框架的非官方 Python 3 移植。

提案:

源代码: http://git.openstack.org/cgit/openstack/mox3

错误: 请在 mox3 项目的 launchpad 中提交错误。

核心审查团队: oslo-core

文档:

oslo-cookiecutter

摘要: 是一个从一组模板创建 Oslo 库骨架的项目。

提案:

源代码: http://git.openstack.org/cgit/openstack-dev/oslo-cookiecutter

错误: 请在 oslo-cookiecutter 项目的 launchpad 中提交错误。

核心审查团队: oslo-core

文档: ??

oslo.cache

摘要: 一个基于 dogpile 的缓存库。

提案:

源代码: http://git.openstack.org/cgit/openstack/oslo.cache

错误: 请在 oslo.cache 项目的 launchpad 中提交错误。

核心审查团队: oslo-core

文档: https://docs.openstack.org/developer/oslo.cache/

oslo.concurrency

摘要: 一个包含管理外部进程和任务同步的帮助程序的项目。

提案:

源代码: http://git.openstack.org/cgit/openstack/oslo.concurrency

错误: 请在 oslo.concurrency 项目的 launchpad 中提交错误。

核心审查团队: oslo-core

文档: https://docs.openstack.org/developer/oslo.concurrency/

oslo.config

摘要: 一个广泛的库,用于解析配置文件和命令行参数。

提案: 请参阅 此历史蓝图,其中描述了 API 的初始要求。

源代码: http://git.openstack.org/cgit/openstack/oslo.config

错误: 请在 oslo.config 项目的 launchpad 中提交错误。

核心审查团队: oslo-core

文档: https://docs.openstack.org/developer/oslo.config/

oslo.context

摘要: 一个包含维护有关请求上下文(即与请求关联的关联信息/数据)的有用帮助程序的项目。

提案: 请参阅 此历史蓝图,其中描述了 API 的初始要求。

源代码: http://git.openstack.org/cgit/openstack/oslo.context

缺陷:请在 launchpad 的 oslo.context 项目中提交缺陷。

核心审查团队: oslo-core

文档https://docs.openstack.org/developer/oslo.context/

oslo.db

概要:一个广泛的库,用于辅助数据库交互和/或处理。

提案:

源码http://git.openstack.org/cgit/openstack/oslo.db

缺陷:请在 launchpad 的 oslo.db 项目中提交缺陷。

核心评审团队oslo-db-core

文档https://docs.openstack.org/developer/oslo.db/

oslo.i18n

概要:围绕 Python 的 gettext 模块的一个封装库,用于字符串翻译和其他国际化特性。

提案:

源码http://git.openstack.org/cgit/openstack/oslo.i18n

缺陷:请在 launchpad 的 oslo.i18n 项目中提交缺陷。

核心审查团队: oslo-core

文档https://docs.openstack.org/developer/oslo.i18n/

oslo.log

概要:一个日志配置库。

提案:

源码http://git.openstack.org/cgit/openstack/oslo.logging

缺陷:请在 launchpad 的 oslo.log 项目中提交缺陷。

核心审查团队: oslo-core

文档https://docs.openstack.org/developer/oslo.log/

oslo.messaging

概要:一个提供消息 API 的库,支持通过多种不同的消息传输方式进行 RPC 和通知。

提案此 etherpad 记录了该项目的最新状态和背景。

源码http://git.openstack.org/cgit/openstack/oslo.messaging

Devstack 插件devstack-plugin-amqp1 devstack-plugin-kafka devstack-plugin-pika devstack-plugin-zmq

缺陷:请在 launchpad 的 oslo.messaging 项目中提交缺陷。

核心评审团队oslo-messaging-core

文档https://docs.openstack.org/developer/oslo.messaging/

oslo.middleware

概要:提供用于 Web 服务开发的 WSGI 中间件集合。

提案:

源码http://git.openstack.org/cgit/openstack/oslo.middleware

缺陷:请在 launchpad 的 oslo.middleware 项目中提交缺陷。

核心审查团队: oslo-core

文档https://docs.openstack.org/developer/oslo.middleware/

oslo.policy

概要:提供用于强制执行策略的规则引擎。

提案:

源码http://git.openstack.org/cgit/openstack/oslo.policy

缺陷:请在 launchpad 的 oslo.policy 项目中提交缺陷。

核心评审团队oslo-policy-core

文档https://docs.openstack.org/developer/oslo.policy/

oslo.privsep

概要:提供一种以提升权限的方式运行选定 Python 代码的机制。

提案204073

源码http://git.openstack.org/cgit/openstack/oslo.privsep

缺陷:请在 launchpad 的 oslo.privsep 项目中提交缺陷。

核心评审团队oslo-privsep-core

文档https://docs.openstack.org/developer/oslo.privsep/

oslo.reports

概要:允许项目生成 Guru Meditation 报告,用于调试 OpenStack 进程的当前状态。它还可以用于生成可序列化为纯文本、JSON 或 XML 的通用即时报告。

提案:

源码http://git.openstack.org/cgit/openstack/oslo.reports

缺陷:请在 launchpad 的 oslo.reports 项目中提交缺陷。

核心审查团队: oslo-core

文档https://docs.openstack.org/developer/oslo.reports/

oslo.rootwrap

已弃用(推荐使用 oslo.privsep)

概要:rootwrap 允许对从 OpenStack 服务运行的 shell 命令进行精细过滤。

提案:

源码http://git.openstack.org/cgit/openstack/oslo.rootwrap

缺陷:请在 launchpad 的 oslo.rootwrap 项目中提交缺陷。

核心评审团队oslo-rootwrap-core

文档https://docs.openstack.org/developer/oslo.rootwrap/

oslo.serialization

概要:是一个提供序列化功能的库,对 OpenStack 中常用的一些类型进行特殊处理。

提案:

源码http://git.openstack.org/cgit/openstack/oslo.serialization

缺陷:请在 launchpad 的 oslo.serialization 项目中提交缺陷。

核心审查团队: oslo-core

文档https://docs.openstack.org/developer/oslo.serialization/

oslo.service

概要:是一个辅助库,提供运行 OpenStack 服务的功能。

提案:

源码http://git.openstack.org/cgit/openstack/oslo.service

缺陷:请在 launchpad 的 oslo.service 项目中提交缺陷。

核心审查团队: oslo-core

文档https://docs.openstack.org/developer/oslo.service/

oslo.tools

概要:用于在 OpenStack oslo 社区中工作的工具。

提案:

源码http://git.openstack.org/cgit/openstack/oslo.tools

缺陷:无

核心审查团队: oslo-core

文档:

oslo.utils

概要:是一个辅助库,提供各种低级实用程序模块/代码(没有其他地方可以放置)。

提案:

源码http://git.openstack.org/cgit/openstack/oslo.utils

缺陷:请在 launchpad 的 oslo.utils 项目中提交缺陷。

核心审查团队: oslo-core

文档https://docs.openstack.org/developer/oslo.utils/

oslo.versionedobjects

概要:是一个帮助处理数据库模式与代码期望版本不同的库,允许服务在升级期间安全运行(等等)。

提案127532

源码http://git.openstack.org/cgit/openstack/oslo.versionedobjects

缺陷:请在 launchpad 的 oslo.versionedobjects 项目中提交缺陷。

核心审查团队: oslo-core

文档https://docs.openstack.org/developer/oslo.versionedobjects/

oslo.version

!!已停用!!

概要:是一个辅助库,提供从 Python 元数据中获取已安装软件版本的功能。

提案40498

源码http://git.openstack.org/cgit/openstack/oslo.version

错误: 请在 oslo 项目的 launchpad 中提交错误。

核心审查团队: oslo-core

文档: ??

oslo.vmware

概要:为 VMware 驱动程序在多个项目中通用的代码提供共享位置。

提案:

源码http://git.openstack.org/cgit/openstack/oslo.vmware

缺陷:请在 launchpad 的 oslo.vmware 项目中提交缺陷。

核心评审团队oslo-vmware-core

文档https://docs.openstack.org/developer/oslo.vmware/

oslosphinx

概要:是一个 Sphinx 插件库,为 OpenStack 项目的 Sphinx 文档提供主题和扩展支持。

提案:

源码http://git.openstack.org/cgit/openstack/oslosphinx

缺陷:请在 launchpad 的 oslosphinx 项目中提交缺陷。

核心审查团队: oslo-core

文档https://docs.openstack.org/developer/oslosphinx/

oslotest

概要:是一个辅助库,提供用于创建单元和功能测试的基础类和固定装置。

提案:

源码http://git.openstack.org/cgit/openstack/oslotest

缺陷:请在 launchpad 的 oslotest 项目中提交缺陷。

核心审查团队: oslo-core

文档https://docs.openstack.org/developer/oslotest/

osprofiler

概要:一个 OpenStack 跨项目分析库。

提案103825

源码http://git.openstack.org/cgit/openstack/osprofiler

缺陷:请在 launchpad 的 osprofiler 项目中提交缺陷。

核心评审团队osprofiler-core

文档https://docs.openstack.org/developer/osprofiler

pbr

概要:pbr(或 Python Build Reasonableness)是一个插件库,有助于提供(和强制执行)一组合理的 setuptools 行为。

提案:

源码http://git.openstack.org/cgit/openstack-dev/pbr

缺陷:请在 launchpad 的 pbr 项目中提交缺陷。

核心评审团队pbr-core

文档https://docs.openstack.org/developer/pbr/

pylockfile

已弃用

概要:遗留的(且已采用的)进程间锁管理库。

提案102202

源码http://git.openstack.org/cgit/openstack/pylockfile

缺陷:请在 launchpad 的 pylockfile 项目中提交缺陷。

核心审查团队: oslo-core

文档https://docs.openstack.org/developer/pylockfile/

stevedore

概要:一个用于管理 Python 应用程序插件的库。

提案:

源码http://git.openstack.org/cgit/openstack/stevedore

缺陷:请在 launchpad 的 python-stevedore 项目中提交缺陷。

核心评审团队stevedore-core

文档https://docs.openstack.org/developer/stevedore/

taskflow

概要:一个帮助创建能够处理状态/故障... 以合理方式的应用程序的库。

提案:

源码http://git.openstack.org/cgit/openstack/taskflow

缺陷:请在 launchpad 的 taskflow 项目中提交缺陷。

核心评审团队taskflow-core

文档https://docs.openstack.org/developer/taskflow/

tooz

概要:一个旨在集中处理分布式常见原语(如组 membership 协议、锁服务和领导者选举)的库,通过提供协调 API 帮助开发人员构建分布式应用程序。

提案122439

源码http://git.openstack.org/cgit/openstack/tooz

缺陷:请在 launchpad 的 python-tooz 项目中提交缺陷。

核心评审团队tooz-core

文档https://docs.openstack.org/developer/tooz/

原则

包含在 Oslo 中的 API 应反映项目对该用例的要求和设计的粗略共识。新的 OpenStack 项目可以使用 Oslo API,确信通过这样做,该项目正在成为一个良好的 OpenStack 公民,并建立在既定的最佳实践之上。

为此,我们在设计和演进 Oslo API 时会牢记一些原则

  1. API 应该具有通用性,并且“适合”——例如,它不应编码源自其原始项目的任何特定假设,它应遵循与其他 Oslo API 一致的风格,并且应适合于错误处理、配置选项、时间和日期、通知、WSGI 等主题。
  2. API 应该已经被多个 OpenStack 项目使用
  3. 应该承诺在所有其他 OpenStack 项目(在适当的情况下)中采用该 API,并且不应存在任何已知的阻止该采用的主要障碍
  4. API 应代表 OpenStack 项目的“粗略共识”
  5. 不应有其他 API 在 OpenStack 中与此“粗略共识”竞争
  6. 应该能够在保持与旧版本的向后兼容性的合理时间内演进 API——例如,在发布 N 中已弃用的 API 的兼容性可能仅在发布 N+2 中删除

孵化

Oslo Incubator 已经停止维护。请参考 公告清除仓库的变更

常见问题解答

为什么 oslo.config 的 alpha 版本没有发布到 PyPI?

请参阅 选择版本号,了解与版本控制和发布相关的当前策略。

为什么 oslo.config 有一个 CONF 对象?全局对象太糟糕了!

确实如此。好吧,这是一个漫长的故事,并且在邮件列表存档中有充分的记录,如果有人想挖掘链接的话。

在 Folsom 设计峰会期间,曾尝试移除对像这样全局对象的依赖。经过激烈的辩论,最终达成共识,坚持使用这种方法。

Nova 通过使用 gflags 库,从 提交零 开始就使用了这种方法。一些 OpenStack 项目最初没有使用这种方法,但现在大多数都使用了。 想法是,所有项目使用相同的方法比对该方法的反对意见更重要。项目之间共享代码很好,但通过同时让项目使用相同的惯用语来处理这些事情,可以更容易地让人们在多个项目上工作。

这场辩论可能永远不会完全结束。请参阅 2014 年 8 月的最新讨论

为什么 Oslo 遵守功能冻结?

功能冻结是稳定开发周期中添加的所有新功能的时间,但由于 Oslo 项目不一定与 OpenStack 的其他项目(或者对于 oslo-incubator 而言,根本不)以相同的六个月时间表发布,因此 Oslo 遵守功能冻结可能看起来很奇怪。

对于已毕业的库,这与任何其他项目一样,其目的是专注于错误修复和稳定性。

对于 oslo-incubator,主要动机是使其他项目更容易同步最后一刻的修复。 如果 oslo-incubator 中着陆了一个新功能,而使用项目之一发现了相关的错误,那么将该错误修复同步到该项目将成为一个问题。 当需要最后一刻的错误修复时,最好使同步尽可能简单和最小。 为了避免问题,oslo-incubator 尊重功能冻结期,就像任何其他项目一样。

Oslo 如何管理版本?

请参阅 Oslo/VersioningPolicy

资源

评审策略

这些覆盖了 OpenStack 整体的常规评审规则。

  • 自动化变更 - 通过 CI 检查的 'openstack proposal bot' 和 'transifex' 的补丁可以由单个核心评审员 +2+A

审查链接

(请参阅 http://git.openstack.org/cgit/openstack/oslo.tools/tree/dashboards 获取创建这些链接的源文件)

安全团队

除了 OpenStack 的漏洞管理团队之外,Oslo 团队的一些成员表示愿意帮助解决 Oslo 代码中的安全相关问题。 请参阅 Oslo/Security 获取当前列表。

设计提案

我们使用 oslo-specs 仓库 来跟踪所有 Oslo 项目的设计提案。

请参阅 规范审批策略 以获取详细信息。

在 launchpad 上的 蓝图 详细说明了当前正在实施这些规范的变更。

已批准的 规范 分别发布。

发布说明

Oslo/ReleaseProcess

峰会

Pike

Ocata

Newton

Mitaka

Liberty

Kilo

Juno

Juno Etherpads

Icehouse Etherpads

来自 Icehouse 设计峰会会议的 etherpads。

Havana 中的消息相关工作

在 Havana 周期中,正在进行 重新设计我们的消息 API为我们的消息添加签名和加密 的工作。

请参阅 此 etherpad 以获取更多详细信息。

Havana Etherpads

来自 Havana 设计峰会会议的 etherpads。

Grizzly Etherpads

来自 Grizzly 设计峰会会议的 etherpads。

Folsom Etherpads

来自 Folsom 设计峰会会议的 etherpads。