无需驱动交互即可从数据库中删除对象

https://blueprints.launchpad.net/cinder/+spec/cinder-delete-from-db

问题描述

当服务不可用时,无法删除卷、备份或快照。没有办法绕过驱动交互。

用例

有时,OpenStack 管理员会拔掉一些存储后端以使用新的后端。他们后来意识到需要清理各种对象。

提议的变更

通过 cinder-manage,我们将会在卷删除命令下添加一个 –db-only 开关。快照将级联删除。我们还将实现备份子命令,其行为类似于卷子命令。

备选方案

已知的唯一解决方法是手动更新多个表并将状态设置为“已删除”以删除各种对象。

数据模型影响

REST API 影响

安全影响

Active/Active HA 影响

通知影响

其他最终用户影响

这些命令将可供操作员使用

cinder-manage volume delete [--db-only] <volume-id>
cinder-manage backup delete [--db-only] <backup-id>

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人:David Vallee Delisle <dvd@redhat.com>

工作项

将在 cinder-manage 命令下进行以下更改:* 在卷删除命令中添加一个 –db-only 开关。* 添加一个支持 –db-only 的备份删除子命令。* 删除卷时,快照将级联删除。

将在 rpcapis 中进行以下更改:* 在删除函数中添加一个 db_only 参数

将在 manages 中进行以下更改:* 在删除函数中添加一个 db_only 参数

依赖项

测试

创建测试以验证删除卷和删除备份是否真的在删除。

文档影响

cinder-manage 的手册页以及任何相关的文档都将被更新。

参考资料