Merge "Append new tags to existing tags"
This commit is contained in:
commit
fbda4494e0
159
specs/yoga/approved/glance/append-tags.rst
Normal file
159
specs/yoga/approved/glance/append-tags.rst
Normal file
@ -0,0 +1,159 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
=======================================================================
|
||||
Provision to append the new metadef-tags with the existing metadef-tags
|
||||
=======================================================================
|
||||
|
||||
https://blueprints.launchpad.net/glance/+spec/append-tags
|
||||
|
||||
In the Glance API we are not having the provision to append the new metadef-tags
|
||||
with the existing metadef-tags. Introducing a new optional parameter would help
|
||||
the user to select whether to append the tags or to go with current behaviour i.e.
|
||||
overwrite the existing tags.
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
Our md-tag-create-multiple (POST /v2/metadefs/namespaces/{namespace_name}/tags) API
|
||||
overwrites existing tags for specified namespace rather than creating new one in
|
||||
addition to the existing tags. Whereas if you try to create different tags using
|
||||
md-tag-create (POST /v2/metadefs/namespaces/{namespace_name}/tags/{tag_name}) it is
|
||||
adding new tag in addition to existing ones.
|
||||
So we should have consistency between the two APIs i.e. the ability to append
|
||||
the tags in md-tag-create-multiple API.
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
At the moment the glance API only overwrites the existing tags with the
|
||||
newly created tags i.e. the original/default behaviour. The new behaviour suggests
|
||||
to append the new tags with the existing ones.
|
||||
The goal is to provide an optional header ``X-Openstack-Append`` that takes boolean
|
||||
values, which will default to the original behaviour. If not present, the behavior is
|
||||
the same as passing ``X-Openstack-Append: False``.
|
||||
|
||||
If header is present then we are going to append new tags else keep the old behavior.
|
||||
|
||||
In addition to this we will add an optional parameter at glanceclient side
|
||||
which will default to the original behaviour and if the user wants to append the
|
||||
new tags it can be by changing the value of parameter to True.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
None
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
None
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
We are going to change the API and will be adding a ``X-Openstack-Append`` in the header.
|
||||
The rest API look like this:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
POST /v2/metadefs/namespaces/{namespace_name}/tags
|
||||
|
||||
Header fields::
|
||||
|
||||
X-Openstack-Append
|
||||
|
||||
* The <boolean> 'X-Openstack-Append' is an optional header, refers to appending the tags
|
||||
to the existing tags.
|
||||
It takes boolean values if True then it will append the tags ,if False it will
|
||||
overwrite the tags, default value is False.
|
||||
|
||||
Example curl usage::
|
||||
|
||||
curl -i -X POST -H "X-Auth-Token: $token" -H "X-Openstack-Append: False"
|
||||
-H "Content-Type: application/json"
|
||||
-d '{"tags": [{"name": "sample1"}, {"name": "sample2"}]}'
|
||||
$image_url/v2/metadefs/namespaces/{namespace_name}/tags
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
None
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
We will add an optional parameter ``--append`` to the glanceclient command
|
||||
md-tag-create-multiple to provide the facility of appending the tags.
|
||||
If the parameter is present then it will the append the tags to existing ones
|
||||
else will overwrite the existing tags.
|
||||
|
||||
* Create multiple tags: ``glance md-tag-create-multiple <NAMESPACE> --names <NAMES> [--delim <DELIM>] --append``
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
None
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
None
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
mrjoshi
|
||||
|
||||
Other contributors:
|
||||
None
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
* Add a boolean parameter in the header and change API
|
||||
functionality as per parameter's value
|
||||
* Add an optional parameter ``--append`` at the client side
|
||||
* Add unit test coverage for checking the functionality.
|
||||
* Add tempest test
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
None
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
We will provide unit tests coverage for testing the
|
||||
functionality based on the header.
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
The documentation needs to be updated with the new API behaviour.
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
https://bugs.launchpad.net/glance/+bug/1939169
|
||||
|
||||
https://review.opendev.org/c/openstack/glance/+/804966
|
||||
https://review.opendev.org/c/openstack/python-glanceclient/+/813591
|
Loading…
x
Reference in New Issue
Block a user