重置状态健壮性

https://blueprints.launchpad.net/cinder/+spec/reset-state-robustification

问题描述

我看到许多用户由于不理解重置卷的状态如何与重置附件的状态交互,而将卷置于“无效”状态。

例如,在具有附件的卷上运行“cinder reset-state –state available <vol>”

现在会怎样?

用例

帮助防止不熟悉 Cinder 的用户在使用 reset-state 时弄巧成拙。

提议的变更

如果用户请求将卷的状态重置为 Cinder 认为不是有效宇宙状态的状态,则拒绝该请求并说明原因。

如果 volume1 具有活动的附件。$ cinder reset-state –state available volume1 错误:由于仍存在附件,无法重置为 available。

$ cinder reset-state –state available volume1 –attach-status detached (命令成功)

需要阻止的情况
  1. 卷重置为 available,但仍有附件

  2. 快照重置为 in-use,而卷处于 available 状态

有时,知识渊博的操作员可能需要重置状态,然后手动使当前状态有效。cinder-manage 是允许强制更改的地方,而不是 API 中的 ‘–force’ 标志。

备选方案

  • 希望用户不要执行这些操作。

  • 通过强制分离卷而不是拒绝请求来处理“在附加状态下重置为 available”的情况。

数据模型影响

REST API 影响

os-reset-status 操作在卷、快照、备份、组上,现在在某些情况下会返回 400,而之前会成功。这不需要 microversion 升级。

安全影响

Active/Active HA 影响

reset-state 中的这些检查可能会与集群中的更新发生竞争。我们将确定在进一步实施时这意味着什么。

通知影响

其他最终用户影响

性能影响

其他部署者影响

提高部署者清理云中问题的安全性。

开发人员影响

实现

负责人

主要负责人

TusharTgite

其他贡献者

eharney

工作项

  • 实施检查“在附加状态下重置为 available”的情况

  • 向 cinder-manage 添加代码以处理操作员需要覆盖 API 并重置状态的情况。

  • 研究其他有意义的我们可以为卷、快照、组等阻止的情况。

  • 针对几个主要情况的 Tempest 测试

依赖项

测试

  • 新的 Tempest 测试

文档影响

  • 应该记录常见失败情况。

参考资料