2.7 KiB
API for custom checkpoint meta-data
https://blueprints.launchpad.net/cinder/+spec/custom-checkpoint-metadata
Problem description
Currently when creating a checkpoint. The only place to add custom information apart from the name is in the description field. This means that tools that create checkpoints needs to use this user visible space for their own metadata.
User data can only be set during creation and is read-only from that point on.
Use Cases
A tool creates a checkpoint and want's to add information related to the tools functions. For example a tool that creates checkpoints due to specific external events would like to add the event_id of the event that triggered the checkpoint creation.
Proposed change
When creating a checkpoint a new field would be available called
extra-info
. This field must be a map in the format of:
{
"key": "value",
}
Keys and values must both be strings. Keys that are
officially recognized will be in the format of
karbor-<key-name>
for example
karbor-created-by
.
Anything that is not officially defined should use the
prefix: x-<application>--<key-name>
. For
example, x-trigger-master--trigger-id
Alternatives
Do nothing, this is not a mission critical feature.
Data model impact
New field for a checkpoint called extra-info
.
REST API impact
New optional body attribute when creating a new checkpoint:
POST/v1/{tenant_id}/checkpoint
{
...
"extra-info": {
"karbor-created-by": "operation-engine"
}
}
Security impact
We need to make sure the number of entries and their size is within bounds to prevent any attacks.
Notifications impact
None
Other end user impact
The new API will be exposed to users via the python-karborclient.
Performance Impact
Filtering the results might cause a slight performance impact for the REST API.
Other deployer impact
None
Developer impact
None
Implementation
Assignee(s)
Work Items
- Write API
- Add to Karbor client
- Write tests
- Add documentation
Dependencies
None
Testing
Unit tests in Karbor and the python-karborclient.
Documentation Impact
New docs to explain how to use the API.
References
None