状态机

Blazar 对象(租约、预留和事件)每个都有一个状态。本文档详细描述了这些状态。

租约状态

租约状态分为两种类型:稳定状态或过渡状态。在下面的状态图中,稳定状态绘制为黑色节点,而过渡状态绘制为灰色节点。状态转换由 API 调用或租约中的事件触发。

租约具有以下四种稳定状态

  • PENDING:租约已成功创建,并已准备好启动。租约将保持此状态,直到启动为止。

  • ACTIVE:租约已启动并处于活动状态。

  • TERMINATED:租约已成功终止。

  • ERROR:租约发生了不可恢复的故障。

过渡状态如下

  • CREATING:租约正在创建中。

  • STARTING:租约正在启动中。

  • UPDATING:租约正在更新中。

  • TERMINATING:租约正在终止中。

  • DELETING:租约正在删除中。任何状态都可以更改为此状态,因为删除操作具有最高优先级。例如,当租约在 STARTING 状态下挂起时,应允许删除。

如果某个操作可能导致无效的状态转换,则该操作将被拒绝。例如,如果用户在租约启动时发送更新租约请求,则该更新租约请求将被拒绝,因为从 STARTINGUPDATING 的转换无效。

../_images/lease_statuses.png

预留状态

预留具有以下四种状态。为了向后兼容,使用小写字母

  • pending:预留已成功创建,并已准备好启动。预留将保持此状态,直到启动为止。

  • active:预留已启动并处于活动状态。

  • deleted:已成功释放预留资源。

  • error:资源发生了不可恢复的故障。

../_images/reservation_statuses.png

事件状态

事件状态如下。

../_images/event_statuses.png

状态之间的关系

下表显示了租约状态需要满足的预留和事件的状态条件。

租约

预留

活动

CREATING

待定

start_lease: UNDONE , end_lease: UNDONE

PENDING

待定

start_lease: UNDONE , end_lease: UNDONE

STARTING

pending 或 active 或 error

start_lease: IN_PROGRESS , end_lease: UNDONE

ACTIVE

active

start_lease: DONE , end_lease: UNDONE

TERMINATING

active 或 deleted 或 error

start_lease: DONE , end_lease: IN_PROGRESS

TERMINATED

deleted

start_lease: DONE , end_lease: DONE

DELETING

任何状态

任何状态

UPDATING

任何状态

任何状态,除了 IN_PROGRESS

blazar/status 模块

blazar/status 模块定义和管理这些状态。