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:
Kevin_Zheng 2015-08-06 20:46:37 +08:00 committed by Zhenyu Zheng
parent 1d222ac16f
commit 3ce62edb2a
1 changed files with 241 additions and 0 deletions

View File

@ -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