Remove pool group totally
In Queens, we support the old way to use pool_group and the new way without it in Flavor both. In Stein, we will remove the pool_group totally and only keep the new way in Flavor and Pool. Change-Id: Ie0bf6e4b5e6ca7b97037b2ea493465803f4eb898 Implements: bp remove-pool-group-totally
This commit is contained in:
parent
85e7309865
commit
01ced66a5d
@ -9,3 +9,4 @@
|
|||||||
email-notification-by-internal-tool
|
email-notification-by-internal-tool
|
||||||
delete-message-with-claim-id
|
delete-message-with-claim-id
|
||||||
introduce-topic-resource-for-notification
|
introduce-topic-resource-for-notification
|
||||||
|
remove-pool-group-totally
|
||||||
|
371
specs/stein/remove-pool-group-totally.rst
Normal file
371
specs/stein/remove-pool-group-totally.rst
Normal file
@ -0,0 +1,371 @@
|
|||||||
|
..
|
||||||
|
This template should be in ReSTructured text. The filename in the git
|
||||||
|
repository should match the launchpad URL, for example a URL of
|
||||||
|
https://blueprints.launchpad.net/zaqar/+spec/awesome-thing should be named
|
||||||
|
awesome-thing.rst.
|
||||||
|
|
||||||
|
Please do not delete any of the sections in this
|
||||||
|
template. If you have nothing to say for a whole section, just write: None
|
||||||
|
|
||||||
|
For help with syntax, see http://sphinx-doc.org/rest.html
|
||||||
|
To test out your formatting, see http://www.tele3.cz/jbar/rest/rest.html
|
||||||
|
|
||||||
|
===========================
|
||||||
|
remove-pool-group-totally
|
||||||
|
===========================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/zaqar/+spec/remove-pool-group-totally
|
||||||
|
|
||||||
|
remove-pool-group-totally.
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
Currently pool group is used in pool and flavor resource, but the pool group
|
||||||
|
only supports a 1:1 mapping with flavor. So it's not necessary to keep it
|
||||||
|
since we can map 1 flavor : N pool directly. Another issue is currently there
|
||||||
|
is no API to handle the pool group resource, which is very annoying to
|
||||||
|
maintain by operators.
|
||||||
|
|
||||||
|
For making a clarification to user, this bp proposes to remove useless
|
||||||
|
pool group from Zaqar, just keeps the pool resource.
|
||||||
|
|
||||||
|
For backward compatibility, we have split this work into two steps:
|
||||||
|
|
||||||
|
1. In Queens, we have supported the old way to use pool_group and the new way
|
||||||
|
without it in Flavor both.
|
||||||
|
|
||||||
|
2. In Stein, we will remove the pool_group totally and only keep the new way
|
||||||
|
in Flavor and Pool.
|
||||||
|
|
||||||
|
This bp will implement the second step and totally remove the pool group from
|
||||||
|
zaqar.
|
||||||
|
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
1. Modify pool and flavor operation API:
|
||||||
|
|
||||||
|
* Remove group from flavor operation API: like creat, update, show, list.
|
||||||
|
* Remove group from pool operation API: like creat, update, show, list.
|
||||||
|
|
||||||
|
2. Remove the related logic codes about group in the zaqar server:
|
||||||
|
|
||||||
|
3. The Data model of flavor and pool resources have been changed in Queens,
|
||||||
|
There is no need to discard pool_group field and Drop table PoolGroup
|
||||||
|
we will just keep it in table for degrade convenience.
|
||||||
|
|
||||||
|
4. Modify the related logic codes about group in the zaqar client:
|
||||||
|
|
||||||
|
* openstack messaging flavor create
|
||||||
|
* openstack messaging flavor update
|
||||||
|
* openstack messaging pool create
|
||||||
|
* openstack messaging pool update
|
||||||
|
|
||||||
|
|
||||||
|
Drawbacks
|
||||||
|
---------
|
||||||
|
None
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
None
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
None
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
1. Create flavor API
|
||||||
|
The Request JSON when create flavor::
|
||||||
|
|
||||||
|
PUT: /v2/flavors/{flavor_name}
|
||||||
|
|
||||||
|
{
|
||||||
|
"pool_list": [pool1, pool2]
|
||||||
|
}
|
||||||
|
|
||||||
|
The response JSON when Create flavor::
|
||||||
|
|
||||||
|
Normal response codes: 201
|
||||||
|
|
||||||
|
Error response codes:
|
||||||
|
•BadRequest (400)
|
||||||
|
•Unauthorized (401)
|
||||||
|
•Forbidden (403)
|
||||||
|
|
||||||
|
2. Update flavor API
|
||||||
|
The Request JSON when update flavor::
|
||||||
|
|
||||||
|
PATCH: /v2/flavors/{flavor_name}
|
||||||
|
|
||||||
|
{
|
||||||
|
"pool_list": [pool1, pool2, pool3]
|
||||||
|
}
|
||||||
|
|
||||||
|
The response JSON when update flavor::
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"href": "/v2/flavors/testflavor",
|
||||||
|
"name": "testflavor",
|
||||||
|
"capabilities": [
|
||||||
|
"FIFO",
|
||||||
|
"CLAIMS",
|
||||||
|
"DURABILITY",
|
||||||
|
"AOD",
|
||||||
|
"HIGH_THROUGHPUT"
|
||||||
|
],
|
||||||
|
"pool_list": [pool1, pool2, pool3]
|
||||||
|
}
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes:
|
||||||
|
•BadRequest (400)
|
||||||
|
•Unauthorized (401)
|
||||||
|
•Forbidden (403)
|
||||||
|
•Not Found (404)
|
||||||
|
•ServiceUnavailable (503)
|
||||||
|
|
||||||
|
3. Shows details for a flavor API
|
||||||
|
The response JSON when show details flavor::
|
||||||
|
|
||||||
|
GET: /v2/flavors/{flavor_name}
|
||||||
|
|
||||||
|
{
|
||||||
|
"href": "/v2/flavors/testflavor",
|
||||||
|
"capabilities": [
|
||||||
|
"FIFO",
|
||||||
|
"CLAIMS",
|
||||||
|
"DURABILITY",
|
||||||
|
"AOD",
|
||||||
|
"HIGH_THROUGHPUT"
|
||||||
|
],
|
||||||
|
"pool_list": [pool1, pool2],
|
||||||
|
"name": "testflavor"
|
||||||
|
}
|
||||||
|
|
||||||
|
The response JSON when show details flavor::
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes:
|
||||||
|
•BadRequest (400)
|
||||||
|
•Unauthorized (401)
|
||||||
|
•Forbidden (403)
|
||||||
|
•Not Found (404)
|
||||||
|
•ServiceUnavailable (503)
|
||||||
|
|
||||||
|
4. List flavor API
|
||||||
|
The response JSON when list flavors::
|
||||||
|
|
||||||
|
GET: /v2/flavors
|
||||||
|
|
||||||
|
{
|
||||||
|
"flavors": [
|
||||||
|
{
|
||||||
|
"href": "/v2/flavors/test_flavor1",
|
||||||
|
"name": "test_flavor1",
|
||||||
|
"pool_list": [pool1, pool2]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"href": "/v2/flavors/test_flavor2",
|
||||||
|
"name": "test_flavor2",
|
||||||
|
"pool_list": [pool3, pool4]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
{
|
||||||
|
"href": "/v2/flavors?marker=test_flavor2",
|
||||||
|
"rel": "next"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
The response JSON when list flavors::
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes:
|
||||||
|
•Unauthorized (401)
|
||||||
|
•Forbidden (403)
|
||||||
|
|
||||||
|
|
||||||
|
5. Create pools API
|
||||||
|
The Request JSON when create pools::
|
||||||
|
|
||||||
|
PUT: /v2/pools/{pool_name}
|
||||||
|
|
||||||
|
{
|
||||||
|
"weight": 100,
|
||||||
|
"uri": "mongodb://127.0.0.1:27017",
|
||||||
|
"options":{
|
||||||
|
"max_retry_sleep": 1
|
||||||
|
},
|
||||||
|
"flavor": "testflavor"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
The response JSON when Create pools::
|
||||||
|
|
||||||
|
Normal response codes: 201
|
||||||
|
|
||||||
|
Error response codes:
|
||||||
|
•BadRequest (400)
|
||||||
|
•Unauthorized (401)
|
||||||
|
••Conflict (409)
|
||||||
|
|
||||||
|
6. Update pools API
|
||||||
|
The Request JSON when update pools::
|
||||||
|
|
||||||
|
PATCH: /v2/pools/{pool_name}
|
||||||
|
|
||||||
|
{
|
||||||
|
"weight": 60,
|
||||||
|
"uri": "mongodb://127.0.0.1:27017",
|
||||||
|
"options":{
|
||||||
|
"max_retry_sleep": 1
|
||||||
|
},
|
||||||
|
"flavor": "testflavor1"
|
||||||
|
}
|
||||||
|
|
||||||
|
The response JSON when update pools::
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"href": "/v2/pools/test_pool",
|
||||||
|
"name": "test_pool",
|
||||||
|
"weight": 60,
|
||||||
|
"uri": "mongodb://127.0.0.1:27017",
|
||||||
|
"flavor": "testflavor1"
|
||||||
|
}
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes:
|
||||||
|
•BadRequest (400)
|
||||||
|
•Unauthorized (401)
|
||||||
|
•Not Found (404)
|
||||||
|
•ServiceUnavailable (503)
|
||||||
|
|
||||||
|
7. Shows details for a pool API
|
||||||
|
The response JSON when show details pool::
|
||||||
|
|
||||||
|
GET: /v2/pools/{pool_name}
|
||||||
|
|
||||||
|
{
|
||||||
|
"href": "/v2/pools/test_pool",
|
||||||
|
"flavor": "flavor1",
|
||||||
|
"name": "test_pool",
|
||||||
|
"weight": 100,
|
||||||
|
"uri": "mongodb://127.0.0.1:27017"
|
||||||
|
}
|
||||||
|
|
||||||
|
The response JSON when show details pool::
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes:
|
||||||
|
•BadRequest (400)
|
||||||
|
•Unauthorized (401)
|
||||||
|
•ServiceUnavailable (503)
|
||||||
|
|
||||||
|
8. List pools API
|
||||||
|
The response JSON when list pools::
|
||||||
|
|
||||||
|
GET: /v2/pools
|
||||||
|
|
||||||
|
{
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"href": "/v2/pools/test_pool1",
|
||||||
|
"flavor": "flavor1",
|
||||||
|
"name": "test_pool1",
|
||||||
|
"weight": 60,
|
||||||
|
"uri": "mongodb://192.168.1.10:27017"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"href": "/v2/pools/test_pool2",
|
||||||
|
"flavor": "flavor1",
|
||||||
|
"name": "test_pool2",
|
||||||
|
"weight": 40,
|
||||||
|
"uri": "mongodb://192.168.1.20:27017"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
{
|
||||||
|
"href": "/v2/pools?marker=test_pool2",
|
||||||
|
"rel": "next"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
The response JSON when list pools::
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes:
|
||||||
|
•Unauthorized (401)
|
||||||
|
•Not Found (404)
|
||||||
|
|
||||||
|
|
||||||
|
We use the v2 interface, just add pool_list in the flavor API and add the
|
||||||
|
flavor in the pool API. we will remove the old way in this bp.
|
||||||
|
|
||||||
|
#. Old Way:
|
||||||
|
|
||||||
|
* configure group in pool API and in flavor API;
|
||||||
|
|
||||||
|
#. New Way:
|
||||||
|
|
||||||
|
* configure pool_list in flavor API
|
||||||
|
* add a pool to flavor:
|
||||||
|
|
||||||
|
#. method one: update pool_list in flavor API
|
||||||
|
#. method two: config a pool with the flavor in pool API.
|
||||||
|
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
gecong<ge.cong@zte.com.cn>
|
||||||
|
|
||||||
|
Milestones
|
||||||
|
----------
|
||||||
|
|
||||||
|
Target Milestone for completion:
|
||||||
|
Stein
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
#. Modify pool and flavor operation APIs.
|
||||||
|
#. Remove the related logic codes about group in the zaqar server.
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
Both unit and Tempest tests need to be created to cover the code change.
|
||||||
|
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
The Zaqar API documentation will need to be updated to reflect the REST
|
||||||
|
API changes.
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
None
|
||||||
|
|
Loading…
Reference in New Issue
Block a user