支持共享回收站¶
https://blueprints.launchpad.net/manila/+spec/manila-share-support-Recycle-Bin
Manila 不支持共享回收站。此 BP 是为了添加对共享回收站的支持。最终用户可以将共享软删除到回收站,并可以恢复它。
问题描述¶
如果用户想从 Manila 中删除共享,可以删除给定的共享。或者,如果他们只想停止 Manila 对共享的管理,可以取消管理它,共享仍然存在于共享后端。如果用户稍后想恢复共享,他们必须记录 export_location_path、host、share_proto 等,并且最终用户没有权限管理共享。如果用户不再使用该共享,此共享数据将永久保留在后端存储中,成为垃圾数据。因此,用户需要一种临时删除并轻松恢复的方法。
用例¶
用户希望将共享软删除到回收站。
用户希望列出回收站中的共享。
用户希望从回收站恢复共享。
用户希望从回收站完全删除共享。
提议的变更¶
以下是需要进行的更改
将在
shares表中添加一列新的列is_soft_deleted,以标识放置在回收站中的共享。将在
shares表中添加一列新的列scheduled_to_be_deleted_at,当达到过期时间时,回收站中的共享将自动且完全删除。不在回收站中的共享scheduled_to_be_deleted_at将为 None。将在
ShareInstance模型中添加一个新的属性is_soft_deleted。此属性将继承父共享的值。添加新的配置项
soft_deleted_share_hold_time,这意味着云管理员希望在回收站中保留共享的最大时间。默认值为 604800 秒(7 天)。将添加一个新的共享操作,用于软删除共享。一旦共享已被删除到回收站,将设置共享的
is_soft_deleted为 True,并计算共享的scheduled_to_be_deleted_at。scheduled_to_be_deleted_at= now_time +soft_deleted_share_hold_time。将向原始列出共享 API 添加一个新的请求参数
is_soft_deleted。is_soft_deleted默认值为 False,如果设置为 True,它将仅列出已软删除的共享。共享软删除后,项目配额将保持分配,并且仅在从回收站删除共享后才会释放。
将在共享管理器层添加一个新的周期性任务,以检查回收站中的共享是否已达到其
scheduled_to_be_deleted_at。如果scheduled_to_be_deleted_at达到,周期性任务将自动删除共享。添加从回收站恢复共享的新 API。
列出共享实例将过滤共享的
is_soft_deleted是否为 False。上述 API 更改将提升一个新的微版本。
备选方案¶
无
数据模型影响¶
将在
shares的模型中添加两列新的列is_soft_deleted和scheduled_to_be_deleted_at。将在
ShareInstance模型中添加一个新的属性is_soft_deleted。此属性将继承父共享的值。
REST API 影响¶
将共享软删除到回收站
POST /v2/shares/{share_id}/action
{“soft_delete”: null}
- 先决条件
(1)共享状态必须为 available、error 或 inactive
(2)不能软删除已在回收站中的共享。
(3)不能已经有共享的快照。
(4)不能已经有共享的组快照。
(5)不能已经有共享的副本。
(6)不能软删除不属于您项目的共享。
如果提供的 share_id 不存在,API 将响应 404 Not Found。如果由于不满足 (1)(3)(4) 约束而无法执行操作,API 将响应 400 Bad Request。如果由于不满足 (2)(5) 约束而无法执行操作,API 将响应 409 Conflict Request。如果由于不满足 (6) 约束而无法执行操作,API 将响应 403 forbidden。
列出回收站中的共享
GET /v2/shares?is_soft_deleted=true
列出带有详细信息的回收站中的共享
GET /v2/shares/detail?is_soft_deleted=true
从回收站完全删除共享与删除不在回收站中的共享相同
DELETE /v2/shares/{share_id}
如果提供的 share_id 不存在,API 将响应 404 Not Found。
从回收站恢复共享
POST /v2/shares/{share_id}/restore
{‘restore’: null}
如果提供的 share_id 不存在,API 将响应 404 Not Found。如果共享不在回收站中,API 将直接返回成功。
安全影响¶
无
通知影响¶
无。
其他最终用户影响¶
Manila 客户端、CLI 将扩展以支持共享回收站。
软删除共享的命令将如下所示
manila soft-delete <share_id>
列出回收站中共享的命令,支持的参数与 Manila 列出相同,将如下所示
manila list --soft-deleted
从回收站恢复共享的命令将如下所示
manila restore <share_id>
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
haixin<haixin@inspur.com>
工作项¶
更新 API。
更新管理器。
更新 Manila CLI 命令。
更新单元和 tempest 测试。
更新相关文档。
更新 Manila UI。
依赖项¶
无
测试¶
添加单元测试
添加 tempest 测试
文档影响¶
以下 OpenStack 文档将被更新以反映此更改
Openstack 管理员指南
OpenStack 用户指南
OpenStack API 参考
参考资料¶
无