支持备份的元数据

https://blueprints.launchpad.net/cinder/+spec/metadata-for-backup

为备份资源添加一个新的“metadata”属性。

问题描述

备份资源失去了获取/设置元数据属性的能力。

用例

这里的元数据指的是描述性元数据。它用于发现和识别。用户可以为备份添加键值对来描述它们。用户还可以使用指定的元数据过滤备份。

提议的变更

  1. “metadata”属性将被添加到备份对象中。

2. 将创建一个新的 DB 表“backup_metadata”。

-----------------------------------------------------------------------
| created_at | updated_at | deleted_at | id | backup_id | key | value |
-----------------------------------------------------------------------
|            |            |            |    |           |     |       |
-----------------------------------------------------------------------

主键是“id”。

3. 备份创建/更新 API 将被更新以支持“metadata”。

POST /v3/{project_id}/backups
PUT  /v3/{project_id}/backups/{backup_id}

the request body can contain "metadata".
{
    "metadata":{
        "key1": "value1",
        "key2": "value2"
    }
}

4. 将创建一组新的 API。它用于备份元数据的 CRUD 操作。

GET    /v3/{project_id}/backups/{backup_id}/metadata
show a backup's metadata

POST   /v3/{project_id}/backups/{backup_id}/metadata
create or replaces metadata for a backup

PUT    /v3/{project_id}/backups/{backup_id}/metadata
replace all the backup's metadata

GET    /v3/{project_id}/backups/{backup_id}/metadata/{key}
show a backup's metadata for a specific key

DELETE /v3/{project_id}/backups/{backup_id}/metadata/{key}
delete a specified metadata

PUT    /v3/{project_id}/backups/{backup_id}/metadata/{key}
update a specified metadata

备选方案

保持不变。

数据模型影响

备份模型将使用新的属性“metadata”进行更新。

REST API 影响

  • 备份创建/更新 API 的请求体将被更新。

  • 将创建一组与备份元数据相关的新的 API。

安全影响

通知影响

新的 API 也会发送新的通知。

其他最终用户影响

性能影响

将创建一个新的“backup_metadata”表,以便 DB 连接操作可能会略微降低搜索性能。

其他部署者影响

开发人员影响

实现

负责人

主要负责人

wangxiyuan(wxy)

工作项

  • 为备份对象添加元数据属性并提升其版本。

  • 创建一个新的 DB 表“backup_metadata”并添加 db 升级脚本。

  • 更新备份创建/更新 API。

  • 添加一组用于备份元数据的新的 API。

依赖项

测试

  • 单元测试

文档影响

  • Api-ref 需要更新。

参考资料