添加租期结束操作选项¶
https://blueprints.launchpad.net/blazar/+spec/on-end-options
对于主机预留功能,我们建议更改租期结束时的行为,强制删除正在运行的实例,以避免后续租期的失败。此外,我们建议添加在强制删除之前采取的操作选项。当然,租期所有者也可以在租期结束时间之前请求“更新租期”以延长租期。
问题描述¶
目前,物理主机预留功能在租期结束时不会终止正在运行的实例。这可能导致后续租期的失败。解决方案是默认删除实例,并提供删除前的操作选项,例如快照。
用例¶
所有用户都希望 Blazar 能够准时执行,以保证所有租期的公平性。
如果工作负载在租期内无法完成,用户希望对租期的实例进行快照。然后,用户将在下一个租期恢复快照的实例并重新启动工作负载。
用户只想临时使用实例,并希望这些实例在租期结束时自动删除。
提议的变更¶
更改 PhysicalHostPlugin 类的 on_end() 方法,默认在租期结束时删除正在运行的实例。
此外,支持删除前采取的操作选项。为此,扩展现有的 before_end_lease 事件,该事件目前仅用于租期结束前的通知。我们计划支持以下 before_end_lease 事件操作
通知:通知租期所有者租期即将结束。(当前支持)
快照:在删除之前拍摄正在运行的实例的快照。
迁移:迁移正在运行的实例。
我们预计未来还会提出其他选项。
before_end_lease 事件在创建和更新租期时注册和更改。可以配置默认的 before_end_lease 操作以及触发该事件的时间。此外,用户可以通过请求参数指定它们。
备选方案¶
不要使用“before_end_lease”,而是使用“end_lease”事件来进行快照等操作。目前,end_lease 事件在租期结束时触发。更改为在租期结束前的特定时间窗口触发。使时间窗口的长度可配置。
这种更改可能会使事件处理复杂化,因为 end_lease 事件可以触发多个操作,例如,拍摄快照然后删除实例,而 before_end_lease 解决方案保持一对一事件与操作的关系。因此,我们更喜欢 before_end_lease 解决方案。
数据模型影响¶
将在预留表中添加一个新的属性“before_end_action”。
REST API 影响¶
计划仅更新 v2 API,并且不为 v1 API 支持与 before_end_lease 相关的能力。
URL: POST /v2/leases
添加一个新的参数“before_end_action”
将参数“before_end_lease”更改为“before_end_date”。此更改是为了与其他参数的术语保持一致。
示例
{ "name": "lease_foo", "start_date": "2017-3-21 15:00", "end_date": "2017-03-24 15:00", "before_end_date": "2017-3-24 14:00", "reservations": [ { "resource_id": "1234", "min": 1, "max": 3, "resource_type": "physical:host", "hypervisor_properties": "[\">=\", \"$memory_mb\", \"4096\"]", "before_end_action": "snapshot" } ], "events": [] }
URL: PUT /v2/leases
与 POST 请求相同的更改。
安全影响¶
无。
通知影响¶
无。
其他最终用户影响¶
无。
性能影响¶
无。
其他部署者影响¶
将在
physical:host组中添加新的配置选项before_end_action:配置 before_end_lease 的默认操作。
hours_before_end_lease:配置触发 before_end_lease 操作的默认小时数(在 end_lease 之前)。
开发者影响¶
无。
实现¶
负责人¶
- 主要负责人
hiro-kobayashi
工作项¶
步骤 1:更改租期结束时的行为,强制删除正在运行的实例。
步骤 2:更改 before_end_lease 事件以支持可配置的操作。
步骤 3:更改 REST API。
依赖项¶
无。
测试¶
添加以下测试
单元测试
步骤 1:检查租期结束时是否删除了所有正在运行的实例。
步骤 2:检查 before_end_lease 操作是否被触发并完成。
步骤 3:检查新参数是否被正确处理。
文档影响¶
更新以下文档
添加发布说明
Blazar REST API 文档(API v2 文档将自动更新。)
参考资料¶
历史记录¶
发布名称 |
描述 |
|---|---|
Pike |
引入 |