cinder/cinder/api/v3
Alan Bishop 31b34e91e0 Remove the need for project_id from API endpoints
Inclusion of a project_id in API URLs is now optional, and no longer
required. Removing the project_id requirement facilitates supporting
Secure RBAC's notion of system scope, in which an API method is not
associated with a specific project.

The API v3 routing is enhanced to provide duplicate routes for API
methods that traditionally required a project_id in the URL:
- The existing route for which a project_id is in the URL
- A new route for when the URL does not include a project_id

To test both routes and ensure there are no regresssions, the "API
samples" functional tests include a project_id in the URLs, and the
rest of the functional tests do not include the project_id. This is
handled by changing the 'noauth' WSGI middleware to no longer add the
project_id, and adding a new 'noauth_include_project_id' middleware
filter that implements the legacy behavior.

A new microversion V3.67 is introduced, but it only serves to inform
clients whether the project_id is optional or required. When an API
node supports mv 3.67, the project_id is optional in all API requests,
even when the request specifies a earlier microversion. See the spec
Ia44f199243be8f862520d7923007e7182b32f67d for more details on this
behavior.

Note: Much of the groundwork for this is based on manila's patch
I5127e150e8a71e621890f30dba6720b3932cf583.

DocImpact
APIImpact

Implements: blueprint project-id-optional-in-urls
Change-Id: I3729cbe1902ab4dc335451d13ed921ec236fb8fd
2022-02-08 08:32:23 -08:00
..
views Merge "Implement user visible extra specs" 2021-09-02 23:59:59 +00:00
__init__.py cinder-api-microversions code 2016-02-24 06:50:54 -07:00
attachments.py Fix: Schema validation for attachment create API 2021-06-16 11:26:21 -04:00
backups.py Add user_id in backup list and show API 2018-12-12 00:52:05 -05:00
clusters.py V3 jsonschema validation: Clusters 2018-03-23 13:17:56 +05:30
consistencygroups.py Import HTTPStatus instead of http_client 2020-10-08 13:16:18 -04:00
default_types.py Modify/Move project validation methods to api_utils 2021-04-05 08:00:40 -04:00
group_snapshots.py Import HTTPStatus instead of http_client 2020-10-08 13:16:18 -04:00
group_specs.py Implement project personas group_types 2021-09-10 12:58:48 -04:00
group_types.py Implement project personas group_types 2021-09-10 12:58:48 -04:00
groups.py Import HTTPStatus instead of http_client 2020-10-08 13:16:18 -04:00
limits.py Use mv.LIMITS_ADMIN_FILTER in the code 2021-06-22 01:09:55 +00:00
messages.py Import HTTPStatus instead of http_client 2020-10-08 13:16:18 -04:00
resource_common_manage.py Use constants for microversion values 2017-09-22 08:15:56 -05:00
resource_filters.py Use constants for microversion values 2017-09-22 08:15:56 -05:00
router.py Remove the need for project_id from API endpoints 2022-02-08 08:32:23 -08:00
snapshot_manage.py Import HTTPStatus instead of http_client 2020-10-08 13:16:18 -04:00
snapshot_metadata.py Remove Block Storage API v2 2021-06-04 17:21:28 -04:00
snapshots.py Remove extraneous space from error message 2021-09-01 11:41:05 -04:00
types.py Implement user visible extra specs 2021-09-02 09:16:13 -07:00
volume_manage.py Import HTTPStatus instead of http_client 2020-10-08 13:16:18 -04:00
volume_metadata.py Replace md5 with oslo version 2020-11-13 16:01:14 -05:00
volume_transfer.py Import HTTPStatus instead of http_client 2020-10-08 13:16:18 -04:00
volumes.py Fix misspelled get_time_comparsion_operators method name 2021-11-15 12:39:09 -05:00
workers.py Import HTTPStatus instead of http_client 2020-10-08 13:16:18 -04:00