主要维护者¶
主要维护者
Harlowja(直到另行通知)。
其他贡献者
Praneshp (@yahoo)
你?
https://blueprints.launchpad.net/oslo.utils/+spec/adopt-automaton
这个库的目标是提供一个文档完善的状态机类/工具,从一个基本集合开始,并随着时间的推移扩展到更大的集合。状态机模式(或其实现的变体)是一种常用模式,具有多种不同的用途。
当前的一些用途(正在积极推进中)
这个库的代码是从 taskflow 提取的,并被复制到 ironic 中,并且似乎是该项目状态工作的一个关键部分,现在在那里发挥着有用的作用;因此,我认为 API 大部分是稳定的(ironic 目前未使用 FSM 运行器属性,而 taskflow 会/正在使用)。该代码/迷你库最近被拆分为 https://github.com/harlowja/automaton,在那里进行了开发和隔离(例如,提取了测试,添加了 setup.py 并集成了 pbr…),并且有 travis-ci 针对其进行测试集成(这不再需要,因为 openstackci 具有类似/等效的功能)。
automaton
automaton/__init__.py
automaton/exceptions.py
automaton/machines.py
这是主文件,包含有限状态机和分层状态机以及相关的运行类,可用于运行状态机直到终止;这些运行器的使用是可选的,不需要使用这些机器进行状态和转换处理和/或验证。
对于那些想知道分层状态机是什么的人,可以参考以下内容(概念与以下幻灯片组中描述的类似)。
Taskflow
Ironic
其他人?
目前机器的公共 API 是以下
FiniteMachine
- runner (read-only property)
- default_start_state (read/write property)
- current_state (read-only property)
- terminated (read-only property)
- add_state(state, terminal=False, on_enter=None, on_exit=None)
- add_reaction(state, event, reaction, *args, **kwargs)
- add_transition(start, end, event)
- process_event(event) -- main function/method!!
- initialize(start_state=None)
- copy(shallow=False, unfreeze=False)
- freeze()
- frozen (read/write property)
- states (read-only property)
- events (read-only property)
- pformat(sort=True, empty='.')
HierarchicalFiniteMachine(FiniteMachine)
- runner (read-only property)
- add_state(state, terminal=False,
on_enter=None, on_exit=None, machine=None)
每个状态机的运行器具有以下公共 API
run(event, initialize=True)
run_iter(event, initialize=True)
更详细的 API 文档(可能更易读且注释更好)可以在以下找到
https://github.com/harlowja/automaton
或者从 live taskflow 文档(使用机器的较旧版本,缺少一些 API 调整;但没有重大变化)
https://docs.openstack.org/developer/taskflow/types.html#module-taskflow.types.fsm
主要负责人
Harlowja
其他贡献者
你?
主要维护者
Harlowja(直到另行通知)。
其他贡献者
Praneshp (@yahoo)
你?
安全联系人:harlowja
完成目标里程碑:liberty-1
创建 Launchpad 项目
更改 Launchpad 项目的所有者(使其成为 Oslo 项目组的一部分)
授予 openstackci 在 PyPI 上的 Owner 权限
创建初始仓库
让库做一些事情
更新 README.rst
发布 git 仓库
Oslo 团队审查新仓库
Infra 项目配置
更新 Gerrit 组和 ACL
openstack-infra/devstack-gate 调整
openstack/requirements projects.txt 调整
更新 docs.openstack.org 上的项目列表
标记一个发布版本
盈利!
N/A
python 2.6 –> 3.4 (以及更高版本!)
ordereddict(仅在 python 2.6 上需要)
pbr
prettytable
six
注意
所有当前计划的依赖项都在 requirements 仓库中。
N/A
注意
本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode
除非另有说明,此文档根据 知识共享署名 3.0 许可 授权。请参阅所有 OpenStack 法律文件。