NovaInstanceActions
| |
旧设计页面
此页面曾用于帮助设计 OpenStack 早期版本的一个特性。该特性可能已经或尚未实现。因此,此页面可能不会更新,并且可能包含过时的信息。上次更新时间为 2014-05-15 |
- Launchpad 条目: NovaSpec:instance-actions
- 创建时间: 2012年11月5日
- 贡献者: Andrew Laski, Johannes Erdfelt
总结
创建一个新的 instance_actions 表格,并创建一个 API 扩展来访问它。这将提供一个更好的错误报告机制,并让用户了解对其实例所执行的操作。
原理
目前,API 仅在实例处于 ERROR 状态时报告异步错误,但并非所有发生的问题都是致命的或无法恢复的。但我们目前的选择是在将实例设置为 ERROR 并能够将错误告知用户,或者继续/恢复并隐藏错误信息。以下是一些例子:
- changePassword 失败会将实例设置为 ERROR,但这并非致命的
the running of the instance. Changing that behavior would hide the error information.
- 在某些情况下,xenapi 驱动程序会记录代理失败并继续,这
can leave a user wondering why their instance isn't configured properly and no way for them to retrieve that information.
- 调整大小失败可以自动恢复到
original instance, but this would leave users no indication of why that happened.
API 扩展将提供一种检索实例上执行的所有操作的机制,并将包含错误信息,无论 VM 状态如何。这将提高对实例发生情况的可见性,包括正常操作和发生的错误。 这也为未来的工作打开了机会,即仅在存在 VM 错误时才设置 VM ERROR 状态,而不是任务错误。
设计
新表格
一个新的表格 `instance_actions` 包含以下内容
- 操作开始时间
- 操作完成时间
- 行动
- instance_uuid
- request_id
- user_id
- service_id
- 结果,成功或失败
- 如果适用,简短的错误消息
- 如果适用,错误的堆栈跟踪
API 扩展
添加一个新的资源 GET /servers/<server_id>/os-instance-actions
{
- "actions": [
- {
- "action": "",
- "started_at": "",
- "finished_at": "",
- "request_id": "",
- "user_id": "",
- "service": "",
- "result": "",
- "message": ""
- },
- {...}
- ]
}
未解决的问题
初步的想法是仅记录用户发起的动作,但这留下了自动调整大小确认的边缘情况。对于这种记录,这些是否应被视为用户发起的动作?
参考文献
- https://etherpad.openstack.org/grizzly-error-handling-recovery
- https://bugs.launchpad.net/nova/+bug/1061062
- https://bugs.launchpad.net/nova/+bug/1061024