7.4 KiB
Remove tenant_id
https://blueprints.launchpad.net/nova/+spec/remove-tenant-id
The blueprint proposes to remove the API interface that uses
tenant_id
and replace it with project_id
.
Problem description
Currently, Nova API supports both tenant_id
and
project_id
, which is unfriendly to users.
The following is a confusing question. By default, we support
filtering instances by all_tenants (Optional)
, but through
this parameter, we get a list of all instances that they cannot get
instances by tenant_id
.
We can see from bug 1185290 that
when using the nova list
command, if tenant_id
is required, all_tenants
must appear, as description in1, which is somewhat unintuitive.
Note
2 mainly said: "As explained in lp:#1185290, if all_tenants is not passed we must ignore the tenant_id search option.".
We can know from bug 1468992 that
many users want to use tenant_id
filtering instances, and
using the concept of tenants in many of our large-scale customer
scenarios, they hope we can filter the expected instances through
tenant_id
.
Use Cases
As an (admin) user, I would like to use project_id
uniformly in nova api, instead of supporting both tenant_id
and project_id
, this will imporve uniformity within nova
and between nova and other service which have already made this
change.
Proposed change
Add a new microversion to the request or response parameter changes API.
Remove the tenant_id
field, using
all_projects
replace all_tenants
parameter,
and then removeall_tenants
parameter in the following
APIs:
- GET /servers (List Servers)
- GET /servers/detail (List Server Detailed)
Replace tenant_id
with project_id
in
request body in follow APIs:
- GET /limits (Show Rate And Absolute Limits)
- GET /os-quota-sets/{tenant_id} (Show A Quota)
- PUT /os-quota-sets/{tenant_id} (Update Quotas)
- GET /os-quota-sets/{tenant_id}/defaults (List Default Quotas For Tenant)
- GET /os-quota-sets/{tenant_id}/detail (Show The Detail of Quota)
- GET /os-simple-tenant-usage/{tenant_id} (Show Usage Statistics For Tenant)
Replace tenant_id
with project_id
in
response body in follow APIs:
- GET /servers/detail (List Server Detailed)
- GET /servers/{server_id} (List Server Detailed)
- PUT /servers/{server_id} (Update Server)
- POST /servers/{server_id}/action (Rebuild Server (rebuild Action))
- GET /servers/{server_id}/os-security-groups (List Security Groups By Server)
- GET /flavors/{flavor_id}/os-flavor-access (List Flavor Access Information
-
For Given Flavor)
- POST /flavors/{flavor_id}/action (Add Flavor Access To Tenant
-
(addTenantAccess Action))
- POST /flavors/{flavor_id}/action (Remove Flavor Access From Tenant
-
(removeTenantAccess Action))
- GET /os-simple-tenant-usage (List Tenant Usage Statistics For All Tenants)
- GET /os-simple-tenant-usage/{tenant_id} (Show Usage Statistics For Tenant)
The keyword tenant
in the path will be replaced with
project
as below APIs:
- GET /os-simple-tenant-usage APIs will be renamed to GET /os-simple-project-usage
- GET /os-simple-tenant-usage/{tenant_id} APIs will be renamed to GET /os-simple-project-usage/{project_id}
We should block change the tenant_id
below the
deprecated APIs:
- GET /os-security-groups (List Security Groups)
- GET /os-security-groups/{security_group_id} (Show Security Group Details)
- PUT /os-security-groups/{security_group_id} (Update Security Group)
- POST /os-security-group-rules (Create Security Group Rule)
- GET /os-cells (List Cells)
- GET /os-fping?all_tenants=1 (Ping Instances)
By the way, tenant* reference will be replaced with project* in all policies, code and docs too.
Alternatives
None
Data model impact
None
REST API impact
Add a new microversion.
Replace all_tenants
with all_projects
parameter, and remove all_tenants
in request body in follow
APIs:
- GET /servers (List Servers)
- GET /servers/detail (List Server Detailed)
Replace tenant_id
with project_id
in
request body in follow APIs:
- GET /limits (Show Rate And Absolute Limits)
- GET /os-quota-sets/{tenant_id} (Show A Quota)
- PUT /os-quota-sets/{tenant_id} (Update Quotas)
- GET /os-quota-sets/{tenant_id}/defaults (List Default Quotas For Tenant)
- GET /os-quota-sets/{tenant_id}/detail (Show The Detail of Quota)
- GET /os-simple-tenant-usage/{tenant_id} (Show Usage Statistics For Tenant)
- GET /os-cells (List Cells)
Replace tenant_id
with project_id
in
response body in follow APIs:
- GET /servers/detail (List Server Detailed)
- GET /servers/{server_id} (List Server Detailed)
- PUT /servers/{server_id} (Update Server)
- POST /servers/{server_id}/action (Rebuild Server (rebuild Action))
- GET /servers/{server_id}/os-security-groups (List Security Groups By Server)
- GET /flavors/{flavor_id}/os-flavor-access (List Flavor Access Information
-
For Given Flavor)
- POST /flavors/{flavor_id}/action (Add Flavor Access To Tenant
-
(addTenantAccess Action))
- POST /flavors/{flavor_id}/action (Remove Flavor Access From Tenant
-
(removeTenantAccess Action))
- GET /os-simple-tenant-usage (List Tenant Usage Statistics For All Tenants)
- GET /os-simple-tenant-usage/{tenant_id} (Show Usage Statistics For Tenant)
Security impact
None
Notifications impact
None
Other end user impact
Update openstacksdk, python-novaclient and python-openstackclient for the new microversion.
Performance Impact
None
Other deployer impact
None
Developer impact
None
Upgrade impact
None
Implementation
Assignee(s)
- Primary assignee:
-
brinzhang, songwenping
Feature Liaison
- Feature liaison:
-
brinzhang
Work Items
- Replace
tenant_id
withproject_id
in relate APIs, policies and code. - Replace
all_tenants
withall_projects
in relate APIs, policies and code. - Add related tests.
- Docs for the new microversion.
- Check the python-novaclient , python-openstackclient and
openstacksdk, just support requesting
project_id
in related APIs.
Dependencies
None
Testing
- Add related unit test for negative scenarios.
- Add related functional test (API samples).
Tempest testing should not be necessary for this change.
Documentation Impact
Update the API reference for the new microversion, and update all
uses of tenant
to project
in all docs and
code.
References
History
Release Name | Description |
---|---|
Wallaby | Introduced |
Xena | Re-proposed |
Yoga | Re-proposed |
Zed | Re-proposed |