Add project id and user id information in os-server-group API
APIImpact: Project id and user id information will be returned for os-server-group API Change-Id: I167141676ef4f597a1c022c1fd5dc96fd55d02ad blueprint add-project-id-and-user-id Partial-Bug: 1481210
This commit is contained in:
parent
1d222ac16f
commit
3ce62edb2a
|
@ -0,0 +1,241 @@
|
|||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
=======================================================================
|
||||
Show the 'project_id' and 'user_id' information in os-server-groups API
|
||||
=======================================================================
|
||||
|
||||
https://blueprints.launchpad.net/nova/+spec/add-project-id-and-user-id
|
||||
|
||||
Show the 'project_id' and 'user_id' information of the server
|
||||
groups in os-server-groups API. This fix will allow admin user
|
||||
to identify server group easier.
|
||||
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
The os-server-groups API currently allows admin user to list server
|
||||
groups for all projects and the response body doesn't contain project
|
||||
id information of each server group, it will be hard to identify which
|
||||
server group belong to which project in multi-tenant env.
|
||||
|
||||
|
||||
Use Cases
|
||||
---------
|
||||
|
||||
As a cloud administrator, I want to easily identify which server group
|
||||
belongs to which project when sending GET request.
|
||||
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
Add a new API microversion to the os-server-groups API extension such that if:
|
||||
* The version on the API 'list' request satisfies the minimum version include
|
||||
the 'project_id' and 'user_id' information of server groups in the
|
||||
response data.
|
||||
* The version on the API 'show' request satisfies the minimum version include
|
||||
the 'project_id' and 'user_id' information of server groups in the response
|
||||
data.
|
||||
* The version on the API 'create' request satisfies the minimum version
|
||||
include the 'project_id' and 'user_id' information of server groups in
|
||||
the response data.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
None
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
None
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
The proposed change updates the GET response data in the os-server-groups
|
||||
API extension to include the 'project_id' and 'user_id' field if the request
|
||||
has a minimum supported version.
|
||||
|
||||
The proposed change also updates the POST response data in the
|
||||
os-server-groups API extension to include the 'project_id' and 'user_id'
|
||||
field if the request has a minimum supported version.
|
||||
|
||||
* Modifications for the method
|
||||
|
||||
* Add project id information to the current response data.
|
||||
* Add user id information to the current response data.
|
||||
* GET requests response data will be affected.
|
||||
* POST requests response data will be affected.
|
||||
|
||||
* Example use case:
|
||||
|
||||
Request:
|
||||
|
||||
GET --header "X-OpenStack-Nova-API-Version: 2.12" \
|
||||
http://127.0.0.1:8774/v2.1/e0c1f4c0b9444fa086fa13881798144f/os-server-groups
|
||||
|
||||
Response:
|
||||
|
||||
::
|
||||
|
||||
{
|
||||
"server_groups": [
|
||||
{
|
||||
"user_id": "ed64bccd0227444fa02dbd7695769a7d",
|
||||
"policies": [
|
||||
"affinity"
|
||||
],
|
||||
"name": "test1",
|
||||
"members": [],
|
||||
"project_id": "b8112a8d8227490eba99419b8a8c2555",
|
||||
"id": "e64b6ae1-4d05-4faa-9f53-72c71f8e6f1a",
|
||||
"metadata": {}
|
||||
},
|
||||
{
|
||||
"user_id": "9128b975e91846f882eb63dc35c2ffd8",
|
||||
"policies": [
|
||||
"anti-affinity"
|
||||
],
|
||||
"name": "test2",
|
||||
"members": [],
|
||||
"project_id": "b8112a8d8227490eba99419b8a8c2555",
|
||||
"id": "b1af831c-69b5-4d42-be44-d710f2b8954c",
|
||||
"metadata": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Request:
|
||||
|
||||
GET --header "X-OpenStack-Nova-API-Version: 2.12" \
|
||||
http://127.0.0.1:8774/v2.1/e0c1f4c0b9444fa086fa13881798144f/os-server-groups/
|
||||
e64b6ae1-4d05-4faa-9f53-72c71f8e6f1a
|
||||
|
||||
Response:
|
||||
|
||||
::
|
||||
|
||||
{
|
||||
"user_id": "ed64bccd0227444fa02dbd7695769a7d",
|
||||
"policies": [
|
||||
"affinity"
|
||||
],
|
||||
"name": "test1",
|
||||
"members": [],
|
||||
"project_id": "b8112a8d8227490eba99419b8a8c2555",
|
||||
"id": "e64b6ae1-4d05-4faa-9f53-72c71f8e6f1a",
|
||||
"metadata": {}
|
||||
}
|
||||
|
||||
Request:
|
||||
|
||||
POST --header "X-OpenStack-Nova-API-Version: 2.12" \
|
||||
http://127.0.0.1:8774/v2.1/e0c1f4c0b9444fa086fa13881798144f/os-server-groups \
|
||||
-d {"server_group": { "name": "test", "policies": [ "affinity" ] }}
|
||||
|
||||
Response:
|
||||
|
||||
::
|
||||
|
||||
{
|
||||
"user_id": "ed64bccd0227444fa02dbd7695769a7d",
|
||||
"policies": [
|
||||
"affinity"
|
||||
],
|
||||
"name": "test",
|
||||
"members": [],
|
||||
"project_id": "b8112a8d8227490eba99419b8a8c2555",
|
||||
"id": "e64b6ae1-4d05-4faa-9f53-72c71f8e6f1a",
|
||||
"metadata": {}
|
||||
}
|
||||
|
||||
* There should not be any impacts to policy.json files for this change.
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
None
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
* The python-novaclient server-group-list, server-group-show
|
||||
server-group-create command will be updated to handle microversions
|
||||
to show the 'project_id' and 'user_id' information in it's output
|
||||
if the requested microversion provides that infomation.
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
None
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
None; if a deployer is using the required minimum version of the API to get
|
||||
the 'project_id' and 'user_id' data they can begin using it, otherwise they
|
||||
won't see a change.
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
Zhenyu Zheng <zhengzhenyu@huawei.com>
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
* Add a new microversion and change
|
||||
nova/api/openstack/compute/server_groups.py to use it to determine
|
||||
if the 'project_id' and 'user_id' information of the server group
|
||||
should be returned.
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
None
|
||||
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
* Unit tests and API samples functional tests in the nova tree.
|
||||
* There are currently not any compute API microversions tested in Tempest
|
||||
beyond v2.1. We could add support for testing the new version in Tempest
|
||||
but so far the API is already at least at v2.10 without changes to Tempest.
|
||||
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
* nova/api/openstack/rest_api_version_history.rst document will be updated.
|
||||
* api-ref at https://github.com/openstack/api-site will be updated.
|
||||
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
* Originally reported as a bug:
|
||||
https://bugs.launchpad.net/python-novaclient/+bug/1481210
|
||||
|
Loading…
Reference in New Issue