备份强制删除 API¶
https://blueprints.launchpad.net/cinder/+spec/support-force-delete-backup
提供一个 API 来强制删除处于创建或恢复等状态的备份。
问题描述¶
目前存在卷强制删除和快照强制删除功能,但备份没有强制删除功能。当备份创建失败并且备份状态停留在“创建中”时,备份的强制删除将是有益的。当数据库在备份卷和元数据之后崩溃并更新卷的状态为“可用”时,就会发生这种情况,从而使备份的状态停留在“创建中”,而没有通过 API 处理的方法,因为备份删除 API 只能删除状态为“可用”和“错误”的备份项。
用例¶
如果备份已成功创建在对象存储中,但由于数据库崩溃而卡在更新备份状态中。那么使用强制删除 API,我们可以直接删除备份项(包括存储后端和数据库条目中的所有内容),而无需手动将备份的状态更改为数据库中的“错误”或重新启动 cinder-backup 并调用备份删除函数,这对于管理员来说非常有用。
提议的变更¶
将添加一个新的 API 函数和相应的 cinder 命令来强制删除备份。
该提案是为管理员提供一种快速删除状态不是“可用”或“错误”的备份项的方法。
这是一个仅限管理员的操作。
备选方案¶
首先,登录到 cinder 数据库,使用以下更新 sql 将备份项状态更改为“可用”或“错误”。
update backups set status=’available’(或 ‘error’) where id=’xxx-xxx-xxx-xxx’;
其次,调用备份删除 API 来删除备份项。
数据模型影响¶
无
REST API 影响¶
在 v2 中添加一个新的 REST API 来删除备份
POST /v2/{tenant_id}/backups/{id}/action
{
"os-force_delete": {}
}
- 正常的 HTTP 响应代码
202
- 预期的错误 HTTP 响应代码
404
安全影响¶
无
通知影响¶
删除通知应包括是否使用了强制删除
其他最终用户影响¶
python-cinderclient 将添加一个新的命令,backup-force-delete。此命令镜像底层的 API 函数。
可以通过以下方式强制删除备份项:$ cinder backup-force-delete <backup>
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
ling-yun
工作项¶
实现 REST API
实现 cinder 客户端函数
实现 cinder 命令
依赖项¶
无
测试¶
需要使用正在进行的备份测试强制删除,并确保其成功删除并正确清理。
文档影响¶
需要更新 cinder 客户端文档以反映新的命令。
https://docs.openstack.org/admin-guide/blockstorage-manage-volumes.html
Cinder API 文档需要更新以反映 REST API 的更改。
参考资料¶
无