Merge "Support metadata for backup resource"

This commit is contained in:
Jenkins 2017-06-06 19:44:47 +00:00 committed by Gerrit Code Review
commit a689f78e9c
1 changed files with 167 additions and 0 deletions

View File

@ -0,0 +1,167 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
===========================
Support metadata for backup
===========================
https://blueprints.launchpad.net/cinder/+spec/metadata-for-backup
Add a new "metadata" property for backup resource.
Problem description
===================
Backup resource lost the ability for getting/setting metadata property.
Use Cases
=========
The metadata here for backup is the descriptive metadata. It's used for
discovery and identification. Users could add key-value pairs for the backups
to describe them. And users can also filter backups with specified metadata.
Proposed change
===============
1. The "metadata" property will be added to backup object.
2. A new DB table "backup_metadata" will be created.
::
-----------------------------------------------------------------------
| created_at | updated_at | deleted_at | id | backup_id | key | value |
-----------------------------------------------------------------------
| | | | | | | |
-----------------------------------------------------------------------
The primary key is "id".
3. The backup create/update API will be updated to support "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. A set of new APIs will be created. It's used for backup metadata's 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
Alternatives
------------
Leave as it is.
Data model impact
-----------------
Backup model will be updated with new property "metadata".
REST API impact
---------------
* The backup create/update API's request body will be updated.
* A set of new APIs related to backup metadata will be created.
Security impact
---------------
None
Notifications impact
--------------------
The new APIs will send new notifications as well.
Other end user impact
---------------------
None
Performance Impact
------------------
A new "backup_metadata" table will be created so that the DB conjunction action
may let the search performance reduce a little.
Other deployer impact
---------------------
None
Developer impact
----------------
None
Implementation
==============
Assignee(s)
-----------
Primary assignee:
wangxiyuan(wxy)
Work Items
----------
* Add metadata property to backup object and bump its version.
* Create a new DB table "backup_metadata" and add db upgrade script.
* Update backup create/update API.
* Add a tuple of new APIs for backup metadata.
Dependencies
============
None
Testing
=======
* Unit tests
Documentation Impact
====================
* Api-ref need update.
References
==========
None